From 4e8971b12dee16bb701b4841de34a1b05e95258e Mon Sep 17 00:00:00 2001 From: Rendo Date: Mon, 8 Dec 2025 21:04:18 +0500 Subject: [PATCH 01/11] Buy menu --- levels/prototype_scene.tscn | 8 ++-- project.godot | 5 +++ scenes/gui/buy_menu/buy_button/buy_button.gd | 7 ++++ .../gui/buy_menu/buy_button/buy_button.gd.uid | 1 + .../gui/buy_menu/buy_button/buy_button.tscn | 17 +++++++++ scenes/gui/buy_menu/buy_menu.gd | 29 +++++++++++++++ scenes/gui/buy_menu/buy_menu.gd.uid | 1 + scenes/gui/buy_menu/buy_menu.tscn | 37 +++++++++++++++++++ scenes/molikman.tscn | 15 ++++---- scripts/gui/team_choice_menu.gd | 8 ++-- scripts/player/player_pickup.gd | 10 +++++ weapons/molikman_molotov.tres | 11 ++++++ 12 files changed, 134 insertions(+), 15 deletions(-) create mode 100644 scenes/gui/buy_menu/buy_button/buy_button.gd create mode 100644 scenes/gui/buy_menu/buy_button/buy_button.gd.uid create mode 100644 scenes/gui/buy_menu/buy_button/buy_button.tscn create mode 100644 scenes/gui/buy_menu/buy_menu.gd create mode 100644 scenes/gui/buy_menu/buy_menu.gd.uid create mode 100644 scenes/gui/buy_menu/buy_menu.tscn create mode 100644 weapons/molikman_molotov.tres diff --git a/levels/prototype_scene.tscn b/levels/prototype_scene.tscn index 6884dd0..44cb972 100644 --- a/levels/prototype_scene.tscn +++ b/levels/prototype_scene.tscn @@ -19,7 +19,7 @@ [ext_resource type="Script" uid="uid://bala54fa32e35" path="res://scripts/gui/hud/player_round_display.gd" id="17_wsuwo"] [ext_resource type="Script" uid="uid://bos7nftlx8tv3" path="res://scripts/gui/hud/player_round_time.gd" id="18_0hcup"] [ext_resource type="Script" uid="uid://m8qq2eynls6n" path="res://scripts/gui/team_choice_menu.gd" id="19_0hcup"] -[ext_resource type="PackedScene" uid="uid://l4t1mflutm3t" path="res://scenes/projectiles/molikman/molikman_molotov_fire.tscn" id="20_gcyg7"] +[ext_resource type="PackedScene" uid="uid://j5lgbg8c0pq" path="res://scenes/gui/buy_menu/buy_menu.tscn" id="20_gcyg7"] [sub_resource type="BoxShape3D" id="BoxShape3D_ysk2e"] size = Vector3(15.324341, 0.96273804, 21.381592) @@ -292,7 +292,7 @@ script = ExtResource("11_02ic3") exlusion_list = [NodePath("MultiplayerSpawner"), NodePath("Bomb")] [node name="MultiplayerSpawner" type="MultiplayerSpawner" parent="DynamicObjectsContainer"] -_spawnable_scenes = PackedStringArray("uid://cxdgk74ln5xpn", "uid://dgfqppi21c2u0") +_spawnable_scenes = PackedStringArray("uid://cxdgk74ln5xpn", "uid://dgfqppi21c2u0", "uid://l4t1mflutm3t") spawn_path = NodePath("..") script = ExtResource("6_oujx2") @@ -414,8 +414,8 @@ text = "Defenders" layout_mode = 2 text = "Cancel" -[node name="MolikmanMolotovFire" parent="." instance=ExtResource("20_gcyg7")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -25.65116, 0.67484045, 14.924126) +[node name="BuyMenu" parent="CanvasLayer" instance=ExtResource("20_gcyg7")] +visible = false [connection signal="pressed" from="CanvasLayer/CenterContainer/Panel/VBoxContainer/HBoxContainer/SpectatorButton" to="CanvasLayer/CenterContainer" method="_on_spectator_button_pressed"] [connection signal="pressed" from="CanvasLayer/CenterContainer/Panel/VBoxContainer/HBoxContainer/AttackButton" to="CanvasLayer/CenterContainer" method="_on_attack_button_pressed"] diff --git a/project.godot b/project.godot index 5438400..4f12e8c 100644 --- a/project.godot +++ b/project.godot @@ -164,6 +164,11 @@ menu_team_choice={ "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":77,"key_label":0,"unicode":109,"location":0,"echo":false,"script":null) ] } +plr_buy={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":66,"key_label":0,"unicode":98,"location":0,"echo":false,"script":null) +] +} [layer_names] diff --git a/scenes/gui/buy_menu/buy_button/buy_button.gd b/scenes/gui/buy_menu/buy_button/buy_button.gd new file mode 100644 index 0000000..e1668a1 --- /dev/null +++ b/scenes/gui/buy_menu/buy_button/buy_button.gd @@ -0,0 +1,7 @@ +extends Button + +@export var weapon: WeaponResource + +func _ready() -> void: + icon = weapon.preview + text = str(weapon.cost) diff --git a/scenes/gui/buy_menu/buy_button/buy_button.gd.uid b/scenes/gui/buy_menu/buy_button/buy_button.gd.uid new file mode 100644 index 0000000..a7d85ac --- /dev/null +++ b/scenes/gui/buy_menu/buy_button/buy_button.gd.uid @@ -0,0 +1 @@ +uid://bq32y7eee1f63 diff --git a/scenes/gui/buy_menu/buy_button/buy_button.tscn b/scenes/gui/buy_menu/buy_button/buy_button.tscn new file mode 100644 index 0000000..debf4ce --- /dev/null +++ b/scenes/gui/buy_menu/buy_button/buy_button.tscn @@ -0,0 +1,17 @@ +[gd_scene load_steps=3 format=3 uid="uid://b1ej6kmbjpm78"] + +[ext_resource type="Texture2D" uid="uid://dnxw4x3cmu7io" path="res://icon.svg" id="1_apu4l"] +[ext_resource type="Script" uid="uid://bq32y7eee1f63" path="res://scenes/gui/buy_menu/buy_button/buy_button.gd" id="1_impj7"] + +[node name="BuyButton" type="Button"] +anchors_preset = -1 +anchor_right = 0.035 +anchor_bottom = 0.075 +offset_right = -4.799999 +offset_bottom = -14.000004 +text = "3600" +icon = ExtResource("1_apu4l") +icon_alignment = 1 +vertical_icon_alignment = 0 +expand_icon = true +script = ExtResource("1_impj7") diff --git a/scenes/gui/buy_menu/buy_menu.gd b/scenes/gui/buy_menu/buy_menu.gd new file mode 100644 index 0000000..60382e8 --- /dev/null +++ b/scenes/gui/buy_menu/buy_menu.gd @@ -0,0 +1,29 @@ +extends ColorRect + +func _ready() -> void: + Session.round_state_changed.connect(on_round_state_changed) + +func on_round_state_changed(state: int) -> void: + if state != Session.ROUND_STATES.BUY: + visible = false + if visible: + Input.mouse_mode = Input.MOUSE_MODE_VISIBLE + else: + if Session.session_started_flag: + Input.mouse_mode = Input.MOUSE_MODE_CAPTURED + else: + Input.mouse_mode = Input.MOUSE_MODE_VISIBLE + +func _input(event: InputEvent) -> void: + if event.is_action_pressed("plr_buy"): + if Session.round_state == Session.ROUND_STATES.BUY: + visible = not visible + else: + visible = false + if visible: + Input.mouse_mode = Input.MOUSE_MODE_VISIBLE + else: + if Session.session_started_flag: + Input.mouse_mode = Input.MOUSE_MODE_CAPTURED + else: + Input.mouse_mode = Input.MOUSE_MODE_VISIBLE diff --git a/scenes/gui/buy_menu/buy_menu.gd.uid b/scenes/gui/buy_menu/buy_menu.gd.uid new file mode 100644 index 0000000..90756d9 --- /dev/null +++ b/scenes/gui/buy_menu/buy_menu.gd.uid @@ -0,0 +1 @@ +uid://dba17sgimp4j0 diff --git a/scenes/gui/buy_menu/buy_menu.tscn b/scenes/gui/buy_menu/buy_menu.tscn new file mode 100644 index 0000000..00b0d30 --- /dev/null +++ b/scenes/gui/buy_menu/buy_menu.tscn @@ -0,0 +1,37 @@ +[gd_scene load_steps=4 format=3 uid="uid://j5lgbg8c0pq"] + +[ext_resource type="PackedScene" uid="uid://b1ej6kmbjpm78" path="res://scenes/gui/buy_menu/buy_button/buy_button.tscn" id="1_8guql"] +[ext_resource type="Script" uid="uid://dba17sgimp4j0" path="res://scenes/gui/buy_menu/buy_menu.gd" id="1_ko0fn"] +[ext_resource type="Resource" uid="uid://b081hg7uxx1wu" path="res://weapons/molikman_molotov.tres" id="2_0gws3"] + +[node name="BuyMenu" type="ColorRect"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0, 0, 0, 0.22745098) +script = ExtResource("1_ko0fn") + +[node name="CenterContainer" type="CenterContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 + +[node name="PanelContainer" type="PanelContainer" parent="CenterContainer"] +layout_mode = 2 + +[node name="WeaponsContainer" type="GridContainer" parent="CenterContainer/PanelContainer"] +layout_mode = 2 +columns = 5 + +[node name="AbilitiesContainer" type="VBoxContainer" parent="CenterContainer/PanelContainer"] +layout_mode = 2 + +[node name="BuyButton" parent="CenterContainer/PanelContainer/AbilitiesContainer" instance=ExtResource("1_8guql")] +layout_mode = 2 +weapon = ExtResource("2_0gws3") diff --git a/scenes/molikman.tscn b/scenes/molikman.tscn index 22b585c..1e96fae 100644 --- a/scenes/molikman.tscn +++ b/scenes/molikman.tscn @@ -8769,13 +8769,13 @@ script = ExtResource("10_a8ls1") max_speed = 6.0 acceleration = 100.0 deceleration = 50.0 -step_delay = 0.25 -step_speed_curve = SubResource("Curve_fbysy") player = NodePath("../..") player_movement = NodePath("../../PlayerMovement") player_input = NodePath("../../PlayerInput") weapon_system = NodePath("../../WeaponSystem") audio = NodePath("../../StepAudio") +step_delay = 0.25 +step_speed_curve = SubResource("Curve_fbysy") [node name="Walk" type="Node" parent="BodyStateMachine" node_paths=PackedStringArray("player", "player_movement", "player_input", "weapon_system")] script = ExtResource("11_qfm1y") @@ -8789,10 +8789,10 @@ weapon_system = NodePath("../../WeaponSystem") [node name="Fall" type="Node" parent="BodyStateMachine" node_paths=PackedStringArray("player", "player_movement", "player_input", "weapon_system", "land_sound")] script = ExtResource("12_fulsm") -acceleration = 25.0 player = NodePath("../..") player_movement = NodePath("../../PlayerMovement") player_input = NodePath("../../PlayerInput") +acceleration = 25.0 weapon_system = NodePath("../../WeaponSystem") land_sound = NodePath("../../LandAudio") @@ -8802,9 +8802,9 @@ animation_player = NodePath("../../AnimationPlayer") [node name="PlayerMovement" type="Node" parent="." node_paths=PackedStringArray("player", "player_input")] script = ExtResource("19_70eug") -jump_velocity = 12.0 player = NodePath("..") player_input = NodePath("../PlayerInput") +jump_velocity = 12.0 [node name="WeaponSystem" type="Node" parent="." node_paths=PackedStringArray("animation_player", "camera", "player", "player_input")] script = ExtResource("4_qlg0r") @@ -8829,9 +8829,9 @@ libraries = { [node name="TeamUpdater" type="Node" parent="." node_paths=PackedStringArray("player")] script = ExtResource("7_a8ls1") +player = NodePath("..") layer = true inverse = true -player = NodePath("..") [node name="PickupRange" type="Area3D" parent="." node_paths=PackedStringArray("weapon_spawner", "weapon_system")] collision_layer = 0 @@ -8847,8 +8847,8 @@ shape = SubResource("CapsuleShape3D_3xmak") [node name="TeamMaterialSwitcher" type="Node" parent="." node_paths=PackedStringArray("player")] script = ExtResource("25_1mtds") material = ExtResource("26_r2jxp") -blue_team_texture = ExtResource("27_j3w78") player = NodePath("..") +blue_team_texture = ExtResource("27_j3w78") [node name="Interaction" type="Node" parent="."] script = ExtResource("37_5amik") @@ -8859,11 +8859,12 @@ script = ExtResource("37_b2eak") [connection signal="died" from="." to="molikman_ingame/PlayerBasedVisibility" method="reverse_if_own"] [connection signal="died" from="." to="Camera3D" method="disable"] +[connection signal="died" from="." to="Camera3D/molikman_hands/PlayerBasedVisibility" method="reverse_if_own"] [connection signal="died" from="." to="Camera3D/DeadSpectator" method="set_active"] [connection signal="died" from="." to="BodyStateMachine/Death" method="on_death"] [connection signal="died" from="." to="PlayerMovement" method="disable"] [connection signal="died" from="." to="WeaponSystem" method="disable"] -[connection signal="died" from="." to="Camera3D/molikman_hands/PlayerBasedVisibility" method="reverse_if_own"] +[connection signal="died" from="." to="PickupRange" method="disable"] [connection signal="health_changed" from="." to="HUD/Healthbar" method="on_hp_changed"] [connection signal="ammo_updated" from="WeaponSystem" to="HUD/AmmoDisplay" method="on_ammo_updated"] [connection signal="interact_begin" from="PlayerInput" to="Interaction" method="on_player_start_interacting"] diff --git a/scripts/gui/team_choice_menu.gd b/scripts/gui/team_choice_menu.gd index ed314a2..2b6439c 100644 --- a/scripts/gui/team_choice_menu.gd +++ b/scripts/gui/team_choice_menu.gd @@ -1,7 +1,5 @@ extends Control -var cached_mouse_state: Input.MouseMode - func _on_spectator_button_pressed() -> void: if Lobby.get_team() != Session.TEAMS.SPECTATE: Lobby.switch_team(Session.TEAMS.SPECTATE) @@ -31,7 +29,9 @@ func _input(event: InputEvent) -> void: func update_mouse() -> void: if visible: - cached_mouse_state = Input.mouse_mode Input.mouse_mode = Input.MOUSE_MODE_VISIBLE else: - Input.mouse_mode = cached_mouse_state + if Session.session_started_flag: + Input.mouse_mode = Input.MOUSE_MODE_CAPTURED + else: + Input.mouse_mode = Input.MOUSE_MODE_VISIBLE diff --git a/scripts/player/player_pickup.gd b/scripts/player/player_pickup.gd index 9e2259c..bd9df52 100644 --- a/scripts/player/player_pickup.gd +++ b/scripts/player/player_pickup.gd @@ -2,13 +2,19 @@ extends Area3D @export var weapon_spawner: MultiplayerSpawner @export var weapon_system: WeaponSystem +var disabled: bool func _ready() -> void: if is_multiplayer_authority() == false: return body_entered.connect(on_body_entered) +func disable() -> void: + disabled = true + func on_body_entered(body: Node3D): + if disabled: + return if body is DroppableWeapon: if weapon_system.can_add(body.slot) == false or (body.team != Session.TEAMS.UNASSIGNED and get_parent().team != body.team): return @@ -22,12 +28,16 @@ func on_body_entered(body: Node3D): Session.despawn(body.get_path()) func start_temp_ignore(): + if disabled: + return if is_multiplayer_authority() == false: return monitoring = false get_tree().create_timer(0.5).timeout.connect(stop_temp_ignore) func stop_temp_ignore(): + if disabled: + return if is_multiplayer_authority() == false: return monitoring = true diff --git a/weapons/molikman_molotov.tres b/weapons/molikman_molotov.tres new file mode 100644 index 0000000..4bf8bb8 --- /dev/null +++ b/weapons/molikman_molotov.tres @@ -0,0 +1,11 @@ +[gd_resource type="Resource" script_class="WeaponResource" load_steps=3 format=3 uid="uid://b081hg7uxx1wu"] + +[ext_resource type="Texture2D" uid="uid://bmnqvop2dy5pm" path="res://textures/prototype_yellow_256x256.png" id="1_hmyxe"] +[ext_resource type="Script" uid="uid://bvnn2eiwqbu7t" path="res://scripts/resources/weapon_resource.gd" id="1_ktfgd"] + +[resource] +script = ExtResource("1_ktfgd") +cost = 300 +preview = ExtResource("1_hmyxe") +slot = &"ability" +metadata/_custom_type_script = "uid://bvnn2eiwqbu7t" From e9f4c6e5f8b3e08140230f66f7582ff8b4601b3b Mon Sep 17 00:00:00 2001 From: Rendo Date: Mon, 8 Dec 2025 22:03:29 +0500 Subject: [PATCH 02/11] Money --- scenes/gui/buy_menu/buy_menu.tscn | 20 +++++++--- scenes/gui/buy_menu/player_money_label.gd | 7 ++++ scenes/gui/buy_menu/player_money_label.gd.uid | 1 + scripts/multiplayer/session.gd | 37 +++++++++++++++++++ 4 files changed, 59 insertions(+), 6 deletions(-) create mode 100644 scenes/gui/buy_menu/player_money_label.gd create mode 100644 scenes/gui/buy_menu/player_money_label.gd.uid diff --git a/scenes/gui/buy_menu/buy_menu.tscn b/scenes/gui/buy_menu/buy_menu.tscn index 00b0d30..b7a0c1a 100644 --- a/scenes/gui/buy_menu/buy_menu.tscn +++ b/scenes/gui/buy_menu/buy_menu.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=4 format=3 uid="uid://j5lgbg8c0pq"] +[gd_scene load_steps=5 format=3 uid="uid://j5lgbg8c0pq"] [ext_resource type="PackedScene" uid="uid://b1ej6kmbjpm78" path="res://scenes/gui/buy_menu/buy_button/buy_button.tscn" id="1_8guql"] [ext_resource type="Script" uid="uid://dba17sgimp4j0" path="res://scenes/gui/buy_menu/buy_menu.gd" id="1_ko0fn"] [ext_resource type="Resource" uid="uid://b081hg7uxx1wu" path="res://weapons/molikman_molotov.tres" id="2_0gws3"] +[ext_resource type="Script" uid="uid://dk4diwvruvkch" path="res://scenes/gui/buy_menu/player_money_label.gd" id="2_ll0n6"] [node name="BuyMenu" type="ColorRect"] anchors_preset = 15 @@ -25,13 +26,20 @@ mouse_filter = 2 [node name="PanelContainer" type="PanelContainer" parent="CenterContainer"] layout_mode = 2 -[node name="WeaponsContainer" type="GridContainer" parent="CenterContainer/PanelContainer"] -layout_mode = 2 -columns = 5 - [node name="AbilitiesContainer" type="VBoxContainer" parent="CenterContainer/PanelContainer"] layout_mode = 2 -[node name="BuyButton" parent="CenterContainer/PanelContainer/AbilitiesContainer" instance=ExtResource("1_8guql")] +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/AbilitiesContainer"] +layout_mode = 2 +script = ExtResource("2_ll0n6") + +[node name="WeaponsContainer" type="GridContainer" parent="CenterContainer/PanelContainer/AbilitiesContainer"] +layout_mode = 2 +columns = 5 + +[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/PanelContainer/AbilitiesContainer"] +layout_mode = 2 + +[node name="BuyButton" parent="CenterContainer/PanelContainer/AbilitiesContainer/HBoxContainer" instance=ExtResource("1_8guql")] layout_mode = 2 weapon = ExtResource("2_0gws3") diff --git a/scenes/gui/buy_menu/player_money_label.gd b/scenes/gui/buy_menu/player_money_label.gd new file mode 100644 index 0000000..5f41f09 --- /dev/null +++ b/scenes/gui/buy_menu/player_money_label.gd @@ -0,0 +1,7 @@ +extends Label + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(_delta: float) -> void: + var data = Session.get_player_data() + if data.has("money"): + text = str(data["money"]) diff --git a/scenes/gui/buy_menu/player_money_label.gd.uid b/scenes/gui/buy_menu/player_money_label.gd.uid new file mode 100644 index 0000000..112fc38 --- /dev/null +++ b/scenes/gui/buy_menu/player_money_label.gd.uid @@ -0,0 +1 @@ +uid://dk4diwvruvkch diff --git a/scripts/multiplayer/session.gd b/scripts/multiplayer/session.gd index 14fc71b..4673ae6 100644 --- a/scripts/multiplayer/session.gd +++ b/scripts/multiplayer/session.gd @@ -16,6 +16,9 @@ enum ROUND_STATES { AFTER_SESSION = 5, } +const WIN_MONEY: int = 3400 +const LOSE_MONEY: int = 2000 + const ATTACK_LAYER: int = 0b10000 const DEFENCE_LAYER: int = 0b100000 @@ -27,6 +30,7 @@ signal round_state_changed(state: int) signal player_stopped_interacting(id: int) var player_nodes: Dictionary[int,Player] = {} +var player_data: Dictionary[int,Dictionary] = {} var object_containers: Array[ObjectContainer] var dynamic_objects_spawner: MultiplayerSpawner @@ -72,6 +76,7 @@ func _ready() -> void: add_child(buy_timer) multiplayer.peer_connected.connect(sync_session_server) + multiplayer.peer_disconnected.connect(delete_player) func sync_session_server(id: int): if multiplayer.is_server() == false or session_started_flag == false: @@ -138,6 +143,14 @@ func start_session() -> void: round_timer.wait_time = Lobby.round_time buy_timer.wait_time = Lobby.buy_time + var all_players: PackedInt32Array = multiplayer.get_peers() + all_players.append(multiplayer.get_unique_id()) + for player in all_players: + player_data[player] = { + "money" : 800, + "nickname" : "Seliboba" + } + start_round() @rpc("authority","call_remote","reliable") @@ -205,8 +218,16 @@ func end_round(win_team: int) -> void: if win_team == TEAMS.DEFENCE: defender_score += 1 + for defender in Lobby.defence_team: + player_data[defender].money += WIN_MONEY + for attacker in Lobby.attack_team: + player_data[attacker].money += LOSE_MONEY elif win_team == TEAMS.ATTACK: attacker_score += 1 + for defender in Lobby.defence_team: + player_data[defender].money += LOSE_MONEY + for attacker in Lobby.attack_team: + player_data[attacker].money += WIN_MONEY round_state = ROUND_STATES.AFTER_ROUND @@ -353,3 +374,19 @@ func kill_site(site: StringName) -> void: func sync_score(attack: int, defence: int): attacker_score = attack defender_score = defence + +@rpc("authority","call_remote","reliable") +func delete_player(id: int): + if not is_server_request(): + return + if multiplayer.is_server(): + delete_player.rpc_id(id) + + player_data.erase(id) + +func get_player_data() -> Dictionary: + var id: int = multiplayer.get_unique_id() + if player_data.has(id): + return player_data[id] + else: + return {} From 3868af29e367b0544cc774ec39616b3793f6ef24 Mon Sep 17 00:00:00 2001 From: Rendo Date: Tue, 9 Dec 2025 10:46:13 +0500 Subject: [PATCH 03/11] Very bad implementation of shop and grenade --- scenes/gui/buy_menu/buy_button/buy_button.gd | 8 +++++ scenes/weapons/molik.tscn | 30 ++++++++++++++++ scenes/weapons/molikman_molik.tscn | 24 +++++++++++++ scripts/multiplayer/session.gd | 34 +++++++++++++++++-- .../molikman/molik/idle_state.gd | 11 ++++++ .../molikman/molik/idle_state.gd.uid | 1 + .../molikman/molik/intro_state.gd | 14 ++++++++ .../molikman/molik/intro_state.gd.uid | 1 + scripts/weapon_system/molikman/molik/molik.gd | 12 +++++++ .../weapon_system/molikman/molik/molik.gd.uid | 1 + scripts/weapon_system/molikman/molik/throw.gd | 28 +++++++++++++++ .../weapon_system/molikman/molik/throw.gd.uid | 1 + weapons/molikman_molotov.tres | 4 ++- 13 files changed, 166 insertions(+), 3 deletions(-) create mode 100644 scenes/weapons/molik.tscn create mode 100644 scenes/weapons/molikman_molik.tscn create mode 100644 scripts/weapon_system/molikman/molik/idle_state.gd create mode 100644 scripts/weapon_system/molikman/molik/idle_state.gd.uid create mode 100644 scripts/weapon_system/molikman/molik/intro_state.gd create mode 100644 scripts/weapon_system/molikman/molik/intro_state.gd.uid create mode 100644 scripts/weapon_system/molikman/molik/molik.gd create mode 100644 scripts/weapon_system/molikman/molik/molik.gd.uid create mode 100644 scripts/weapon_system/molikman/molik/throw.gd create mode 100644 scripts/weapon_system/molikman/molik/throw.gd.uid diff --git a/scenes/gui/buy_menu/buy_button/buy_button.gd b/scenes/gui/buy_menu/buy_button/buy_button.gd index e1668a1..02fef47 100644 --- a/scenes/gui/buy_menu/buy_button/buy_button.gd +++ b/scenes/gui/buy_menu/buy_button/buy_button.gd @@ -5,3 +5,11 @@ extends Button func _ready() -> void: icon = weapon.preview text = str(weapon.cost) + +func _pressed() -> void: + var player_data = Session.get_player_data() + if player_data["money"] >= weapon.cost: + var player: Player = Session.player_nodes[multiplayer.get_unique_id()] + + player_data["money"] -= weapon.cost + player.get_node("WeaponSystem").add(weapon.weapon_system_scene.instantiate(),"ability_first") diff --git a/scenes/weapons/molik.tscn b/scenes/weapons/molik.tscn new file mode 100644 index 0000000..bd941f3 --- /dev/null +++ b/scenes/weapons/molik.tscn @@ -0,0 +1,30 @@ +[gd_scene load_steps=5 format=3 uid="uid://b6qahd6q60js7"] + +[ext_resource type="Script" uid="uid://y1s64ppporww" path="res://scripts/weapon_system/molikman/molik/molik.gd" id="1_aqokr"] + +[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_aqokr"] +bounce = 0.53 + +[sub_resource type="SphereMesh" id="SphereMesh_fwcyt"] +radius = 0.05 +height = 0.1 + +[sub_resource type="SphereShape3D" id="SphereShape3D_aqokr"] +radius = 0.05 + +[node name="Molik" type="RigidBody3D"] +collision_layer = 8 +physics_material_override = SubResource("PhysicsMaterial_aqokr") +gravity_scale = 0.25 +continuous_cd = true +contact_monitor = true +max_contacts_reported = 2 +script = ExtResource("1_aqokr") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +mesh = SubResource("SphereMesh_fwcyt") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +shape = SubResource("SphereShape3D_aqokr") + +[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/scenes/weapons/molikman_molik.tscn b/scenes/weapons/molikman_molik.tscn new file mode 100644 index 0000000..a02e5b5 --- /dev/null +++ b/scenes/weapons/molikman_molik.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=5 format=3 uid="uid://c5q7e5dj86187"] + +[ext_resource type="Script" uid="uid://e6lqknfl4ngt" path="res://scripts/weapon_system/weapon_substate_machine.gd" id="1_e53aq"] +[ext_resource type="Script" uid="uid://js2rkse5mka0" path="res://scripts/weapon_system/molikman/molik/intro_state.gd" id="2_8q75j"] +[ext_resource type="Script" uid="uid://cnre3f01a2n88" path="res://scripts/weapon_system/molikman/molik/idle_state.gd" id="3_p1i4u"] +[ext_resource type="Script" uid="uid://b6eio68csxw7v" path="res://scripts/weapon_system/molikman/molik/throw.gd" id="4_1la3w"] + +[node name="MolikmanMolik" type="Node" node_paths=PackedStringArray("enter_state")] +script = ExtResource("1_e53aq") +animation_prefix = &"baked_sp_" +visibility_target = &"sp" +max_ammo = 3 +ammo_mags = 0 +enter_state = NodePath("Intro") +metadata/_custom_type_script = "uid://e6lqknfl4ngt" + +[node name="Intro" type="Node" parent="."] +script = ExtResource("2_8q75j") + +[node name="Idle" type="Node" parent="."] +script = ExtResource("3_p1i4u") + +[node name="Throw" type="Node" parent="."] +script = ExtResource("4_1la3w") diff --git a/scripts/multiplayer/session.gd b/scripts/multiplayer/session.gd index 4673ae6..c4b575f 100644 --- a/scripts/multiplayer/session.gd +++ b/scripts/multiplayer/session.gd @@ -91,11 +91,11 @@ func sync_session_server(id: int): data.encode_u8(4,defenders_alive) data.encode_u8(5,round_state) - sync_session_client.rpc_id(id,data) + sync_session_client.rpc_id(id,data,player_data) late_player_connected.emit(id) @rpc("authority","call_remote","reliable") -func sync_session_client(data: PackedByteArray): +func sync_session_client(data: PackedByteArray,players_data_sent: Dictionary[int,Dictionary]): if not is_server_request(): return @@ -106,7 +106,36 @@ func sync_session_client(data: PackedByteArray): defenders_alive = data.decode_u8(4) round_state = data.decode_u8(5) as ROUND_STATES session_started.emit() + player_data = players_data_sent + +func send_session_data(): + if multiplayer.is_server() == false or session_started_flag == false: + return + var data: PackedByteArray + data.resize(6) + data.encode_u8(0,current_round) + data.encode_u8(1,attacker_score) + data.encode_u8(2,defender_score) + data.encode_u8(3,attackers_alive) + data.encode_u8(4,defenders_alive) + data.encode_u8(5,round_state) + + recieve_session_data.rpc(data,player_data) + +@rpc("authority","call_remote","unreliable") +func recieve_session_data(data: PackedByteArray,players_data_sent: Dictionary[int,Dictionary]): + if not is_server_request(): + return + + current_round = data.decode_u8(0) + attacker_score = data.decode_u8(1) + defender_score = data.decode_u8(2) + attackers_alive = data.decode_u8(3) + defenders_alive = data.decode_u8(4) + round_state = data.decode_u8(5) as ROUND_STATES + session_started.emit() + player_data = players_data_sent func _process(_delta: float) -> void: if multiplayer.is_server() == false or not session_started: @@ -121,6 +150,7 @@ func _process(_delta: float) -> void: _: reference_round_time = 0 update_clock.rpc(reference_round_time) + send_session_data() @rpc("authority","call_remote","unreliable") func update_clock(time: float): diff --git a/scripts/weapon_system/molikman/molik/idle_state.gd b/scripts/weapon_system/molikman/molik/idle_state.gd new file mode 100644 index 0000000..19fae68 --- /dev/null +++ b/scripts/weapon_system/molikman/molik/idle_state.gd @@ -0,0 +1,11 @@ +extends WeaponState + +func enter() -> void: + machine.animation_player.play(machine.animation_prefix +"idle") + +func exit() -> void: + pass + +func use_begin() -> void: + if machine.ammo > 0: + transition.emit("Throw") diff --git a/scripts/weapon_system/molikman/molik/idle_state.gd.uid b/scripts/weapon_system/molikman/molik/idle_state.gd.uid new file mode 100644 index 0000000..f3964a3 --- /dev/null +++ b/scripts/weapon_system/molikman/molik/idle_state.gd.uid @@ -0,0 +1 @@ +uid://cnre3f01a2n88 diff --git a/scripts/weapon_system/molikman/molik/intro_state.gd b/scripts/weapon_system/molikman/molik/intro_state.gd new file mode 100644 index 0000000..7853ec8 --- /dev/null +++ b/scripts/weapon_system/molikman/molik/intro_state.gd @@ -0,0 +1,14 @@ +extends WeaponState + +@export var emptyable: bool + +func enter() -> void: + machine.animation_player.play(machine.animation_prefix + "intro") + machine.animation_player.animation_finished.connect(on_animation_finished) + +func exit() -> void: + machine.animation_player.animation_finished.disconnect(on_animation_finished) + +func on_animation_finished(animation): + if animation == machine.animation_prefix + "intro": + transition.emit("Idle") diff --git a/scripts/weapon_system/molikman/molik/intro_state.gd.uid b/scripts/weapon_system/molikman/molik/intro_state.gd.uid new file mode 100644 index 0000000..70a3870 --- /dev/null +++ b/scripts/weapon_system/molikman/molik/intro_state.gd.uid @@ -0,0 +1 @@ +uid://js2rkse5mka0 diff --git a/scripts/weapon_system/molikman/molik/molik.gd b/scripts/weapon_system/molikman/molik/molik.gd new file mode 100644 index 0000000..2ebac1c --- /dev/null +++ b/scripts/weapon_system/molikman/molik/molik.gd @@ -0,0 +1,12 @@ +extends RigidBody3D + + +var contacts: int = 0 + +func _on_body_entered(body: Node) -> void: + contacts += 1 + if contacts > 2: + var grenade = load("res://scenes/projectiles/molikman/molikman_molotov_fire.tscn").instantiate() + Session.dynamic_objects_spawner.get_parent().add_child(grenade) + grenade.global_position = global_position + queue_free() diff --git a/scripts/weapon_system/molikman/molik/molik.gd.uid b/scripts/weapon_system/molikman/molik/molik.gd.uid new file mode 100644 index 0000000..151334e --- /dev/null +++ b/scripts/weapon_system/molikman/molik/molik.gd.uid @@ -0,0 +1 @@ +uid://y1s64ppporww diff --git a/scripts/weapon_system/molikman/molik/throw.gd b/scripts/weapon_system/molikman/molik/throw.gd new file mode 100644 index 0000000..67319da --- /dev/null +++ b/scripts/weapon_system/molikman/molik/throw.gd @@ -0,0 +1,28 @@ +extends WeaponState + +const molik: PackedScene = preload("res://scenes/weapons/molik.tscn") + +func enter() -> void: + fire() + machine.animation_player.animation_finished.connect(on_animation_finished) + +func exit() -> void: + machine.animation_player.animation_finished.disconnect(on_animation_finished) + +func on_animation_finished(animation): + if animation == machine.animation_prefix + "throw": + transition.emit("Idle") + +func fire() -> void: + if machine.ammo == 0: + return + machine.ammo -= 1 + + machine.animation_player.stop() + machine.animation_player.play(machine.animation_prefix + "shoot") + + if is_multiplayer_authority(): + var molotov: RigidBody3D = molik.instantiate() + Session.dynamic_objects_spawner.get_parent().add_child(molotov) + molotov.global_transform = machine.player_camera.global_transform + molotov.apply_impulse(-molotov.global_basis.z * 10) diff --git a/scripts/weapon_system/molikman/molik/throw.gd.uid b/scripts/weapon_system/molikman/molik/throw.gd.uid new file mode 100644 index 0000000..0cd0221 --- /dev/null +++ b/scripts/weapon_system/molikman/molik/throw.gd.uid @@ -0,0 +1 @@ +uid://b6eio68csxw7v diff --git a/weapons/molikman_molotov.tres b/weapons/molikman_molotov.tres index 4bf8bb8..c943c7d 100644 --- a/weapons/molikman_molotov.tres +++ b/weapons/molikman_molotov.tres @@ -1,11 +1,13 @@ -[gd_resource type="Resource" script_class="WeaponResource" load_steps=3 format=3 uid="uid://b081hg7uxx1wu"] +[gd_resource type="Resource" script_class="WeaponResource" load_steps=4 format=3 uid="uid://b081hg7uxx1wu"] [ext_resource type="Texture2D" uid="uid://bmnqvop2dy5pm" path="res://textures/prototype_yellow_256x256.png" id="1_hmyxe"] [ext_resource type="Script" uid="uid://bvnn2eiwqbu7t" path="res://scripts/resources/weapon_resource.gd" id="1_ktfgd"] +[ext_resource type="PackedScene" uid="uid://c5q7e5dj86187" path="res://scenes/weapons/molikman_molik.tscn" id="3_6mu31"] [resource] script = ExtResource("1_ktfgd") cost = 300 preview = ExtResource("1_hmyxe") +weapon_system_scene = ExtResource("3_6mu31") slot = &"ability" metadata/_custom_type_script = "uid://bvnn2eiwqbu7t" From 0589ca4e2330c6f1de48d9bcb897c28ed1dc2596 Mon Sep 17 00:00:00 2001 From: Rendo Date: Tue, 9 Dec 2025 11:53:52 +0500 Subject: [PATCH 04/11] Global refactor --- animations/baked_bomb_plant.res | Bin 126695 -> 85075 bytes .../audio_system/multiplayer_audio_3d.gd | 0 .../audio_system/multiplayer_audio_3d.gd.uid | 0 .../buy_menu/buy_button/buy_button.gd | 0 .../buy_menu/buy_button/buy_button.gd.uid | 0 .../buy_menu/buy_button/buy_button.tscn | 2 +- {scenes/gui => gui}/buy_menu/buy_menu.gd | 0 {scenes/gui => gui}/buy_menu/buy_menu.gd.uid | 0 {scenes/gui => gui}/buy_menu/buy_menu.tscn | 6 +- .../buy_menu/player_money_label.gd | 0 .../buy_menu/player_money_label.gd.uid | 0 .../client_settings}/client_settings.gd | 0 .../client_settings}/client_settings.gd.uid | 0 .../client_settings}/client_settings.tscn | 2 +- .../client_settings}/client_settings_menu.gd | 0 .../client_settings_menu.gd.uid | 0 {scripts/player => gui}/crosshair.gd | 0 {scripts/player => gui}/crosshair.gd.uid | 0 .../gui => gui}/hud/player_ammo_display.gd | 0 .../hud/player_ammo_display.gd.uid | 0 {scripts/gui => gui}/hud/player_healthbar.gd | 0 .../gui => gui}/hud/player_healthbar.gd.uid | 0 .../gui => gui}/hud/player_round_display.gd | 0 .../hud/player_round_display.gd.uid | 0 {scripts/gui => gui}/hud/player_round_time.gd | 0 .../gui => gui}/hud/player_round_time.gd.uid | 0 .../main_menu}/host_menu.gd | 0 .../main_menu}/host_menu.gd.uid | 0 {scenes => gui/main_menu}/main_menu.tscn | 4 +- .../gui => gui/main_menu}/main_menu_gui.gd | 0 .../main_menu}/main_menu_gui.gd.uid | 0 .../team_choice}/team_choice_menu.gd | 0 .../team_choice}/team_choice_menu.gd.uid | 0 gui/team_choice/team_choice_menu.tscn | 47 +++++ levels/prototype_scene.tscn | 74 ++------ levels/split.tscn | 10 +- multiplayer/dynamic_objects_parent.gd | 6 + multiplayer/dynamic_objects_parent.gd.uid | 1 + .../level_container.gd | 0 .../level_container.gd.uid | 0 {scripts/multiplayer => multiplayer}/lobby.gd | 0 .../multiplayer => multiplayer}/lobby.gd.uid | 0 .../own_visibility_toggle.gd | 0 .../own_visibility_toggle.gd.uid | 0 .../plant_site/plant_deadzone.gd | 0 .../plant_site/plant_deadzone.gd.uid | 0 .../plant_site/plant_site.gd | 0 .../plant_site/plant_site.gd.uid | 0 .../multiplayer => multiplayer}/session.gd | 39 +--- .../session.gd.uid | 0 project.godot | 12 +- scenes/game.tscn | 6 +- scenes/molikman.tscn | 168 +++++++++--------- scenes/smoke.tscn | 49 ----- scenes/spectator.tscn | 2 +- scenes/weapons/molik.tscn | 2 +- scenes/weapons/molikman_molik.tscn | 8 +- scripts/abilities/Ability.gd | 6 - scripts/abilities/Ability.gd.uid | 1 - scripts/gui/lobby/lobby_buttons.gd | 7 - scripts/gui/lobby/lobby_buttons.gd.uid | 1 - scripts/multiplayer/loaded_notifier.gd | 7 - scripts/multiplayer/loaded_notifier.gd.uid | 1 - .../spawn_system/dyn_objects_spawner.gd | 44 ----- .../spawn_system/dyn_objects_spawner.gd.uid | 1 - scripts/player/input_system.gd | 11 -- scripts/player/input_system.gd.uid | 1 - scripts/registry.gd | 11 -- scripts/registry.gd.uid | 1 - shaders/team_color.gdshader | 14 -- shaders/team_color.gdshader.uid | 1 - .../debug/inventory_preview.gd | 0 .../debug/inventory_preview.gd.uid | 0 {scripts => systems}/debug/property_shower.gd | 0 .../debug/property_shower.gd.uid | 0 .../interaction_system/interactible.gd | 0 .../interaction_system/interactible.gd.uid | 0 {scripts => systems}/item_spawner.gd | 0 {scripts => systems}/item_spawner.gd.uid | 0 {scripts => systems}/object_container.gd | 0 {scripts => systems}/object_container.gd.uid | 0 .../player/collision_team_updater.gd | 0 .../player/collision_team_updater.gd.uid | 0 .../player/dead_player_spectator.gd | 0 .../player/dead_player_spectator.gd.uid | 0 {scripts => systems}/player/player.gd | 0 {scripts => systems}/player/player.gd.uid | 0 {scripts => systems}/player/player_camera.gd | 0 .../player/player_camera.gd.uid | 0 {scripts => systems}/player/player_global.gd | 0 .../player/player_global.gd.uid | 0 .../player}/player_input.gd | 0 .../player}/player_input.gd.uid | 0 .../player/player_interaction.gd | 0 .../player/player_interaction.gd.uid | 0 .../player/player_movement.gd | 0 .../player/player_movement.gd.uid | 0 {scripts => systems}/player/player_pickup.gd | 2 +- .../player/player_pickup.gd.uid | 0 {scripts => systems}/player/player_raycast.gd | 0 .../player/player_raycast.gd.uid | 0 {scripts => systems}/player/spectator.gd | 0 {scripts => systems}/player/spectator.gd.uid | 0 .../player/states/crouching.gd | 0 .../player/states/crouching.gd.uid | 0 {scripts => systems}/player/states/death.gd | 0 .../player/states/death.gd.uid | 0 {scripts => systems}/player/states/falling.gd | 0 .../player/states/falling.gd.uid | 0 .../player/states/standing.gd | 0 .../player/states/standing.gd.uid | 0 {scripts => systems}/player/states/walk.gd | 0 .../player/states/walk.gd.uid | 0 .../player/team_color_switcher.gd | 0 .../player/team_color_switcher.gd.uid | 0 systems/registry.gd | 8 + systems/registry.gd.uid | 1 + {scripts => systems}/state_machine/machine.gd | 0 .../state_machine/machine.gd.uid | 0 {scripts => systems}/state_machine/state.gd | 0 .../state_machine/state.gd.uid | 0 .../state_machine/substate_machine.gd | 0 .../state_machine/substate_machine.gd.uid | 0 .../weapon_system/dropped_weapon.gd | 0 .../weapon_system/dropped_weapon.gd.uid | 0 .../weapon_system/starting_weapon_spawner.gd | 0 .../starting_weapon_spawner.gd.uid | 0 .../weapon_system}/weapon_resource.gd | 0 .../weapon_system}/weapon_resource.gd.uid | 0 .../weapon_system/weapon_state.gd | 0 .../weapon_system/weapon_state.gd.uid | 0 .../weapon_system/weapon_substate_machine.gd | 2 +- .../weapon_substate_machine.gd.uid | 0 .../weapon_system/weapon_system.gd | 16 +- .../weapon_system/weapon_system.gd.uid | 0 .../team_spawner.gd => team_spawner.gd | 0 ...team_spawner.gd.uid => team_spawner.gd.uid | 0 weapons/bomb.tres | 6 +- .../bomb/active_bomb.gd | 2 + .../bomb/active_bomb.gd.uid | 0 {spawnables => weapons/bomb}/active_bomb.tscn | 4 +- {scenes/weapons => weapons/bomb}/bomb.tscn | 12 +- .../bomb/bomb_dropper.gd | 0 .../bomb/bomb_dropper.gd.uid | 0 .../bomb/bomb_idle_state.gd | 0 .../bomb/bomb_idle_state.gd.uid | 0 .../bomb/bomb_intro_state.gd | 0 .../bomb/bomb_intro_state.gd.uid | 0 .../bomb/bomb_main_state.gd | 8 +- .../bomb/bomb_main_state.gd.uid | 0 .../bomb}/droppable_bomb.tscn | 4 +- .../gun/idle_state.gd | 0 .../gun/idle_state.gd.uid | 0 .../gun/intro_state.gd | 0 .../gun/intro_state.gd.uid | 0 .../gun/reload_state.gd | 0 .../gun/reload_state.gd.uid | 0 .../gun/semi_auto_shoot_state.gd | 0 .../gun/semi_auto_shoot_state.gd.uid | 0 .../gun/sp}/droppable_sp.tscn | 4 +- .../gun/sp}/starting_pistol.tscn | 12 +- {scenes/weapons => weapons/knife}/knife.tscn | 10 +- .../knife/knife_attack.gd | 0 .../knife/knife_attack.gd.uid | 0 .../knife/knife_attack_heavy.gd | 0 .../knife/knife_attack_heavy.gd.uid | 0 .../knife/knife_idle.gd | 0 .../knife/knife_idle.gd.uid | 0 .../knife/knife_intro.gd | 0 .../knife/knife_intro.gd.uid | 0 .../molikman/molik/idle_state.gd | 0 .../molikman/molik/idle_state.gd.uid | 0 .../molikman/molik/intro_state.gd | 0 .../molikman/molik/intro_state.gd.uid | 0 .../molikman/molik/molik.gd | 4 +- .../molikman/molik/molik.gd.uid | 0 .../molikman/molik/throw.gd | 2 +- .../molikman/molik/throw.gd.uid | 0 weapons/molikman_molotov.tres | 2 +- weapons/sp.tres | 6 +- 180 files changed, 249 insertions(+), 401 deletions(-) rename {scripts => audio}/audio_system/multiplayer_audio_3d.gd (100%) rename {scripts => audio}/audio_system/multiplayer_audio_3d.gd.uid (100%) rename {scenes/gui => gui}/buy_menu/buy_button/buy_button.gd (100%) rename {scenes/gui => gui}/buy_menu/buy_button/buy_button.gd.uid (100%) rename {scenes/gui => gui}/buy_menu/buy_button/buy_button.tscn (89%) rename {scenes/gui => gui}/buy_menu/buy_menu.gd (100%) rename {scenes/gui => gui}/buy_menu/buy_menu.gd.uid (100%) rename {scenes/gui => gui}/buy_menu/buy_menu.tscn (89%) rename {scenes/gui => gui}/buy_menu/player_money_label.gd (100%) rename {scenes/gui => gui}/buy_menu/player_money_label.gd.uid (100%) rename {scripts => gui/client_settings}/client_settings.gd (100%) rename {scripts => gui/client_settings}/client_settings.gd.uid (100%) rename {scenes/gui => gui/client_settings}/client_settings.tscn (98%) rename {scripts/gui => gui/client_settings}/client_settings_menu.gd (100%) rename {scripts/gui => gui/client_settings}/client_settings_menu.gd.uid (100%) rename {scripts/player => gui}/crosshair.gd (100%) rename {scripts/player => gui}/crosshair.gd.uid (100%) rename {scripts/gui => gui}/hud/player_ammo_display.gd (100%) rename {scripts/gui => gui}/hud/player_ammo_display.gd.uid (100%) rename {scripts/gui => gui}/hud/player_healthbar.gd (100%) rename {scripts/gui => gui}/hud/player_healthbar.gd.uid (100%) rename {scripts/gui => gui}/hud/player_round_display.gd (100%) rename {scripts/gui => gui}/hud/player_round_display.gd.uid (100%) rename {scripts/gui => gui}/hud/player_round_time.gd (100%) rename {scripts/gui => gui}/hud/player_round_time.gd.uid (100%) rename {scripts/multiplayer => gui/main_menu}/host_menu.gd (100%) rename {scripts/multiplayer => gui/main_menu}/host_menu.gd.uid (100%) rename {scenes => gui/main_menu}/main_menu.tscn (98%) rename {scripts/gui => gui/main_menu}/main_menu_gui.gd (100%) rename {scripts/gui => gui/main_menu}/main_menu_gui.gd.uid (100%) rename {scripts/gui => gui/team_choice}/team_choice_menu.gd (100%) rename {scripts/gui => gui/team_choice}/team_choice_menu.gd.uid (100%) create mode 100644 gui/team_choice/team_choice_menu.tscn create mode 100644 multiplayer/dynamic_objects_parent.gd create mode 100644 multiplayer/dynamic_objects_parent.gd.uid rename {scripts/multiplayer => multiplayer}/level_container.gd (100%) rename {scripts/multiplayer => multiplayer}/level_container.gd.uid (100%) rename {scripts/multiplayer => multiplayer}/lobby.gd (100%) rename {scripts/multiplayer => multiplayer}/lobby.gd.uid (100%) rename {scripts/multiplayer => multiplayer}/own_visibility_toggle.gd (100%) rename {scripts/multiplayer => multiplayer}/own_visibility_toggle.gd.uid (100%) rename {scripts/multiplayer => multiplayer}/plant_site/plant_deadzone.gd (100%) rename {scripts/multiplayer => multiplayer}/plant_site/plant_deadzone.gd.uid (100%) rename {scripts/multiplayer => multiplayer}/plant_site/plant_site.gd (100%) rename {scripts/multiplayer => multiplayer}/plant_site/plant_site.gd.uid (100%) rename {scripts/multiplayer => multiplayer}/session.gd (92%) rename {scripts/multiplayer => multiplayer}/session.gd.uid (100%) delete mode 100644 scenes/smoke.tscn delete mode 100644 scripts/abilities/Ability.gd delete mode 100644 scripts/abilities/Ability.gd.uid delete mode 100644 scripts/gui/lobby/lobby_buttons.gd delete mode 100644 scripts/gui/lobby/lobby_buttons.gd.uid delete mode 100644 scripts/multiplayer/loaded_notifier.gd delete mode 100644 scripts/multiplayer/loaded_notifier.gd.uid delete mode 100644 scripts/multiplayer/spawn_system/dyn_objects_spawner.gd delete mode 100644 scripts/multiplayer/spawn_system/dyn_objects_spawner.gd.uid delete mode 100644 scripts/player/input_system.gd delete mode 100644 scripts/player/input_system.gd.uid delete mode 100644 scripts/registry.gd delete mode 100644 scripts/registry.gd.uid delete mode 100644 shaders/team_color.gdshader delete mode 100644 shaders/team_color.gdshader.uid rename {scripts => systems}/debug/inventory_preview.gd (100%) rename {scripts => systems}/debug/inventory_preview.gd.uid (100%) rename {scripts => systems}/debug/property_shower.gd (100%) rename {scripts => systems}/debug/property_shower.gd.uid (100%) rename {scripts => systems}/interaction_system/interactible.gd (100%) rename {scripts => systems}/interaction_system/interactible.gd.uid (100%) rename {scripts => systems}/item_spawner.gd (100%) rename {scripts => systems}/item_spawner.gd.uid (100%) rename {scripts => systems}/object_container.gd (100%) rename {scripts => systems}/object_container.gd.uid (100%) rename {scripts => systems}/player/collision_team_updater.gd (100%) rename {scripts => systems}/player/collision_team_updater.gd.uid (100%) rename {scripts => systems}/player/dead_player_spectator.gd (100%) rename {scripts => systems}/player/dead_player_spectator.gd.uid (100%) rename {scripts => systems}/player/player.gd (100%) rename {scripts => systems}/player/player.gd.uid (100%) rename {scripts => systems}/player/player_camera.gd (100%) rename {scripts => systems}/player/player_camera.gd.uid (100%) rename {scripts => systems}/player/player_global.gd (100%) rename {scripts => systems}/player/player_global.gd.uid (100%) rename {scripts/multiplayer => systems/player}/player_input.gd (100%) rename {scripts/multiplayer => systems/player}/player_input.gd.uid (100%) rename {scripts => systems}/player/player_interaction.gd (100%) rename {scripts => systems}/player/player_interaction.gd.uid (100%) rename {scripts => systems}/player/player_movement.gd (100%) rename {scripts => systems}/player/player_movement.gd.uid (100%) rename {scripts => systems}/player/player_pickup.gd (96%) rename {scripts => systems}/player/player_pickup.gd.uid (100%) rename {scripts => systems}/player/player_raycast.gd (100%) rename {scripts => systems}/player/player_raycast.gd.uid (100%) rename {scripts => systems}/player/spectator.gd (100%) rename {scripts => systems}/player/spectator.gd.uid (100%) rename {scripts => systems}/player/states/crouching.gd (100%) rename {scripts => systems}/player/states/crouching.gd.uid (100%) rename {scripts => systems}/player/states/death.gd (100%) rename {scripts => systems}/player/states/death.gd.uid (100%) rename {scripts => systems}/player/states/falling.gd (100%) rename {scripts => systems}/player/states/falling.gd.uid (100%) rename {scripts => systems}/player/states/standing.gd (100%) rename {scripts => systems}/player/states/standing.gd.uid (100%) rename {scripts => systems}/player/states/walk.gd (100%) rename {scripts => systems}/player/states/walk.gd.uid (100%) rename {scripts => systems}/player/team_color_switcher.gd (100%) rename {scripts => systems}/player/team_color_switcher.gd.uid (100%) create mode 100644 systems/registry.gd create mode 100644 systems/registry.gd.uid rename {scripts => systems}/state_machine/machine.gd (100%) rename {scripts => systems}/state_machine/machine.gd.uid (100%) rename {scripts => systems}/state_machine/state.gd (100%) rename {scripts => systems}/state_machine/state.gd.uid (100%) rename {scripts => systems}/state_machine/substate_machine.gd (100%) rename {scripts => systems}/state_machine/substate_machine.gd.uid (100%) rename {scripts => systems}/weapon_system/dropped_weapon.gd (100%) rename {scripts => systems}/weapon_system/dropped_weapon.gd.uid (100%) rename {scripts => systems}/weapon_system/starting_weapon_spawner.gd (100%) rename {scripts => systems}/weapon_system/starting_weapon_spawner.gd.uid (100%) rename {scripts/resources => systems/weapon_system}/weapon_resource.gd (100%) rename {scripts/resources => systems/weapon_system}/weapon_resource.gd.uid (100%) rename {scripts => systems}/weapon_system/weapon_state.gd (100%) rename {scripts => systems}/weapon_system/weapon_state.gd.uid (100%) rename {scripts => systems}/weapon_system/weapon_substate_machine.gd (97%) rename {scripts => systems}/weapon_system/weapon_substate_machine.gd.uid (100%) rename {scripts => systems}/weapon_system/weapon_system.gd (91%) rename {scripts => systems}/weapon_system/weapon_system.gd.uid (100%) rename scripts/multiplayer/spawn_system/team_spawner.gd => team_spawner.gd (100%) rename scripts/multiplayer/spawn_system/team_spawner.gd.uid => team_spawner.gd.uid (100%) rename {scripts/weapon_system => weapons}/bomb/active_bomb.gd (98%) rename {scripts/weapon_system => weapons}/bomb/active_bomb.gd.uid (100%) rename {spawnables => weapons/bomb}/active_bomb.tscn (95%) rename {scenes/weapons => weapons/bomb}/bomb.tscn (75%) rename {scripts/weapon_system => weapons}/bomb/bomb_dropper.gd (100%) rename {scripts/weapon_system => weapons}/bomb/bomb_dropper.gd.uid (100%) rename {scripts/weapon_system => weapons}/bomb/bomb_idle_state.gd (100%) rename {scripts/weapon_system => weapons}/bomb/bomb_idle_state.gd.uid (100%) rename {scripts/weapon_system => weapons}/bomb/bomb_intro_state.gd (100%) rename {scripts/weapon_system => weapons}/bomb/bomb_intro_state.gd.uid (100%) rename {scripts/weapon_system => weapons}/bomb/bomb_main_state.gd (75%) rename {scripts/weapon_system => weapons}/bomb/bomb_main_state.gd.uid (100%) rename {scenes/weapons => weapons/bomb}/droppable_bomb.tscn (93%) rename {scripts/weapon_system => weapons}/gun/idle_state.gd (100%) rename {scripts/weapon_system => weapons}/gun/idle_state.gd.uid (100%) rename {scripts/weapon_system => weapons}/gun/intro_state.gd (100%) rename {scripts/weapon_system => weapons}/gun/intro_state.gd.uid (100%) rename {scripts/weapon_system => weapons}/gun/reload_state.gd (100%) rename {scripts/weapon_system => weapons}/gun/reload_state.gd.uid (100%) rename {scripts/weapon_system => weapons}/gun/semi_auto_shoot_state.gd (100%) rename {scripts/weapon_system => weapons}/gun/semi_auto_shoot_state.gd.uid (100%) rename {scenes/weapons => weapons/gun/sp}/droppable_sp.tscn (92%) rename {scenes/weapons => weapons/gun/sp}/starting_pistol.tscn (85%) rename {scenes/weapons => weapons/knife}/knife.tscn (76%) rename {scripts/weapon_system => weapons}/knife/knife_attack.gd (100%) rename {scripts/weapon_system => weapons}/knife/knife_attack.gd.uid (100%) rename {scripts/weapon_system => weapons}/knife/knife_attack_heavy.gd (100%) rename {scripts/weapon_system => weapons}/knife/knife_attack_heavy.gd.uid (100%) rename {scripts/weapon_system => weapons}/knife/knife_idle.gd (100%) rename {scripts/weapon_system => weapons}/knife/knife_idle.gd.uid (100%) rename {scripts/weapon_system => weapons}/knife/knife_intro.gd (100%) rename {scripts/weapon_system => weapons}/knife/knife_intro.gd.uid (100%) rename {scripts/weapon_system => weapons}/molikman/molik/idle_state.gd (100%) rename {scripts/weapon_system => weapons}/molikman/molik/idle_state.gd.uid (100%) rename {scripts/weapon_system => weapons}/molikman/molik/intro_state.gd (100%) rename {scripts/weapon_system => weapons}/molikman/molik/intro_state.gd.uid (100%) rename {scripts/weapon_system => weapons}/molikman/molik/molik.gd (68%) rename {scripts/weapon_system => weapons}/molikman/molik/molik.gd.uid (100%) rename {scripts/weapon_system => weapons}/molikman/molik/throw.gd (92%) rename {scripts/weapon_system => weapons}/molikman/molik/throw.gd.uid (100%) diff --git a/animations/baked_bomb_plant.res b/animations/baked_bomb_plant.res index 694a4eb6edd4555a4217c6cf19686d910875a7bc..b744203f736f9cc793c6e65b8dbb002cdbd1bc9b 100644 GIT binary patch literal 85075 zcmZ6x18^nJ+kks=V%s)0wr$(CZQHhOJK1Do+s4KlJK1QHn_u1kSGVf+%u~~^dd``i znVxs1l~qJUfPn9U1OOafg8;U^1%40!02Ukouz&*q)V|q=1pt1*002kdoP4wTP4_n+ z&;Y>e_txv%=ReYM{HEla$8UnZDf*`KI~MQTAN89*-)&K~ zG5j+GAjV+;Fbd2#9c30Fc)9->sQp)lH_5uA+R5TjIP##9>inNVi{(lS+G;g7c6zK* zUS*j_$2Y6zp1!^U(t!p5weO`vc%Vm7l(|T8oIE8VA2L~z0{^oJohUgfOjXa)@B|dk zNf)LWH*=%kSBG2_FWHPJcJ+NhgPG9%K0hy)^D2(iC+YDDnn_zCuzQrT*9w3d6 zRw13%HOy9|5}kpGRw8z&;US;u?Ee3XO!{l3aUyLCQ8UOa*P6CX9os0DNvxZP$KUUI z8*?wSTny7d%0C(0+mXDbhoq6xua7pjWFqKK>O=l?NHwSOp45NQd5aGU=v-*ll3Jv?nXCCfJFn*UqZO^F70SgX=47O5z9NSioP*%3K1{%%q5&Xu@SD28C2_9UDDSBEYi zo0x+YuvXhO4MV%NKj4o?IX1L-04Jl0Ae;_+VzE67*gbRbDj0)T9ymp(DAbXwX-mo$ z8=^ss4ML@cNFj|%31Usc#SISxk(H$e8P5u%m@;R{Qrui$*H>3po12?ckdTnr0@r#nBtKdWTbIjF(~9R7EPTWJVSCz zRFE28H6umhq%o;Tfm!gL|14@n0s@65{HYzlk5fR$C!qQJjDHUv9%h6S@MNwmMq2~i z0iFPa2VaoB$?r47OQ3mZ+H^sxlH}-()}Cm}XW3F^Nf;z?QbqEAi?~cb`@+8vy}hkW zyDUEg0y*OkIpdA6!i})}fB*ISz2>I3=C;#r_kAF>(#^EezoqXL@@5bJSBS?g!u6AP zkAB10;hiTh0mFZhCjUi-{}=i9KS#aq-f6ef`7hG!|81(L+vD%`?oPK)hHyD*rz%Yy z)<-f|X-X%<;-J~ee6(~X9?eTN@r){c(kQrquKq$-evJ)*9#q!j7wOB%%55dAqB|y{ zd)J@v2V23U45nNI1H*1f$P)P_N!1Q|h353+AG(a&-1zMwG-MO;yy3;PQIvBSgCbQ+ z8lKBUe3Cz5FgoObanrlO&2HMUi|Hgb5JwE)fw*VTsdZ}ZMN3v>zAC0fM{G)BxRD_& zdEp{MYfHHkPDhlitjzCR%f(A-jJ@n93ieAR#5J2%>|DJae27OpTF&F*T61}9>J>}2 zuD%XFB;y{nty?x??44Sx6_`vb0o{QT?OZWI31HN7o>ECKm{tblMl*(MM18 zc9})27wO06I)@0OQ~;`bH;u-4cd3TUEGaV2dOB?AidYKX8yQ9`0vY>2*UWcXk(D_oW=w}+ zkh8jPa<&r*o7$Yj0r+%~x+bAciT4(sRf zDEuq%jfE#~_NvT6kRu#^MW-JrcZ?9=k~&d^3&ONA$IPuewlptGhQgt_xosqitzyy! z61ZHc6e%Y9UjZ)CPlE)8kV)ZyBJW`_g(8s>g(8)Jo4W(B%^tSn;&i6VyPKSXHy$wp z96bAuTh7wW9!`FmX?1&Di;pF>EEuR4jijI4wEc!KKpkf21U+Ql?ND9+y@|y74wBLC z0uzUJz6ZJ8y1MbgNyq7Du>lt+$sQmeOc-`M9G4`UjZ)gtckly!{())o2QaSKYxJCS z2oT#mlvx)60g81D(V|X(4Z)a>eKL)szbuUOgHT@$dxl8`5gwLt65hO)Hyh57mL)dJ z+ZC%{$(GUNY0(f#B+F=8{rV?SVCTJ&c1xIV|NN=N-F-5rNQuk8{CY0~`2XDsuZ#iQ zqto=FNL00QkkGd|uvx8VKrUXFB^hQ1d);|&OWwN_bHcLhG;;em-|R4&&- zD!f+br|F5wFHWq(l}IaF%{~bG;mj??6V=28NGXdK%vsEeGz-LyAEXD`#<}nji1QgX z?X7enT`{H5>so_CVz+O{dOSVYa4cUk>nK4gk)u-A%y@)h`P0eo&_6sMV$Gh=YSz78 zSKMy6-r7oIF!)-c)C{_2U+vY-i4UaXm*0$&R|YA8g`ISro6rq=&#?^4SSswBh?9*htqJ>%4r6(F;3{?LE9g<4w$ z5Tu!L5>om)q3DEVd@xmD=ic|?cge*%>8rC_S4?!!iB*fEf*aD3KfU?wnkLu(H1&*w zZ0IsI<7^(h8#f){XBO1D;CWYU)pqienr&AubSE4@V_&gAVJ=*hWgmO96=}~2#<*r@ zP8D>6$+E=u^P>&Ciys*B+n6Y}kw}SYX#)JU71xAcWP0J`Ud&je?1YPBL!hMP*wX|5 z8Nvx-<{|43KT>aeC&;fz1r9V2PE~d97QB+bPPb4l!sJfu`$<$L&6~UtB=6>mtsjb0 z7LeW(Am-dNZl;^RvI^62nK!mWT*upWn>ON|&Snz(f9@;IQ9N2dP^F!8_d)JXLzOV> zFBqeyukZneupL0UIbcynVHa#SLX}W#JGOH(F#5E9gXv?rHA7a_78$ph_ppv}93Hw1 z)-GWD0xbriV!au`@6FP~APjZ+2~Ns-&W*LI*qfP!C<)>S=?A@+#=u0j2!5M%(4y@I zkTuiCT07{7Cb}b|>EokOQ@OQq5iZAYAaNQ`8XTX`k$(zhchOax@~g_gx(0hlrA#}A zR+ZqrRk~0>T6hg5`@u`4D&u)^PbSjH8;zIU4O%(a{YOPYQ1{U`w_m}iyqm5wu+4>= zEp(iP!&z(=(-7WJfqi3jpz)bF#hF;Eki*dNMx6ITw@l-~()}l*c$tF|=$Lg25H z9|#nFKs?WCkdER?+}&3ro9xP+y$pd^st78&gJIylh0EgB^krgMt$(+&Dt<{B$r14+ z043|rVvt*`usgr46hOd@&u#>wpg-&;f3*@mq96m-4Nm}xK>3vlDW+SDFcBY_-Qy@i zO9Q{c*ofC#zp#*URhk*^AE&+1C5sd1h8!Ma;5u^_t2K-MX&1r2*L_;*RL`m4Eci%d z4Q6~?n;Nfro2yo;A5VJlrTFbC$FwYewhR!xn%n)%y0M?EV6wlhW>9fA*Nmi!s%1CO zitWjUsxYZ!J{7RRC{|au>3wVJ!NGEOpwQlvN?|BgU9v(*#`!#RUi4A@$*Ek`HIyLs z`{CTD@*1a4zeP4no(=M{+yJ-7AIz}y#w{y_B<&nN(BapZ*_K3|rwgCoDgdpTO*L!J z&wZ5t{NlvZ00Fl^A#Y#?_iqY|U)4_@|39RR(MweJw{hobzvUX@rV@)=MsrHeI5xq+TZBg_J9ZG*?_id;#T=djxJ z0?kLq6))wy2x1ur=`{>+d|ZYJg$3D71ZWMh0z1hc>=BGNsCTL4!%K>iB(=HqkY0TIj+>o0fM| zkS2iFY98u*3ipuP*JW`7r(8#{H4P^IyYnc>5cvxBb7U7`9ti`p*JDd*xnRcHn8@Mn zTg%`M?-XwY8jdJa4OFqc<8b+2hqlN+=C0+5wm-8iBeGcrx_Vb|vGhkzL~|-Dqp~SD zQGbAbq(Q-bK!AsB)T;B)CA}D-hW9D69J2cd0`!|Uslj3hflPNAJQt=?b`rJfS7iMm zgw6Z6WTCrb{{69vRo+yf=<%m$0?;k6xe#RWBuiBU%y5U1><7Hil5_+oPvW99Dwa|x1RI0E$1Kh^@5o6jUqZJ8>!ubkx!=)FI5r+IzBCr8WoS4IB%fh-h zksBRz%&v!Y&FO*tjR;+UFw$nJm-WeTm*bUJKPERM^(Ew%=dqN;_+p0;!ZdySRMRoU z->#l@;LV-Tach(tD}u_YFGhNY7L~OYbr6I)^$;{g$Fi)ado6f8@`I8I1X0m%5;18k zcL!c^=cK2b_t~_T=y%@ib0EI-gNzyj7}eimqD$kXSZ& zX7|~o%%(za&n3V0bHn(LI0(90SFBe|AapkpE$|LABMs7r4ukjsHb1FFA|vZM1F|iG z*uA;)tQq?ux0J!bozRu>t{y_9afvoom~bp?*`!qusCmTbis)*}l&hY(Lw@ey*+-VK z$G8HBV_jF%Ym8#o8~1gC4ygp#;X}!S!-b2wE*hQ2utP>kOYO9&f@|Fu(2Xnxg+>&m zp)DyvEgv6Vm+53{*Ij>U9aNwQxhf&y#-*-UV+c*#&b0hmpMcJ!Zx$)fldmvm0v%b^ zMIDpp?QBhQ1)VAWVP-LJPVavIc2-QOffH_YB@CIAhg}g_)R=8)p}X}rrpoAO&z@5y z#%Y;yL6C~^dz^mCh?$Brk5rTeA5fMUM}>XQ-ZElO7}nste+;1{hYB26*NfkdYGUj= z;?`F-S?M9(-#h3`qMX`S5~4W%+4O>s^v5>$()@?#Vem%#AO%A_MbvbC zu{kBh=g4AjGcEQYi%N0vDl&CDYz)L9scJOjSm3CTAYR{20;tU|S*fcA9<nBJu zs*DTgJ2@S&orLC4P>ovod*R`$*yr7|`>?-84V9X8n;}KThv0!dl|o1)WWgk{R3O># zHveTW+{i>%%vTnIzI&1u3GXVD zp*&PJzwx;$31Uv7LEi7~=_^2Vif zJW9#G%BZE!(^;v(!61C=cH&Wjh!9MO@kWI?@nK>v9nLfs3+?CHQOE_mCp19+muBc0 z1I|Z((F-FH)ha=L3Cz(OI8*`LDE@+dorph!dtalq84B zE)7-xAXyBqwUwfv8K})cz<_abUk2_1w}C7=5|!sJ`Y^~Iw53&`V|a&sc{P; zSgrk!1{v7}v{Iyl(Rf;A-32sE*uWNI`;wIXJrygUk{TYS`NLEw(Ip|7YYZvQo05I7 zqVYv&dSiyy#!%jk;y4S7I0vtf@W5f5RwB*|eLc|tW=m%KI^!Sq6^|lAhxVWkxfhL8 zjb95-w;mTD-{8$+H+}_Te_yUr%vCQwBEt;v zDV|n%S#9QR(Z@fHKZ_X}G}8v)z_4x2#Bs&DxxE)R;^B|o#LPcz*>!n(VxXTFY+^XJ zZfc+&wl9qXe3oh7M3AIglcWo-B2EY%p55wu0G}0(DJd==j%yuuSsQ?(S#~c#l=%cUtr$3~8VeUSkiZ=42L_c#%oNS5^~>%z zzC6sfZtMud$e$1?^DG>l4_@`=n}y~Drtnaf=q|}jVyzpu^%Cr)?U3F@r0f%)Q|!=c z=g-ZlfVOt~Da&IFm*klm0YfMS8XSf{o!E~|;4Q7FoRCO6f(j&9jUl}z@0wVtdXk>Y zRcrc$$30<-zz&RU3{N4e=LyVSH7w))BK1>Y{(xIl>cYau?@Q=7F(D0BIxx~tWJPaa z6R&zyOU$|!6<|cnF%r`Fc`x?eLG$`{qzY*S;zmk3M%sr@G`-P;3^_rgq7BkaCFIzq z4|F+vocJgG+`j2z}DP&Mvht5vMvnshfon=zg|Y2#L2*dq@r6q4kDB% zzX9yvBt7!s;?gvcHSoppW#aw;-Tw+f)1TiMwj|xgG#eSC4~~H3Sz!f^@~&M(ged@S z@8w@F7jmI2QScLc!)VpD=+M}e|8G1JD%7LaJ9dVNvnlL)fI@G~0Au%Px&(vDP#I!c zedR4pZ%*FDCkj}&4btHq?B2%)K&Sb@Rrhid_G!!p$F%g?VKREKp%tA#Kh$)L_G7 zOxB}eBi^#VmwDjjm8m&4F4seMHe5cG2MC}q4K>J8 zjv=sAuI3-X4;GfS?X6{*@~sZJ0mC+JfpPH&t_w-WuB!GEiAF=+6lnqIE>0D6w#?lm z>31Xr)`Qm%Dyn2`?vV=wFi9Uq3iNr-F$J@7dw1>BdtwG(0X?A+INn#KGFF%52ucnd zm7|}di%9w-f4M=}F=saJ$vYqm%D@wBabNJF0W-+uCfik~;|Ad6QD!Xy|7vDM^lAmD z_YP~2I&0NyZelmIPQ}Ya$o=`!v>_R(9;+0>TjtZyBdQJGu?E*)l8^t^bG9Ji;~*R> z=1(Rk<6sCtvdnV@e;mu3TYgT46W^D|rNAS^vGR!vcNHQyYrKw3MDG2Qc+c&%so=>ap#7en!fUbsLKJ zMGtXTv|#Qxw=fs!9j#L-yfuSeQ|JiSXFZlcOX&7>iq=n-2ghDVIIaBOsUCk!abJkj zW6ix3qg1S{U&$vR;e!S4CtK#Iz}pQfxw`)c|#D)p%yytD-;e&%J_Ya(9-kERFn<%J>Nod(ugb@ z4}7dhLa|oBcu*3=;DNyf%!Xw#=N%Qeg??qk6_n?_RBX|@1(ohAhQS8pKSy-@J_X=R zn4S6UTp8bfL}TfYbzrL8fXhS~TNmQ+F`Q%f+^TBZ1Re#K1|rB;VO@BV-Che5(vC^F zdTz|keZc1}#=LbO-CHLU(@3t(!yP`Oyp_qpjxkh+#{jl}2#YU_W}QK?OfY_U>_m4p z;1-^?)Q?!b#vqt!uva(nkG^)q9N^+nO_auugH#7M)*#zwCuXiuAF z@hc=VJbp>fxN@a8*VA5w;NR=x`HF*eq7+fiKdwF!+)FWEYx7zjFt$FMvJIV)_zM#9|;X@37XU1WH9OQ_9i5ZQrj{VeK^;#O4=VmyoT=HJ+v0`hV2&x zT!j{pZ+-1N(FI0u6a7l3A~j0fvXw_6oVy!>VcRgFfI|1E`~}*w2l?SZ**7ja=GG7x zRRTy)WfO#;HkFX(K5ous-f(3C)KSPf(Tc#n=y7Ep)D&LBwrVE2qQ|7)F?|&6MdsRS ziB@S91uZ8_Onbs3#S|~vb?O$^16IV7ofX~RFEE9n_E`{n9z$r-6eu^O$dxPpZrG|@ z*ptivnlCSEp{m$--<*t^W_^!@%1TDBF4{GfO5!Q_RhUvXf0kV}$=a$CltCNRsk@#0 z23@{OO&P1E-iu^h{8+xLVQE7|kIQQro0L3|MuzKErCG^L&smo1qex)8yd8!|TQ*6L zDy*-X_PsO$Ga#ifA%F?9W(u=W+yBkReDL0n%z5x?j&aD|hRT)<*4EE%iR&bE$*MZ&Y5n!E3LvAL_fKC|(lztA zBVnHv3KIqGNSyyX(O6GRF{_ffXz_>bfLG_DVP$NsJnWUHH0}P2rZcSG!@Y6GtxSO; z_P;O{dgH6XU6CZg=9_IIaJFbm(|pJeL&IIxqNXVB6swh9x;@KUi44pifs=v+<> zRz4l!So|Uum=msvmZp$;`iEhr6`yRDb=@VHe$1tn?w4q)l^&B~mL-vXOrVu6H}1a3 z)zgE2_GGEKdVAXbc(eER=Md=5 zFEB{hX_%}3WAQgh+x@2I;!V$GrUBxANkxx7K)Mf!?mMZ7qr_i{C4{{8P|GXMwm&Cz zL*}qn&KC0KAR;rYssOeL_oD)UJBK#^HD%i&fp(i%J*K zE{G{rH55ToML22M@sh(RRrC(^MGh1>^wWBN%){ka?8I@D3Jqh(ez+BW8Gh7L zPI0xLiwwE=Jw+__EX5vb$-}^Pw!hKz#tG6Xlu zGkKut$yX%x<}Y(=l_JOl6JO)1QSL7$Ce&T?t7~S(ca*EU02oN(B9AW))AUMAx7wE? zZ@Hms_JVvc;+VGe`W=;DN5Efjixp?Y$-ov`J}Ob8)n{asy8OC_N6Xo?XDS$qO`80zeWgE*E?TzR=Ov=&;S&1Wp{Ty1(?O&&{0JtN0oU|{0jucm9Y zWGflia6gbSW6cl*qD1I(zry7B=ouyw;S2;XVDoW7NtKDiNcVzsqxr2^HMgp#Zwu@c zzYysH=pwf|aTn+{pAdfcTAb1~#`PWnA#nkIiJKK>Q~Z83{yF)k=RY6y=6gf+(f9?B zGc8vt?209u9GW@e1hKKm?zfi2G_kcFb+CmJLuMXvRGu+m96*fPuk?seA3Zj=STWj+ z#3S+r>mK!mfuATPu5i5O1pD(oSaJG3<2O3q;oR_2*C2{0Oxwo%%?JlYs@JaB*?@@i z(G!;){k_*;rJBo>t(}*wj5!M2tc$+(ib#&!4Pdpx5Qd;C21ajQM0D5%7y3|Wi~@<< z3z~*0bFzXq3^jiFDRr@-MKx`e0hFemJ3(r^krvUJ!5m^9_-$5yrNDj(4!E2qr|q!H zaf4>G;chxwv}q^oM>Ap4t=qr{*nfe#n@N;?N;lKv`uRO!8pQnh=^k(SC~p^bj~q=m z1EMf@vCQ~u-}O`So`y#;P!W{~>xDDMfW194L$Q^3HP^VbZ}b9%YG3FO`QDEjV;rD~ zyl7w;t{*NPglDv0w`Z7AFk8E`BA6rcS_0+qk0%S;=CvxOo~2dkzK0EJ#rnzo?U`8x z8@p!!X?=v%tW&Nc;!M&E(*L6?W4AXHvW2hUCVBtIs;$p6R%R8)(1w!B4v$kV(iCxs zH4CXWLklWh6oTUUDm5Ah}EM)L6jY_jN>^Uy-tGT=O$Tl zV}@3;iW)i?XX`|pJL@q_{D;XAd)~`k{5Fq8vT4NkhayF9n497SmPiOZa*@*k@_k%# zvlnj2axafD2Ft0662NG`2F={7$0nm)rI^?~v9f6R=|(IYs6QvEzxB$6M9GI6Td8h9 z#z5BRV!Z60=9DWMH0R3gm&DuX6<^-eo1;h~U%ZHP@amg1oZH7VQGQd5ctA#3f>{4! zWf6GCNy9krp=Z#fj6Tg#leSohI>rU8YR+q)F326f3sm!MkV1>B^H*}lPiODgv>yP1 zJD|ByUJnRK_6B(!0Ck<+8nqEi>uBkLLiw~I+-|6G3JaExDu5DWN)Gy#?1YJou*idB zR{~^O30ZO}1NN5SyXqKggqCNIeyiM=W4-y!mJ0o!7pCd8tbNE2g z@BalD-YE^6#lDGbA+Nx5F_BPLd691O-^B|&nPra0euJdMHr8r$U`PtgFNc@^#K&X8eSHcCoJgM^ti zdXnx;br&uj&bWHzy^3{G5j(AK``{J3s*_Rmyd%qlSvB$A2dMQ4R|q|P_UI#N$nq$2 z(xEfSa$Cz2D_%euEQEayKKO3xlnXM#VwgXt!5%fGNSX0v5`GzL8`#U4*M}NPD{>4+ zC>g!AASveUw6islOfJ%~$GapRQewmsw2$$S?2prujxhyo$LI?xd){f<){qiDqs?Ef zPc?tMRLa+QjC{XYmr*Nre4MQV<5?0;KTN|93obf~BkBS(%dac9NGLowIJeM9p`v(x z4zB5b?MVe0v*OJjCVfQ1;t1YqbU{NryJeb^J8{nm68^xpUX+NI~Jgp9iQlnrZ!b8BCp zg^1>tDi2DcJHbR0^q(BGqU4+23NrnXyu!cRoLI2A`&I=SrE)+`dJpAAOTo@_Cv{0F z1d6Ayu#QxFFady`lJ{N;m*%~ntYsF4f@K(WX5^vEJFO&e>%h}_hehKpUNU!ACSFvg z8O*1gyY&9|jtP;xu>n$3QHbDg1w|aW;!Pik;haJmR?aQ#%;#PGqEib09)dAD#YZv2N!GT*foV$vsRl(9@q^<9MpIqRFIO3Z;G>I_Hb_l^J)HCJ%Q6H4V`WY~SKW!p5?Q{F1TR8eyrFXE1<+ zly!R|Mo9w}mYed2&i8!Y=?R5d5Z!mLPg<+-7QzL(KQ7_w_XBIDSb06c;R#;SNfFlN zRaz!?5xU14hDwxU_XzA$cYw^YghE;Pwn*@wPGvGJjh|1O6>X*sC-;@!Pt&WIyN$qctO|0M6)-%*euN4m1h)N zDjBH2#!4orAYnx$qtKx(&cYC~ECgi6Mv}S4J`g~2d}3OgoJE2oc@o6t*m7Xfsw#;~ zRpD{6qzz5dPt|#6Db>vZ9I>Npn|Y%x{&em85*w72?DC;T4aRZMoj@x+#Xn!=A8&4Q ze(!l}tFtzLj@uqKH@vQXwY%%{Ff``S5=-e3Lg*3dWB5O?yl2MKKO>97aSS*eCcDh3#p~4yKNJLp#;X&lU8`6;%zV}swpSX;Z z=RGSGo&F{DP)(PmPXU%LTIVklpIfK#)@mO;&IchOWyGZc;)TlS%Cra~8^tVWv(^I| zYR zFt!7pb%n)=(5SkxAZa~tb1@#XX$fomjm&#T!vmbbr{)X@2HY4h1xRwiwLKgP+a{N$ zxMT*>D0ZKJ`uPQ1xWyRX*9d1iq)H+# z6Z=lydgGx|8Jf$E?whxo;xR1CLAneAD;B?ycw|B{B#!@L-4IA*bah z@``rjsevM(H(mxG&bR@gf$xeNiGh*<93wbG)YGXC9O+cJR;VF^JOpuG<^`D{s0)V> z!+|_;JEvR%wpVyCk^d?5R$JS(2g0(kL=eopLwVr6SK#{nWQ@#2t59}K-0gP)*b;2b zPSmSq8@KyR!kj*x@R?zPab}B6U0;(%5?dL=la1G8Vy((QRUNG`bupjDw}T$w`}%ecdE&z3xK z;75>)v$1NU0WQx+`ecR24;g%Zv&q_u{fRdkrBr=h2dI+1Ie8Q5Pcp<-Lv)7oK-q<( zZF`VSE-8n-9+a5XS{a0*8MuA?D(qQ*Ph!`{q|U!P^A_-z7L=SbEXtkWf;&GfD?w+0 zP@!nB1;QPJ?Q62Q;xE#8MQAeLqHy~f9IpIJv@Qf2iOBP=sFkHKdqOpynYpn@Z+K?W zRS)K65AtQt9M;D+y9=B?K|PUdwg5@V*`M~c+Me!}>|jDCn4Y9*u({A^<=#to8wdei zV9Y;9*M$n)_t1dr6)sF)(De<>yP_vIoe^iQ$^~DRl7~{hWd#x|bG}CiBx=L#3KHU4LKG&z4iLlTJ^uSoeOq)BwwTOi( zGzEg2lpS$C@^NMzjR-F8O7a9dRclXADCMdets{-5l-wJyikvehK~T z)2``xRt4mY;=(=nRuB-qHG9=kn%#Yv8Q~`pIrE$*6OHW5p)=T*D zXlLbiF1JDTq#LRWosPxmP?rCegNiP^8#Vp}ch0A-^C&I`)?+(7(hx!sko8Bb-MWdd zMZ5KAzmUD}2j9;NQn|)OuGS>QH&^KY?id#mUkelMfq@LxwE+I{vBNI18N};(gN(iO1r#pQ-!JeKF zRtHH>L<>}em_z;3i@%;yZ!4)OS!rUMoa>9D7*dZzOW34N`R}fnN;}(G0+J&gm<5xE zVZmwANcg<)aGdKNtvP1t7}S-<)pXH4t2ogXh`A=sCK<^> zegt56mKR8&s&2SMswDPrK$!!5vl8(M1W~FLz=3;nR#;k{i34TA`T*Rc|8x(uY+}@n zZK?XtNDNibhXskwcBiRnUWp(?Y3T*e7XXQaV9&K~G3B@r>)s(%BHd@k zqAM#Bzgx1wPm;N$bV0+uE0U1uu~U3DNuXsyf&wXy@UUO^T{Q`jYT$1?ap8f)49$8O z<2^dG=NuGWEOFIsqXzW2Qms5cvWhHRRy#=dLHKm2{55hz>u{pKejCwo%>jRSv|@soSU-BrEWu$z_J^FB}$Q7P$Gxx)Pc2lDofQ z5J)DH94?x*5X@*~4E#>sf^ZYz``_bGL!Q$Sy+%hstqQgP4flObPBw2<+uuyZe&aC~ z`Iqjj10NPoZiVIHI8Dx5+c1&(R!t5_>NDguM~X3*#E61KKpx>Od=%=u%h(hr4^Ixz z#d9sS>?ia*gZ^cpC#?O>+Ay9IF-I(|=8DS}516f`c>UbRN3$yz5YU1LIP=6J~QI{%nj9nsie zWZ!IGq*gXR*(V#PPvqOcY?gS=vK0>F|DxP?Qo5sC|3v9!UDlyelT0zb>B|emCIT$v zyf&i8+M|SBI#4fJ*^ZuFh8tq76KTRh*i6Ip)*L^O^4F2d){?B0V!ETR-tn7r1OkdF zWtinhnWqP=WJf17!m^Od0KDF|D?1 zyIAFX{VOFqlvji)xG^^H-~T$g#t@}UE-uqP_&q`0Ifx{3}qt)7C1$4s7uW1Hs~W2-ssEViuD!2l`&)BtJ$w=EJE z>ZcgbwCNRilQDmEVwG!m6SVlS;#_S?A%02}5o*AU?X;Q4$`7xtwWV|W*GWX`q(KkV zU!dc|gt=dtrHyG%AGJFoo2(g})c^Z@A)~O?ZK4zEe(pVEg!8b=MAM~VFYFYgMQXkf z>z5lfM-3aRgQje8ugEE>{K9La0^7fOmLE%%UP7w z@0mqoea_%;4nrzOAJ}9?U%wsMXfy*9kJGkF!HwOzP*hwU0TJh;5ROiUJt}J-W-D>U zs(+X9@Cqd2=S|$U8v%Ab-#RVMF}B> z&9m~wN#a3;g}iCFDR`XZCL`)i6qb}j-hT%6OW5JAE15z|2Z!jv*9<*LGI|l9HkOH2 zUg%)u^NfRco0Bn#Q2u@)h|Aor812)uSj;51O+V9y8TO9{Cr0?YsOeEB?)-Vi?M{cx z8qh6P(5vXxZ4YYdpRecF231|oMd0slXFfgsKz0cEQ;|Jwz$i#hLwkm2#d@w8`aP76 zSvE}7u=9di)ErV(m2Yc!qQcO5Y*{)XS&s+FbTvxc$DMZSZ&y~Py?0cLO>Hz+_rOJl zmmtQ2YxGr@Ood1Af@mm@;|TiRkvlxl9v)X`jGrhJN=Si8{_T3*O#ua`s?}twABohF zGEywDsj)8`p;1*TQqX~)DK*U{pj(j^3GZ^f6faU3HFkt=^!M)}Xrt;X2o%^eY53%1 zV_&=qx?&Z+jC%x@kqd)9cav$rkg2$E5uXm(8!nS!mbm_v`wj>C<-Pzk68KVgH+i@H z$AWR>Tj1766++c)eM=&ElDRwzgf+;4iv;m7lt<@&xjS2~i9PMno9 z$i^DIm{}PuNpe2zg({%+S)%W!v>jrp--F zZglw>1!i?c_Mv$jY`Deopp4fKG;=Bt8t#`}a&h`~>fP!{rx94w`=T$Q)@$~m+_4mV z{3saMR0yVYS6wq{@@2~1>DM1Z+8Gg~)%ET(C(Sk$rT-umeG&e2?OuAr$I6R|t+d5* z5r7s|iPW#!uUW~vUZIQhnJJ7GnI~`5&taWy(t7YKK?>{hK%HG>9{)z*bMq2B=hxNU z9xVs^WWTVBjH|=l6TB8Qr;;tG{^%=f_KGYZ39I#tek84menFJIx0$i6!cp{2POH?E zfrm4&348t9;uxTUg~1(31Gp@vy&7BOlgGeuEk}~f0dTT^rokH@gO=ABP%f-&sVkFx z>7+H0*YsaMnh((j#*GB9Cm&4O5LMBt-?tkW7xGh41bO6Zhcf+;@m5w^7LDL$V#cmQ(d=QX3?Jcq zD)8@_Kc)g#a|Rz&z!2;C&PYRIt&aG^6E|M8;Q_6)$4O#U&ZQ<1)OXf&{`nxUDcJ6w zjZz-bgM3||dr8_fvZShi5!)58wJT4j4#!Vl2%(Q7a1jlZqh8rp4~|kf%%68l&X@D@9Iab`k`Q_hc@}SM`=QXxA~$tg|Ke*1K|-coTcC?2w$Prz7~eIdCS7$^YvNI=A1lyZic|q-e0CDGsHe2mPN-WL>yR5v!s%Y8%vo& ze+psj7>&6tO5iDu1P0`~zyU7rutOH~#<}(^N-VAN$LsY&Z?unP)&XYbd+trr-2}p> z2rwbRKg5-Rm%To&|8-6r z=KD7e)+{T%!?zYG2qq-el}c%=5ok(~z&se-{xT(P9b|-l^MnVFTGNqE$vD8PUeV1C{Qr=34#A=XOSj&(ZQHhO+qP}nwr$(C_t~~> z^Ze&V+&g(My1M4wQG->P-&$F)Sk#bUKGs}H#wR!p9-D?Co`*TzAQ*{5F_+jk_b~Z1 z@AMPWBT)yzzDb9=;nu7qI`*tYC^aqaK)Y~j45}D*Tfc9U*V_q*a z4cnb5ci)^wH6g!8q~iVc`7sD!F!;ATf7kp$h4?w&&oh5Cd6vi9G10Rm;JbYBx!FNb z)Z0jDE+F=sC-}i$u{8AL&ZhNU?^pH}rUa&a^oqS8;YA-qY2sEg5qzA4H-|0ZFZ6`4 zBKEweVF3LRA}AYmIKP9@1#2XazXr*!>+L`>1dS)XZi2pXdE|=wGQuymuEr)s#R2ne z&u;O7A5M^rb()8cI3lhe0^|z+@*k2%ALR@6tLr>Le9wYNM7+5rf3|T}rYpENXKBB& zM5sMjP+TA`1P+WILip0g_hwWQ_za~XPU7l?glMupwt$n0KnhZlAd!%f$lw(m0boQ) zEnGwcM#U*qZB00=&4e(PKMS$b9Xl7{O~bbiNd~h!JcOkyT(APPgxto_DKGyJuMYd< zv-Um}d+@&y7aG0Z-6FsuftjvnA@$2a*zLAxN;bIEsW zbED!)TVIZM?Ix^@?QMIDs5AfAYS~>^bC5hTDc|l=^ZQX>*`18eUQjrCCet-kp3qDU zW)~Z?FWR-AuM4(p5pub~>arL>oiuI<4!UJyZF;M=zhzCK1V>uVp~0oxksDjMCCF?m zeeGJVl|F*#TZiXiWtio9S%EDVddAmc&aHHQo#y?0I_v*<^6T1D_#f4Mq6UyvghS4U zfH5Ztp3Sw%#|+0tTQah}MW^&T1mN$$L*tb+H87N%qNHDV7IX&n6Koi|BjKd|HV6O= zn+&Wad>uz7#-szJ3uFP5Ru7?ovJGxO$oBQ80oT;Wqq?KRV?Hg9SGd(#IV-YPM_nT4 zOzQCg@zJ!#?v`1LWRHPOvu+?t9Pc`L{KynTp@p@3fx9>qyAK%auWrdIR`6<8AgEi* zs(8z)07A>ESd>MrYs)HR%c@Ar`pOkdZ4GPr1!j+UeC=v3fiLD=hU~Q55!h% zlKyuXoMc7-IbVgqAUU!3mXQX4V{f_QdZkz{1V;yYc2gTWX7zi*8bAl-N+4iE!*2B- zyKFhK18J3xK^Y^jy0t53Ku6EKepyO~zLVn4RVTG6ZqMLZA{u}C`Cyfmv1fFalS4liQn6MVR5lf& zY3SWkuA{}PORfnQ1Pr515ETqFyH#iIvH7qcOhJxxxB<$b9Oa0?dw#rbH&b>ktbwqw%$F$NPfxP1l zDr?lJ)xu$?dvb#y<1-4#ogtKApin~cZji6jhFA2TC9ATGAdTj~cPJ1sJWhIR=$dBJN_~)cwnWeI=XD zpl!1n8|9HnoAW0oy^`-8901JdE#l&K?NE@^RFXldqQePqz1;L>aUE(YZVkC6g4J|Y zz@YljmaR<5Z>evSz$OEUW+MiNyt;Fn>bj25n7bVJ1@i2BG-~a`Im@&ad1DiK6b}SN zCkUiQU5Qw6Mtsylcr08{AU9%ng~3H~jOnAh5!>3Foqoh(As*7=VBC{Q070j@G#0gV zj^N?k;XSsjgH}}`E*vwU7`IoTlEh0ZrAswpI|T|H-DhaVQ#-;tn4;7pDh7Ahpxxty ze}WJS*F!MS-0xfl1_yuGW+Lr=7Lfm@3fcMFgC+1OmSXF2oC z9$3K$O*^_X1co<;#XAG;#IOg@Iju2VH#Ri*VN->&16&fd0US*2P-6LAm8AeH%ES_v zC_1J8eXp#n+{>EUw^S+^f%9>3V3!Wx8-olOR@hx9XO8aHRr8O&e9Z46YmB4Bxb=#B z*y1#G>N&JqbYXyWA5ZyNTwJtQ7M{o_w0DF(C3By(@%(pk_R5B6KNoVeT5=Bm-K_BK zTebYNy5JgTN(FnusIZ+R(lf!HdE29Ucon8{7;E_PbHlZu{gh?t*Bfev1dj z`JhpMS|J(PkkQ$8p$lwt2BSc>E)gH+ry{O3Xv6*ZcHJ1B0X=(B7+aXnOAa>Vy?b16;mfo*oW8-p z*nV2bgX)eBV%bPdnnbK|OGqG-2J@R4I@+b;MP{WrJP;ICb3jSFt5F!N)T#!911gR? zP;UNRU=+2Yup9_j)g9G@+Of(qD44WGaVTo9Y>_8+1xsU-g0&|6!)RJReCz~CHqDj4`P97rnHY|a8sZ!tzkm6YVFK-!pb!Bp`|NTYHQDmQ!- zYnri3N&aRUkUX^*ZmaBu%vk6lcfeZ}(+nsl@`_na%doMIc>Xz@&~nIOtE5m%lYUe%`?!;Pf7fvZ*Q+1Or+AER-GK6pgFq$zl~}OA5Wh z#QuV$eKw=cPyjngAtqiNQea?xLDjLCBQG;JnMVq5N|MaoKR>5bnaivOnwZL$PnwV_ z!>eHAHa0~d&KL8X^3RQpr+UKW9JFMcj(f!G68N~3{VMl%bjGDZaBtU}IUN@B>b)f+ zyIoVX0Qhn~qLqtf&YpPoE+*H~8&bD5!`cp|fD7jdfHgA!fw4{8Tg8z0FlB@F0huA! zy-c(vTm*9`RsmycQf5VGH$g{mExpqb3<4eJ@tjuL;v{l)DH3GHXpq9rCXa{hIIcE- zM*;(uWL0raZcOzET;dHF3jERQ5Y$%MQG{Uc{-xH&ux_nH$Qp%WBVggolE>D2Xi07dXpkZHM7L0!ZzZy_e5Sa@UbOl&|ak$$(z?y@?9z2_M(% zqZ*vK6kbv1Yn|&Z;erw4qJf&52eO`Lm{>kHz!^m2Y_uf5!VzuCw-qlv#g+5Pil+6D z0ObEJy%c_tR^j2|@?sX9yNNumU@p?U45HshXZCKS%a-{1F}jcwy6jRfTScdhxr(yp z`kk*G=`)z>yZgRU1e187GB>#k2H*Lnz<3v)z4=MJP$Ts2&VIU(nkM50)zZZu28G}U zeJ{ove0dqK&t*Hf6ukxJU}LAu7n!A0Rb8(Kap(np8HjpZhMs z4D1$9S>|6)ISQ16C0zEeSvovsE^u-0=B!SVLMxJs1x}0X5U;$P4&4zv=Qx5H~;%6 zt8SyL9K3*)3PYNIhC*VQOmk~agMUTZEMUZYfg+Ofwk8}R2nrAgq@i(-RETo2(cpfc z+WOb(+82fXE&@}A8J#lb%i9J{AAul%d<2_Q2oLSuq^y4rs|DL}K;T52EE5djh>eU9 zM4*ka|KPAo_0QwM!ILYW7!9zH0HMH$eh4rSVc1N}Oiazjg_$cyfKAUI^|kE2Y-cUG z-&2ei@4wSD!Tjsl@e7>#?g1UFsm$-eye=sntEb4NsU{hhj#;a6@!6X-i^k(nU&4;8 zE5+5z8)#G8hZERK3m4}u&zpdqeJIq95Nw|@8es#GWwJVM1&a@^MgzR+Smf@1*A_Xj z;)@+w@WhWSc;dzuJHmRzYyOuOWvT{%RrF0JfPhga3ogtdl~N4QfzZB*7}E z;qqx^&gGWV28I)gk=O<}8DVPjY%YY)H;950Za5UwXU5Qc>GccQT4f(_I(c>eluBof_bdP1fLm=p>{BH3TI66xK+}n^8k|c zZ9Ibn_24F)=5x%pB@NiuwdKZzcg&fQ0RyQwJI5vT~kGUM?Ej5?3;lsy_ z=W+s6U2BR>9nz4MStHo6s=?>okv#K{8N|UaD#xNw_aIKn>Lp#IzDU&&I;@-AjmpJ)&(m129QxE~>lXs5?KuwQL3qWfalfS23Y( z;p{C^da@R((41&v5o0_8kj$#V(0K40=N3MUan|vaT1vxi(~jcHmVvEoG{hSJ5jksS zT6&^xE?~>TuVqA}8RMi}mQ{l{1?3lm!oik}sm}wOsjfyFR^{d4AY4f9}AY?a|aNprx0AXL_&$Crz6 zyw{^BS$i~aAvg!E3kIJ57SUN+5o)*{&Ex`ag9E!})t@`SPJW1S@NbOrRR*IdEwwir z_C20)Y-fg=js_m7PJ4-)a&~;3A2(_4FHn^D zRDyL(X__GGk_1_I3-U0k#mrKnp5xhvMnG1<5j{iqN7X1&cSYx|gcuDSF#8j#c5-KV zU>k8pD#yHd%d(}UNeQ23>Rg*hUzceZ(MfPIzzl9UETfwDBT+Le8s;mP{ZJ8$(JdOR z%ps+PjFegF2qWUY?I&XBgwt!@YW|m?ab4;uo{~w|P?fXZj&RxpJOmAS1wv3NQ~IK) zLAC%o(0eje5yHZEbrMM1)a{u-LVAlpXU3C8{#5PC6&#%v5wwwky{ACVZMo`wPt!>O zO}OvVp9KxON|K?j0UE{PX3zT$KRa&aWG)ZYi-&;1#_7@nQTe>C_lK$NBsXxbiQY$y zzi2jFztimcoLj)8E2 zpl-NSLU!0|v9Wu#jKrYKzlz?2yvV}S(#Zn*;eP0HI% z+_9XM0CE`9ib3>HBZq0eXbH)3DgliU3LXC(ss}}rmd&6%@Z6NlJJIY=oi4UG$1oYH z9kz}NPXbDzSLv^rP=K#lMwY*T121Zo3AL%2M1Ss(Css!ihwCnb=l=!U^)h+;0;@tndmeCB4{xwewXA^x4Jm;!J*DFI zTAOqwz$EPg>$AN`!LbWhFM|b0H6p*-G+)7oKXg`r^Y+%EU$@0fQ17nV7J0kWs#Wr6 z%ge_Pw-Q?6!J|D1NZ8@HvvKaQM6VK#hk=Joprz0qxXW0#>?5P%DIJ|EVvIhaL@aI~ z;@<9)+~B1^-SddEa5c#505wWZPQ3Yo1{}NjNldPM5icvBlDNJ*(s^6OUbJ#7B@+|4 zWHe`ONr;=g)_{`fPbmhdGKuj_ftNW;CB^N%TG;SE%CM zYP~{PTmMoH?_E(dd?N9L8H1I*ld-4w4@#u;fwnE zbZnKXYe)}|a=`MUZLFJ5HolM%(&djd{Wwp4pO+YvH!TIxi*fouQVrWLu$G$hA~|CF zY3}x!ydhHnd7Ty;XJ_yZ%*_Plf=iX(5hDTyOjQ_?5Rm{0#RNb=R&LJ#{)a+X0z^y@ zDWahkOQivi^?r-{P0$@Nm2BgS?R@`ahv|z`z^ZF~Y?`#@ir$#v%{9@aQ`!@%_Pv(+{6Q zs@~{yKAX$scE1%2vk5^!hd2%*3>Ts!#IRn$dZ~0dXQdecD(mQ8>m0uMQ8EK8ev&L3 z;|ctR<^_Wjg5!w+MNudS0>bA&P;c0u$AySiaRL51{m_Le;^k{o94uJ;T)!AXu{J~z z`+pZf5{hs}H5cj_j+q_33g~~$bFr!bR>cbcVQc4R0RbGaL>?^&E{7FO!n_GsZ;O)|sR|QrW&u`Av$x)uki4poGQwQ<1fGrQa zZgAOP7OI!#`jXMiDh#OEa;jGB0wc5VgyMG9uM0yrbBBxnRiFOqV7@engZoPzrgDuO z7eB8Y=W%EM*o>#lPplbL4T2>1q)Wd>xM4CKo40U%5VHs+0(AOBrnQZyV*XH~6nWIn z@L(=3K47zLKXZ1s_CpvhZn?K;n6y4#8UXCbQC(5@DIEM*!$nk8c>ob7@_J`{Km84{#SRF&&10XaYc=@}0rT+>;l&Y5VO|Nusji77Hle>@ zFynSC01XS*hT0~z{)vtSNbe~%k&q~8H-0MQOldVp`jW^*#TG$`&A)P$&MZzny3epR zq3GcZ?aZ@sRUWELFc!h;hLCrSzF!U~sI+u96r>!N_~TYUvfKwW4PDr}>sqYV#MZVY zfmG4V?Lxw}+pQ>4vDg{}{Y|Fx{Ts|Y33`6+k%?+EE~faU0M@-L)X08NMdb%6x>?^G zKaX)NzV@#m_yQ;*?iAoZIM@2a;(pSj#~s7XVRsQSa%Qa9X;?uSR90CzuZqnHN5sir zM`ijHpa>qI5a&WV^_FDUzL$w&4A63-cS~uC$qUCKf_GY%ZIxZ!&xy`DfYrSKP zBIYfd6&GJR+1?qNT~JWSnivocc#AB4?X1daLzHWmlHxpX zmUti%!^Q{2I{f1vzG`bR+xzy46&l(DWc=rE5tL((Nzbvj0q#pFQkoMQqNx99Nc^2P zU=jVSM7c*P?<@E!`dlGkjUt;*_`_+6bI3AEO&yPkT$2 zTwe@`Ou9H?8hAD2hL~)B0hV(6ZR~7tzrQwq@L$@N%50#J9Q0c1EkDuzvAPQ~U)az4 z#kp5NN@@vu?P74NXTyFTI}4BX_O#s_f?4uZO}nGvbnk$G?YiE^c4qQF4VNR$kA@xi z>F_tff3_f>-CVBYW$4~$lRjb3g=^WnVv)40$!c5E zXn3@&X|$}1AhfI}C2C*dRq+m2Cr-$;j_oU1YrvZduyiS zqn8eU3hR;F5QnvW_hFEErIV!Y0x-oS3s66XtF-Qjz_I-duAr_N)qDm%SezN9TnQ-% z`&0wY)r&|rIO}G*6msG8j3}SdhbUd^Cb;zm&SS3`6&^`5CU5j7U3<;10{VoMhVXAl zu8hy&II=kokKQrq$>LP< zrkpR*rRub-BDBqQ~O0V@$| zvG8V?L*Xvs&Lhqd-T;AL2o|G6Tp5l*d(+5a5=eTo`B$xm!qnRsGv{s+4cS{s5)2z3 zJAZdAGsxdCuJNgARJst(lPq_`X!${#y-ERTv@diTa2?Ae)C-9XfK4^<{a9w9H6af0 zI|h5QfJok5CbGZ0Wl1B$y)%dVM zT=t{V`J%HozU|Xa8Sw}3&FJRE9~hT%Yb=ua6H0zcVIug@95!M<+&@Cn*X7d?4qZhc zt*4fG93u$=ChmX*OuRpRlUx~xzex<<3-hdgYeH+dB}CnEINqbp6#e2{5MNOY*ae6p z*r%SK%*WekGU&WkAPU(B$&BaYx;N#CV#gd`=z0i#I1_8E0KkjusHOHifpnW#)Xa5jg(+k=h zhhI|j?VKRqRwS^YbB|m@ds|*s>~`X3*zhm^D-i_zA=3-eP8rtt_{ULN^;S zzmFW~HoCCdlfe3dc>W`ZiC|I9=U$FI@6zP;7R*L`#JR@n^-_eTJNOMIp4do$^`@C9 zVH${e%019T5Jz+@WRFzvn=9#C$gZ$KpyCrboe~8qb1HmJT+?U@dA5&XYHj}!n+DK0 zOfyvNW#L^(`75cwdRd^bZ&;-G1qHfUz7G;9%Q&_3o8!B3{E6yOlA(=r$UZQ#!G(hP zjsaDXg6$mkq-fdL8AI%+qMwEtuQR6_+=?ik^Fsw=yuW|VQ5e1m>-l`D%_vwWiR$PX zm3>n-`I?LnP&Lj0I7uEa;{ZFHr2~MjBYGXmyN`G4!he zJtNn45btlcaSw1F;md-(&UdO39Ir(%lwV@pPdgZ<2Y?E!cNPvEo|W?eTcBKCFA=@u z>Ef}kDjx8QMk`Bhpm!~RFxHW}A02P3(CEDw_!R_A$FX;Kc*n3@Rvck{Ef}lI6VP8F zNFW3v;t+y}=B)J(w`Gwm1V&U432Lc+)qn%gH;Lbeb}+u%afqElXh@P16L=U!^}!`1 zZR28)M)wNl&hi!nlmVF#_}>n!WE=iXpf4MJ7)|}&B_n0yYLG_v4Cd}Iw1|W- z0*?g9qyT^{Nb~{3A8-?fHf(Bhv}dgMm3R&S4usMW66gWT6J(GGH5;J0%rf+3iaS=# zZ_tPEQ(1yonI6ZLU^I!HpkM;NXJdx*G-qKbnEN=*8D=vN1JBRPzZF2y(2+-cfmr{XVZ^;x zuUk?$CWqS^75WnhK*T`gK#U+tSp4STf#6!U_=}LGUoM(K_3?>&sh9Vbt!}6qm|n38 zpu2RNNABJ=IXSsMuu{oi1(%s`4QhYc%ovknYV2t{J;2A>JsJPp%`5O2sa5;N3FXN^ zwlD`nA^Kt*MclnLEt8T?Y4(k^FLHgMI9H_d@I1&+rloq{W%jbq?s^CFnt@6yGkZgOD_d`QpI!G7U-#BN z-=Lp4s3T#B!riUuH4pWEp#c)Wu^R$7?|}N=)=pC~Mp7t!ws`rL_ifCSvQ0O++0XUuyFx(woqR6hiOU!aUTfTkYdx z4ip%q3`-ar>*4ux-P}G`9U}P;U_Fgd!t+Ma;#s;Gs!f>rjZm1t_!e6gW~ zGb@&_D-o0EuQ^Hv2IWcvMo~jH2KAbhe0DiLp2O8Ur{8iU!Q#8kDSv$`{)vdGac)HD zL|lce(IePjOHgIf(RHnhChL)~jUv4g{B%vNw`$$&WC?jka7VgI=Ka=6;%;$2`!yX1 z-exM8>ZbYeVxm0v-slW-$jKr~mPEtS>&yH8e3;9PmK^pjf^jecH2t%djN&CwS6!t=X#VR<#b)<%X+er3&-J?{!nZCJ&V`7^l&Di| zJTXQ88aR?_gS(jzHf_E91FN$kj%l|fivDo$i@ucC>2uLUkVT9$CSw%5nxJLe5HQmT z`~?h^%d=q&>2Z^pM+kIZa~TM--*qE>-DQNjw#Jzh4o}~VS%R$|4DX{kMb*eY;E53r z)!7I0{W4JYe%(P78kyvh_Q z5nce~ay*J5RsGqcwU>)l-H;GY_4|{-y+l**bm?uEK%a!o?6V^^wKlHRyNs)Rfv6V6Q+ zBs-mYj3;8)E;?djHz#mIZd2KEw(+`I~v$aHE- zjw{4Fnv|mxuzZVShCfJeKPn`r)<6gi`>P!?_=V&8Y;1cQ-!F+KOaCxS>yxpbNC2Oq zg0S2d;h1=4)!;jo3hB{!>FBx8ej)lbfPO3t!ueHA3eo+c{Y@Mm2*v{Zf)ciON)&1W zuvGtDmU{FDYbc|Ss zL*hitgOERgzHmoKqQpKvjuIOAMNq!@QBjEP1vp8UD})Cn^BO42R6>=}_VxGmB=y6~ zn~Y{gG3VlvOWFtby7((uBLfrk0;$dZ*BtC4OfO1P7~?Z^GY}r>%tNFx3n2>WGd^x? zEt>jARJ6NVG!N}={iqfgH9YS?Y4VIf={*6nVPA~xGZ7l!J{U41{W~jAH1(f}N2A}~ zeAb6LF9J$TmcfRHUwijctAz?qaaLc|4ZFzSm`=3{J2?u51Kuv5!?k4d5 zM{h~qC;VGWFhOpVPVB_66K6j6lhnJH*_Txy+}$JFjVfK(pnxDY_4ydoMBn8y{&p7+ zpZ4$mJ|PRmwF)V_ySs-AeAA$~k07^els=X@xvptwe0o9RzlOUw37YjLa3o_LC~2KC z`#};AsAV-9-uFlhK`xinnB(pJc{M`PHo$1BZ_ip5MjMeHX$fO}p+zTxXG zp8*f|?Dn5kj$j5NyPKv*BnA~MGMi}b!lo@$o+iRbXqFmHGykjO- zb3#`)6PYAl2{a~gxj>ZPW z?MI>^o^MFdn^bzH2uAf8R@-I)Yn^DX`p*bu_Km!i2`!sP;JK0p)_LJ15Z|J>IMnQ= zik(A?0!EShu@Vx(sK~VXBtiffDOlIHNDNpIX?|0fx}urMS%UcUJj|8-0(p_d^q((f zlAj~OOX^l0$Oxiqz<|wvK&lV~kw^gqB9e+)8smSER3vsp0~VspYUvZF+dPNi`F`ec z+#@gWWlz6mcio__6WO0wm8PcFoAz1$QC5o#QM{C_0wPYg|ez4Ie|on zCVke>0f^US6oLv_OyyM5dXO8=&`r8M0R=*kniB<=K8(g9@uS2~X^(CkuPGW=yjq*; z(sSI!N%$uGtT;psM_{0Z?Y$6~=T=&kE3RB^d$nrSsjs|DTZ2ezx&QoE`}wK^aMh|% zNE6IVNrA&|+FkJPuc%uxiV%j&nm!ybi8j4rT`XgWt>4hXRbwxWG|=z09K(xhdD73VyyBv?q`!o!5LSQku;1!@doB1#Qs5?HxK zh6@fF7!U{`7N!CasCsP@+@hfL=E{hq!g8MQ`8mxCbDZ;Ynn6wGJQL*SJTsi(ra12= z4W+R8rbZS<=BE6Pb5fn=Msl2?v`w7G()Lw|#SoLviL-I|tx&JbAk#aF4Sa1L+tOu> zx@Ae(8jq^tm4F;Ob+6Z8sMV$%u87kZa4t})%Oz-E6WUhB5n7(JW;yav$Iu^Ro)u+r zA;pYsL<9|dM1a=Bxma2@ZEZ}9h{@!%pBv%xaapkBZ4n}Rj{tP|386WLO~!E8EUvNO zgr1cF)lHn@#4AvZnhk7UkYOm-sM&6Tpc<`M&!3YMuvgERZ-JP>r~^{AMb+v5SEGDI#;A6MMSuKv4Ff~gm6`ST$>xdHqCcBQBMT-)mH`%$W zUGFlsLXAqJ-xibXK1-8{iaz+VG9=D7A!I=vNlJyzrPIdmpU5VBfB-|WX zznw?@VyC*66ZNttg6+EZBmx%ax5jgPwwa^uwK%#Hxbu7Z!xUl6X#-oLk?X1(r(DmX8CtgUs~ z=g`lMq^nYBTZw}H8)R`sl#$qmRdBIShSk+^R9lcGDgEVn};(GKAY)eXhc)T}&jf6|0`exgA(xBwq)t7`ka^=LV z9zxIp&kYl~d$7N`3^UX?a6S0sVdJ`raucOvCvNl*#a^^dHF6xsKz)?3zhY>71@t9X zsNNi6*8D-?hk--L3Y9C?wK^UkLQ8Yz%9So&OjfeDLjXf~K$O8k#qi824>ar)xFx}n z@eccyk}W&|4V1JY1F`Ow?e$7WlZld^S`Z1b-UVv(w#mMU>>I-N!GQXjy5XXSdiB`M z#Sh+DeJ;AuY;R~E0OT-fan%4HYr#p3H?JEOTHyl&xm%e-e}c7q)7Sx9z@^f@>#Ih9 zv3Of_TU-KL!jTb>$4q`F)(w~`oevHWh4v-L{6}m=>I)lrzhn2s=FG1Q1;H~9UhdOK z|NY=@U&9L=(gdFE!4Y8f>vD&NMY@p;T!oux;H8Tb0DcQIzXxt3yrYlroYy+|0;^wm zoHZLZd-j$^`~tG~{N)7t(nqpCm~M}A`#&vpuo$s#w}=;&RG#g`r^D1Z9y|*0u_ObR z29!1-0y&$O(#!pBx@rp5xFqeiM~SOn?=A;HV%g{5)v+e7cgqeWq01X$G&3#8X?GtJ z0vuC*3*)#7Z%9kI5@gsH(w`LJhkCu7+CImh7BJrUX{$+FwnQoou|{%sTvFT@M6l#qaO$K)(4?2*yztd+R>zvSA|8!Qlw6# zJ&;a9O#?qGKu{6Ij@An94}CxapOJ8JYaI4P2`)MCsMWFSCGG{gdm)_p2{eI!NLUBQ zr0@N7Wnxtpa`{vfF61^5|44CfBsCaX!3}ShZ$dV_= z6AyE{19JU_mcj|o?iBA`k>`G06swIcqj>ia=cOy2R%DzVm6k5P0KRO6R4hta3{msu z{XgV#V1dzGl$sz{Z1A>$0-^_a3gQPm#Y-Oz*v_w_K0hrcrYu0nMa?-VEZgs{ns8-+{d7@)5Rh6wxr7$xKm!qFQMkB5xOTE1j0S-1+$+~e zs%wQ6_=#6<1iE#daNn2IU_|mxX|#Kd(syYgY-tzWx*6eAtXx0B!E0(^T<%%*Atoft zr+KU=T3E%OHsRRY1d6Bm*kf!(pT5{^M5muRX2zMmj`t@_46p(bN0}?vgF{Ne2r{nh64E=)k{Ye3O(`hJRsY@P;_Kk zFmPCYQ31qSENeiffY0xfIdb(A$BP=jox`m%js}@MnK)2z z*^%Mq98F>+e>7`UAJIPUV-O}#q@p7ou5X~agA)(9kYx5CvNGr57GCbdm{Kud^@Ft* zjSqBut;H+5jAh~tkH6Aqau99b=K45VGgtq8q`rt2S63m{qt3qtTU@)9{!{t$??m-6}R2cqeavuaFV-m!5GiJa) z&DRKs=+Huh$r3u$fGK-7_xjQ{*Zz`c8^kX_Fmy53Ze8rP2xY%!c*W;ESa%K2h_g(b zKD(AxQBL=1Sn4!*QQjL8g*l35)H6YnyEGgpqkMixI49;JIj zC=L~V7Ko&p``t(=vss+_w=zq{%E4 z!C4LDU#hg7H(x$Im|I{# z@(C5<&Nu+;(W`&YV0sXzB$QM7rqdHH#&+j+pIp%*WryJ*E0WK|lZDm6$4BRf^h)XW ztHGut*Q=un!eU&fFbIGi<>O?wO}m{fj3=uJxqUvo$B2C8jO z5){j)J%QH)%jsVd5Su))B+|#P!1R4CL)Zt~E!yCIL-}IEarBFs#R)7B!*3XFq;0-E z0x~A7F24Wo*bylG<|!vSo`0X9j46wYugPz$cwIYi%+b0a4mUat=xC!dWt?&4J7rw1 z3?jPW{A*kJh{ zr83NFvOT)E_7o{;_-Y7Yf=VJ%e%T2~`=qjXvFL;E!gfBT-8*lIE+=j}3Kn2wDLqSd zj^@HsbNB_0j9!*`k(Z7_tsDKp*j>@tqY!D)KFK+^A)~*Wq=Cj0%_E?VczcqPb7oyk zC)jl*I1Y8*<>$wJL~aiVZ2RBz^Y^)F`!=Og)BSFy95AFYaO;HE*)%t7NF3j5|H6&M zSr&6cI{lK@Ce#*izpvnB)te%}CDZckxeRvIvG{bRKzZ?flKqs?SMa9H{!+0Y>*ERN zL~ZdR=Qq=;)c&@@&Uc0+ZX?*uF?)V&2`F9Yi${E*6N&W+tc@`%e%xNgk@gd1jHZ(` zewGoj^6%d1Z%laNBNtR>Mn1?UduM3f71ic>gFzO+u6`!5>YhP&Q{WL$HV3 zwHz}vZ5fem0_UCROn8(N@|eGO$jd$%$`!R_T`lG8xsVG3Yg{Yi=FdpZ=Nm>8dXm?n zKl$*vHd=`V-LowlX7nNB;<8S~eoR!^`XR2|q5NyZX21Oz=+y-LGqVkpe4e|WVOgn` z|9NIWci3#4_vLhwUm(UX_MrTCcSaauVb+QC^jA{4qGE+lHNioSfQ+?10`6BCxo!C3 zxiZSrtbo9xISO0o7c!pMbtbvTlZ~}}oyqqc9aVwK_mTwfBVLsoU14Zecq2!Oh_s)} zg;XD@GGhnM<57WBD9WHwKbC9KeaQZlO_mS-WlA`2zTOFTGR=3@tPLg%-ZlUZ!Qs7{ z=yk&78D`cx%>_R8$f$eviwZAWW}`P}r2_=t%Q8~E)=#xjzKkV_Av_`rziYApE|up@ zK817E;i@pe%A$1>{NE^JTol?Nwa2nu+kWv z$sdMj(Co0cFGfcp`a?nN6Oy|d_L~%**c6oLz* z-}^qn=rc&loF_obkIczCc3D_P#BumTX*h7E@+tD_nfd_{3_!B;jyM7?JaMb{xz=9R zySJ@?x$V)SK_!V&kk@(Z0ymyTzE7FAu55pnV;ie^n32AA4WwoMD^EWR4Qb(5VzbH~9eO?SQLMU}WbC)91@ zt)BGk;TM{5+E^1ZQGBSyrs1ZI^yaI5Y?Mp2?D;FgM60V1s=vhH3 zU(RZ}H7+ATa#h7*)KR}{-0^-R#po+e3F*v*Lga&nHgPFGoXr(o2-L+dnPNVa;xXt@lGcN_lYq2e3d-zj{ZWLAKFpe(>qWI}{%hlyR^hFRkZgt1$x$oQv?P zwU8kElK^|ESqEQ2`_orI-`_y(@eYKjUz%oSG=$GS2O^MP)#bofrd*k>V#DUCa2p-~ z8cAQ8LuQ)l&w;OQ0e*w<43CE%byNoQtCL~A0fnwRt#mci4e!Bt=slGm1Q&vu(oHDV zeApECsifGP2&##G){ygIP85GC5R5B84Ae@5YcB>sk)QgSbR{@%`pAx&7t@RLQVhR#j>ZrX`kU)pZQ%4WUWPVHx$V-hy@CI1Mv=BAOk0l`WQb&*;p@;$PjJ)$> z4je{_l>F$KET5nSi*H6z-@3Ghu#kmcsI1|A{8GGikL^M4_oG3at^o(tFUjoQs)BAu z>oPb87gxVC73QtmJsS!i_oIGX=PFvcm$|aH_ITWV;P6MYNWIXGh%?Gbd#f4cMzYQO zs1_nl1#pbdj#O{m&}ARdYCno4&=(aS{VU78bpWqzB%A%{q7(d58RCU zGRx`SfyKU43_$nO1@%B8CT|v(xSOT`dM1Mr?gXmHo839G@21mdl00)wKPKM9!qRu> zkzwnQN}mB{9N&aAb3inrzg|)99M9)JH34;8qK*I6{rD^7(6)=?UqGg-WA2&O0#{dYw?oEOaV>2GjX76Ym%_U0T*;ye z?zLy#>x9Q{o$sFa&Ueo{MbB*KmUp@TNm!k*`5tx!apsIk7)^4-(Hijj`A4fyJEZ(s{tsrFa2Nu5A9+Ay2S7;MGz=$sRQVB`f-MI$KLS1(s*l(Rz!AKV(}JJ z#J`0&aRN0i%YYf#nz#|ifNIzDMz1j_Q<4dsGhIcf9@wJs#<{o1Xb0H>&jQKgGKI@m{jk{Lu@XT$;GyTA&!^W_{oYz4yUk*E7Eiz;%I9cw zbh;xE-uks;o8yCEtQGO)old9Ev1#90r{)mNIUyb~0nuYAc70BQ;#&dV7^q_=&J@=o zly5ehK8NP?);g&}Kz*plT0=CRxs{#n3;Wg@R9iwCTk@Q%m|rfJuH-*_)z4ABa^W@? zv1WLsQt3+MIA2A9MNU#A&Fn;iv~SYtxst&wPt`NaZJcaoEm7KhGMV(c#UW31pu-$B zN6qXd3!kU6F!WR^XY-sG0`nXJnTKK6kwD@-wFq?XX7kL3kAGh8*WXQ?nItMM$ycEwU=DR?o@Y;Cz)ZkBi~TcV?OZgnlvpl>j)dk_7Lpe5{Un zzy76V>al`*<~TxtGXQymj-}Z38%&~n*##nVUz{ts@tSoHgMI(yyjZ-XfV9zM#s;f42(uG z4ydyo!uxeLF5^$Hz_|%CR${_1KlTAJpni%02oI6MV>Wu;?O~A6vvG{4Hg#Qt6(_Nu zY@5v?>*j7VUOe^07KfU`r6Hi%+Zvuve`C^os+9?E3b8d3TH4OgYsv@gK0CmEp1Q+K2Tprkbfp`&e~(b4Csgn23m75-q( zW4r;B;C9-|UYAAo)Cg8Q=nH|E4wwO34vL@RajgL$z8H-X+@3%t^ixGZIpAQ^jUx%50QH$N@Yq46}eaa@n>)@o7y)I}F<$1X)I#Kv_e zdB3hFC+?>hsPvcZOuXW*&OTD?`W_z$Fa0BHZ=5=D2evjlfI&iMGH1VZO;UT;g2YL! zXBUmZdnpz_+WSI|x#thiCVD>I$=;8b)&**>Co;=q8SMwnra!rn!Aq%C+PmV7Ib{jB z9VnH~cjWd`=N;|!L4hgPv^NaH&R3}7rBiFP7Y>W*V=nT~R`x!xzEqi{yF*FPQg&}4(m0*&*97)a!x0*i&5%P4 z#5f~JCSA%1A|K6j(-ssm*?zk~{cRaPdZlVM5p2l{IE4_Cb@RZu9Uooss1^M%$!45T z@TJ-GL1^Pgk^1OaDKs+`UPy#tFYNL?6i$TJYRHIbK6J}VuK|M1NiHbF zvRpcq!@`G>h}2zOsx#k(0t~%hr}F3zEpe!&9>r!sAxKohP(1W`Ln{%@v!J8b-}C8) zHpD!%fwY*+0~_W(w;52BN}mFO-AAb=h}G^WXS%W`jgCH8#_^*8PLE@?2h-rtlP;ui zDL~G44K=nG^YTY;9T8nGF1pi}ODD4%`!NB&v;;z|$Bpo?k0_N6H)iq2@-oPEp3wLd zOKlrTCS6Mv`!NU~W;A+Z{FzU7A5+qctrc=(q^15&5jT-WM`vQ!^GYm9lg-m&ebE|)rxgp`Nz0Sp(cYYTDcjD;;tCUxG`fp?*uxGxr& z5R;Ou*<;?Xw);}_S9hMcR7`z{O9?P-F~zRFLtFZ*WDRcow1_By43rHvNT|EOxceAU zU$`(5YakNE7&efsn_t+%e%BN$*Q+cEH}TMFKc7#}aW?l*6Ee6dFlcdQg#FoG&8Ab^ zOnEC*7q{qIVMY|dxx17~w_*_es~!wyE_;@9REgi_0mF_}LV9exH^W^Q=d7BVP4@QW zvCk@Vl-k{F_hI|SR`wyz_1G~B@|=w)^IjyKT|=wq3LGgt*2Q7mL?g@0hXHWUz+%0~ zot(eIN$E5@d*&x)XZF@|>1a#HytNLjw_khnUR80!NG9D#j0|tx5JlU`^Dy7#b$6Ec z>qh$QuU=Vs($QulGU{wB#jYQjV|?n4EZ=~qIkRn0+E;^wo(2`+r`9uPs&UR{6OJ~E ztedA9l6k2UB#t%ZWCqi4wN*TyuGXUHqmVM32HQN_Aj7iP;GmC2o1BM*95A-PQ=nRK=|4?h(X^EiQ?e0#$+%7E*NQt3yG=seYG%#pNa%#a-* zt!yQIwFR6*cu{0#fLXPxz_6oP|K93eI?&^DF5^*Q8+yNfrUvS-50d(u2ain049zZV zbaVxb4F75bO;^C@53`%+fjvdB>tsTN{@V9Ow^_5&Pg0;Z;a2u)7`?x;xzUU<0yP>J z)t=@7`fHFz?WT>C#+#kCpjOYNY-xX;QK#p`VQD-sJv%V#=Ft~`{>sFl{WR&Kkw~!H zfLN?Ub@2IX1w$WFvDIr%wEvz@hX%p;YXD$ggad~@;>NqBIGqmWZF?)-nj3k?=-DY~ z`!$=MLoUoy6R+IK0SUKIhhaxqF5T+J-bdj~a1vSv_zkkKt)DU;8nwgq7A42FL3dv= z=~W-}J}PwR`g!%|;*iY;!+y2+_|h;OuARPkiZcvsC*H4TN&CDs(3ZQ08g4>DcDoqr z^HRqv{xTpxG2_`x6uaI+MTeJO$#beCE6#i)-FsWvt)lE+N)_Q$C}gj4gSGVr30(yk zsh2Lj`LAU?i$iqlFVRC62=XevFb|^;xbw1Z{s9Tni+#bk77if}SEpt#!D5|h4xkV6 zCeC$4R^5ph@5XyR{YXoBATyNwhYc|f$P~7ZBFH@uA`u*{3!+PDN?_YHn|>4s?}6Cq zdX&4u`JifSCCjBFwK3p>I9d3$4506!pxbpyr6V;Ue~_^$AEKml?TsRvE}3)ywV})PohPPXW60Ma9de>v7-8}GEE##?%-UqWNkOCo<`$<`aZbKt_JmUE;*Dtn|0H6 zupa*l#MY_ZCBCH!!*0W3-6-hnpMf5o1`avLVqi|9nPCMWE5rhyO zKNW95Gbro2LZ3{z+UJ72&8P2pZoYvwDO`N z!-hg2!>Ryc)-%cx`0vA(9Y{GJEI>9}Cux-F5y&@Vv1ZN7)@Np@Z6dY<;sVwJ+X8-A zM1U>dDFhj>8ai$WO6nd1jRv$@?N^Cpa3{zpd&d#%#biu5LAvnj2fMvDjitM9;i= z1;3v;%ohi*tpTE1tvYC^mUFq8m?@~_d=O4{M}uAuU%GplUFQfWN4$tb?MtOn&&)zP zm{Hvp zMi_@%jE~B_^zm>!9B{Ir67EJj5yKUWL?tCBp8!TQneGdkz4n93Z@AEai831zE1M0k z0_O|NK;8lDK36jVnT^QgX2Y|<`2scL9HBUlo#NOg3JNEVZJy#dR*H$@*rw_f$FWTu z$2W0o(-aSY9dU;@ry@=T-d-HX6XH0I#<2~P%ZUMc7A?xiJhnJKxp4v*C61l$2LsQ7 z!Ugi6gvKXbjc||QO~1qPdu|y7S+NWB36RjgCtyqGI@1&I#3~zE1V7=V0p6064&&|2 zr%=L^r(|t;j8cPSp11cs0)8IYhTrH2k6=+D$HcGqb$)(c5Fyu@8+Z)6VC!Vi>wZ-s zpXY(oC5V}ObUGA`fL-@fyMA8Qkoyc#@#rWJ8M$2dlk@vLET&75SUrN_RXVWUx?kOp z&qER9K~8EsZdqkE(Q4gq?eFs{F>oP4?4wlxo=mb?_v4v+y%&NWqygijQUW>;BaZbV z7VCXO41cdf9vx$0N5x3;P1iylgvCAvPc?_|=-p46d|!?8(^9GQ#m-iE1P_+G8UyH| zGEB8kc=MkEOP8=1x}D4zKdQ_DdV=KSyP=-*WTCN}#-RMvUup@7-+O?Sn-+xzC%At@OpiSFMrhoNV^LLL>d>hsaji3Vo~U zRNqvq|5YaEKMNRcs*uOG0;6>t$M1E>zjeRSgX~@AvZYbfDR~lYUh2SEm9v z;Bx=M4I`IUW$q*^_^*gkXt3D7V5I2M8yIXP2)>U+EfEfHeixIdOT(zyNGWn2tFKBk z@%vpO0`O_o1{+Uq^0VynNA`A?0!}ZC^tHQ!VbzI_*`@-sARK$ z)eUl_$H^`I8GA1(g(z|SRCtcA6!o!vQZzmo7p;^4fX=jKV)Ix|-}gcpx!ix+!{Sa| zb~{2H0I$1bE@H9YG=UYbeiCj7ToxX~1|}8|g5ywiojd9l_}L{V5);2qg)-++Lc$v- zf+t@_m62?>pET9!QiV6B28?n7y2CSihn2@-}Hh2*4Hw)o=mo{yPviQ|(Pa;51KzpfdA z%)dOu47qdU-z12&9ANh&JmNTo9Tes87H{n{qDfS%Z-xLE z$5~=vPf-GSYL_z&7sqdAxaBxiyFInV##6yl^qG^Q-w>YJ)-efB4a3wS=KW|_U~U80 zV^clJkA%hm?KbHBG{&pEhJvwOg*W{p93}06%Y6+^!er1IJ^LyN^ojPoXsuTJ8>SV= zo*J??)=}06v6bl#SnLDfNF;M^t!)ZzX#exQ)Bs4O-$r9AlacYaD=aDTJl{RN7T$ai zNR6@=HoV<6Lho^|lIXO=?+Z{!M&7~)!S*Vk$kkX?^%-FI-=zGIugHDbU}tvjNoIyF z+io9D&W2n?N4&!lAo9*6PaU^{QI3QYvt=C}+|1gN#!#((+?G!nQiHc_>BGyU;h}XL ze_Z7i84~Mr%b0gw2F#WA8uWggVig&3$>NryXt@S0qV$$l`*A5g<;XdC%Qx1znGZ%f z4gv%jfqTjV}&<=1X!aysS~!rmTY+%u{3=p zIr$^A1797D`5BCY!u2DSQ)dq#^`*`4-qZ3 z-M$AlGWoJcl)a^M_z?a+XsB%V*{<$nG?PI)D=PWY31Y1TwtTe*lH^Y>?!Hn3`9nZ< zI%(dYp+u*wh6Lueif6o$R0R5H(EDgbP~4{Qa#KkqKWT!eF5+^(Yz&#>Tp+Zkz7St& z=AwtR+Rs)t219-|Yn(g5nZMyIODh@lK2X?%UwwVdXcqr|4Tqdg0@!_NmO#I<0yC${ z%JOO(7}1Da?oU6^xs@g1>?vg7)q-5m(+%!cm=?^QQJ+^cY@v^6wGYG<=+|j?K68NE zZ`j$PjbyXmGe*a;K3JKcug0UOM>= zUonkQFngi)G z1OTMHiQgycV{$6JF!KjOTc5^&0(x-J`$cY*Ztb+0)x7xmw4y#8Z#4c4 z!;S{B!pNhnjXQ^gjwjpErGIR<&t${SpR&lX+&zqSANIq8&Jo`Hswrcf>Jzztb`1U30#l6xZ24CZ zWI0kG+?I}Y{{jX^^bN_$zjoR4BPn6_v}*fZW{7AT^Zsj62ad#6WlL)?`3pgM=o*RN zulmt*>W(Yh#{;MbOT(hOgWiYQbikV`XxS3JEB+6wT8V>7hvK4S=U|cG$*x{B4KDYG z{?lsTCdbPym{~Dfz&ZbiJ0dM3 zoAol6SobQEWR3)&$G@Ej(tcR1bNRr9yISMCNT$V?IHJ{k)v8O`VdG+9c|Ls7{S%=) zI)+s0ia0)=bwFqq1XcUG4LLN7IQAluI=qZ8XYMkvus8JXqC_*A20%Dv%>}d>ulO#zx5TL9%imvpOIGk$iu7PqJgy~VnaEg4) zN0GTRxj;F59kDpkFo3quLCT0UC7KcqNr!ojLV#h7LQ|qCNim>NXm;3*Gz_D;G(jDa zj!0&J(MUsjS9DuSt*R_=$8I}Q3LA6$7h=a&JyQmYa{PTNLq5Oc<(=m}G5|oguoakM1OiYxMoY$}YzJ={X`{%8+W^G{@d`epJJSYP zI2pm!0`X?n-13UD@;R}h1IF+?dKY6u@74m^0^0&Nx{En7m#t(rlgWG>PMq9rU0i=5 zS%b@jY<2@|_G2(9)?AW$9mbnTjumHU$8r4B$Ru^(AGF7SGUOZb@PWbMFA>0(IeFlU$R-aU?M^-cSEh$ zKp~>;F1WPX?I-bBYbQY!-A0B7>b?@v!9l`DnsLN6Y|`yE9vP^Y%4lJ+*_VKU$rDcs z)bnO0ZU{4~6&!w|DaNgyC#&bd;IgF$ChJQ$c3*)IkQ^cIPS4Y8lcAI#@KD;V9G;rV zP0J)buK+c&jwTKd$>C2HQe4yXYH-O-1`{0}yK)yJZd+CUyn5b?7;=~_Dy-Z9o0YS? z=x!B2H>2mtRgf7Vf?(_MiQ^bU9REl~DTw1As5p)Zh$qDH&y$8Yj(_4f28!b!r})ju zX0>B+N4>Lq5y$aR9LE5}@lVtKasvB!uM77H&xC!1B`HfB?-5JRSAgh(>r@wEC&4hm z!Qnm2Sn@(hTeuj=kZmR_54HEZpFC84(o`Y$0rbJ%3R=N+?Cu6=gwNrth<3vzWS1FT z(lqz$7!^KN;1(Tb2i8{W;w@^oKZnNQV}Z3am?^(4#j;`Z&#p=yQSq3GJ-;#voYlXO?w?u%p*A^(^ z1RQ=kdTx(J1qU5QsB5d;DQe>VexISl_kdJIo5|8)qn+t8aqMmY!Zdyd1n_7!5y;um zB7R$%yNA*^Jk?YrEe8l}kNL3NdT~5!wc8DWf&9Xk1#?if`rkvLI-8rc6xMsnP^Y@+{Haa=J5J|Mav9WB6M#BZ#1sw{ z_}0ccS2wRbbZUegJPPq@sog%M(usOP+@Vh?6S-86IhEDwQ;w>Z^4LL~om60X5aP*M%DbpdRYQF6= z^b#(cF^7FxRm7>9dG;6(Mci)%41HSI$fu%slieXM8!t4jL9>bx>usznyt0* zY6uxCN@@vC0wzB|vJoFRNY!W5TUQgi*kb zQLXodu~*xY@EM3JFdF^FuUs2|71yhDdU%Nixcys2Q4WQK`?l5W%ky=R~8?kAk(OL8#!;>F#uJ4RCy#SRz^cV%6$(Ry3}} zpb8WU{UuCVS{(L#bn6%(zd%Lvq`80OhLEQSxvg%O6vvmm{BSy*f9RIxIcQba?aT;q zC^SJ(+U)}(De+ul+t6J+X?fO{lcPbx&(|& z&c^g54@o-el0b}0NwL${6qHTQYhp(>@P056TFlO2N{Ywaz{AvS;E*+vK|F95ezAU7{_tS$e zMUu*Sh|xJ~knk@dc;sJnP;|8%Fyu1si21|y`e3Foes+UGPn!&rGlc2PSJCKSMj(Y- z6S2CABwe=7_$X%%Oy*xEDdbn9psr%W-C`t)y?F{8{!6JxUgJ%Wj%Inu?SW*Sr5wBO z0AnGSk!IOdh#;#$#Ic$+V6!i2M02MJ1)Yt$K%Ix_&3rUS_-l%s;Z0g<`m|}tfyM~U z6t36*wiWRsB{qF3CIfE(1V$A(zBX1G!N}Zu&cOUVg!i#{+ZLbPYTaQXag*10tXi%r-1L$Rsc*7{a z023wDZubC(Q0g>kJoX4XY-BDN#0(A+ZV6Sc)RAif>@QyTL|-(5*z6YSU_2fZWsCV~ zz1EzQkn8pPP@y=4343dT?#aRIz=HkzW}n>j#g^C)ws8N@A3Qu!b9 zgn~e!|HaYAk^0ctQ@Q>KR&)+d(a+*hLJykz;V68(DTunu%7}P9IcE9ZQ z*p44$n_x$^`j&H54!34+hh;H)LlAa4qS1F_q>8_QQnAD8#QhK!;2cCw91p3-7K>s& zq8z@N&*^+LDHPx>-mvVkEG(V~kF6O;v-x47;fwe?YBXz?~Cl3^Ss{|Jkvm3fK!)k#nAR+Vewpp=DrRQREujS(6RB5 z9%UAkv1;)RWrkII^O|Y*cRCDY0p)L`Qm~evkN9u4uH(4aTFpbLLv-7f$SO9aDyZ% zNE;E*?K16WX;v;T~b#--hb#+w?-5#j{D77#BU;qzw zSOA)#v?fC!NaN|RfFcP#m4P$9RzX&F;u|}M6-{onXA)e!x|l#MD7)DxsX%8TSmmW& z=(Sx8bIZMT1SLXJ5{+O32%!($f*7~Wn{?Yom zLCe5;fu^H|4+VVaSU_uSq_qap`bqW1a52A}M}_@>B|}`eGIqjf{hEdKy>hNU9f1>B z+!he(WX#N$#grqjh_l*vYN+hRFoo)B zZ4|s7W+N6GzeQz8uA4s6rA02kF#$P%*SwcVh@yLAPO?kw_UI;%u0L8#P z(52TpFDdy0ftT0&wB<=GBF1Bvrk(gRZ+pIAVZBt6VdAUOQkORI`FPI>FHuo%zq^ak zydmpAqCh^~cXok7-xOJtVl`fl`WoYkPisT8r}c{?YeXEljnjW5uK6cy2R+QpmxvUo z_(kPqSCeXpXIKhtd4zl+;KF0Oco4geAcH)|8Zlb3+Aah~hNA&md)c6(`+*8v9yab& zc?S8})`;E}kGWIIIJjQ(IzM#eQZ9D%3}Hy_U!fkJRj%(Vk=y_@cwK{xG47b5yevuD z`j#ag*W1$URz^`5an1@BHMPzGMUXp`R-4ZX_wVux?}G=%6kx4_fO0wzRT3h}dzMXCKL8HFurP{{XK~Geg3CAlKw-nE zW_;A13kux$d6NmdgL3VQE|1LOe#X;;^`WH36KSp0GsK_kOuzyDbfxwA8S)2fmlPNOEx^DN>eJ7NR%{okXY3@2 z#Tyjbt3+7*EXKu-nR1I$?7}5Tn11GBh+Slif}Qi>+LN%I`B^RitmT>?fMDd{7-3`j zdB|0)^H}Y=0)VPTsQi3}6dT2e@~$C{T}@4`S7+4ywhv`orNV)$r6%Yt${K$=Lx{Wl zzFa0gI-QJ+tXD%^{`O0czx+(N9cFatVp(UuU7{6_Rh_wFjzrzd%d1zRGJktE$166a z+!%n_zL7}$_Cr-{cB#buan*x`h1IE@2>kZRE4ESj?vd-0`sU7WpHwlA2oiAJ^cH(m zR8*%n5djpQks7!HTz~y1Faj$~i{dTWM3^rZjYH@IJjdAx| zJ3Zz=MTsk<#bLF|^{Np!Kj)wk6G?dagfw($n3=uG7BC-bl?HzViyt6YRe;xo@>m@j z`=Z0j4K~8XYZeKtHg$;sV<^~661QG6N445C83)E)cN3#JulW=P<8ac7%cS|Tn+%D1 zI!4~$s8fyjOb<7^Nt`4Hp6oT%~TwQ<8S2z)tdlJE*A zuDDZA)`sgV@|jFvn5>EOf1ot%I0y?q(*Y8Srmbhd`R+K!ug466B0+)Z9~kMfoqQSc zmy=iE5fi*#0^8$$QX%ax#nxaEOfBANk8?kf0^%*XfPul54u8XDm>nf3@!y1j0W0Nw zS2S-+2@3OWV)TKN8Xv4fnr%(0`pQl#yj7IIpD>}foD-I(Yy+zXS$G#&+_nQ81b;H= zYlDIiFJp3XJMe8@ax4kfz-jktfs%X9?C&Fu5-nf``6DJcH=Piehnyfn0C1$Aq=%GE z2j}*XKyaEKAv?7a#VdJR+I3Ap{_)EQJb?{^ZvfB4uESFFj!44b$14AZh1zyi{Tm0- z;0Rl%cOn6dZO8Y1qY(%gLZ6S%!kA`Xsd|5rst*o|Mmsf2nBQYUW8WFsuV{b}tRKjH zFL@aEU1o?s!-v#~jXRa@>cNb0ZY*Rc{!E1mc+}K7RZhwGHQBPU_&xB6QRp7)yPVDPh=Nk^X zWwY8&wAN8yUIc*XL7Z%Uji4x> zduDE5)xh`w_t)h+8s6Br2MMb3S1WgG84$w{^%UM|`@JT;&1_2Ghl@6{6s114uw*Mz z3i3m?2Uk#NuSUT5V%~VCk-_<)3n9J5AB5q!x0HMMVTZ7){&`M8yNy}Ig&QV5@qNia zmyz4fj4W;_0>xaCJhX;w%n-{Kf$wVg^~j=aSABuCTZ(Zy(^jP#mtk~RB%E{Btb8)E}a4;cU8vm1{Ll& zVHqo_o07~inBfiX=y1X=mO@I9FhFZ9C04+Quzu#YMxMp8uZ0BcBj=$rH#PDsX82l2 zT72Ye)T4xHG8!PRzao2jHf%0*8$eDnnH+^LrQtlKTV_YA@s#(%=={-%sej|N*Ly4> z%1)HTi6^Pqztk!LA+jZFc(=qV`iPzm1p@jMZtW+PS_tpU*zmLI1bj>1C*py;P+K`Nd?)W!dZH@g<9nb6P_*&lqB5vA>27_B^_@XJ~79 z-w8`BB0+-q6y0t*%$zTi@Frz=M~Pm*+1K3gqeXw2AM||4ISAf2S9m=<5%*2GqCG+q zNgN92H4^=r{W>B9mEsFTBEEG2#xI72`sLwE75(cuM9tICgD1W|tP*;wM~I@aKz(`O z`-rUB7EX_hPb3rj06&YwJs9W_z)Gz<_+K(E4S$ed|F@g-mN_>Bmid*taZBY+xcie= zIcEn}h8zKiK^DYuBtYPS15>!=Uh#&0oiV1qFk-}E2@YRgTYZjzvE5{}m5XJlV*`MKtb&?qQ~50~gjFnwT45c+Y!Zq2>U_Wr zxX6iig#v#9hXUITz~J!4Qd0F!&AQ)G+x}tLUfN#wau@ksTBf|AV2-Ix8jp=NKuPy< z*THvbk$giz9NP?Tp68u;j#0YG%ySHkd7gV_4f7n6gf!1{%skH%<~ioYOclj$ab4Aj zs=@U&&vO9tJk!i`%+cS^U{d5e&$|ce#A{tzd%#1ypTQ)FpVhiS2vPG^(d3><0}_1I z4p?6_x*u55^Zu~;y&hfBkEtoZ2Ze5{S`aVKl_NjbLFs+`;Mv2$*-AN`-T;6!yak2d zCn7X}l6l@=FlhP)X%_s7K(X&oPmoMf?k$NTeM!5012j1MMLP~hz~RmHPy!FZ5K&() ziXVyqh3z zqP>E2FK*OfwOV(Vg%<9Eij6MByuMhkMG7c%cXtK64XI8eia>gCk1W-B-dzW@xR5J4 zv?3Vbi?O=4**sULla#yL)5hh1Xua5k`{E(ZZ8irT{;+Mlzw^AYNU(IzIPP=t0R16R zbYr(1`)7Caxj@+b!y6j=PpjQnA)D@n2k^VJj&Dfmw)>*d$M3?_Zzz~#W1EKhr;{At z6{5u(c1hfI+3be0@Y6em>RyWzgFmFR+;dRqjuK(lIUC?URuzs%Tw=K6CMma65pK`a zYw}e=c3x2@Y*S4Q=~$*z9~;Nvn~X8{1=s7&M*Vb3@RVn=fb5+V!q{v$INM6Cr$f$d z`J=Qi&**{Y?g0*Oti}_aaZKomG(h{toVKlnKwST7zdseh@1w-1+7wu=o9oJ|`|-Sw z8cFeEB641Im;Fv`eh`p?{}^exwOZ}gcBMT>j^x*L+3`~v-L}&t<-U>Qqhp1=bZ7VP zsf11U)+YU{n!7gSEeole!yDY@eo)E%Ry^vh4x3N58M1Kz5aV}V7<%f_=E)9_cNd4uH!ysn zp@?8SSx9Hk^SrrRa`3$$Aw7XphbQM$QZ+RG=_zY5xcWMBUQd+*zDRy^zSrQ}f0?N&`Wt zRvrZQM{3d=9eF)?gc?-@Uf!M950; zs|!~8XNBjJr}$J?EdB5uM4Eai2J*>sUn9mi9FH@-Bx1vpsdl)Y8gM-bo@gr``D724 z+)l&|wXW!`AN4KAMqDx;E~SJ)jfMm4ExBG?6PR2JW~BZhUf?aEmend%eZ~Myzp0q| zN^e*-=nZa{QNYwII9=*F$q~LXsk4egtKDS@5a}AMocah4ySHNHg6hxpy2<Jxw*q?xb(I+@oVs!`A92Z6|Cv1%Sqt& zI#r-v3R{+HhU;~Ik=b>+Gw=6|RX!x2jcQIby1n4M{SJ@qL(EwCM<{_+92}h8wIoJI z^7r#3#QNUx5=7O4=H})KE718kQ1T|kIPW-tNi_g)cyC#P(ErSO{sacSA9I*ey}`@d zTAfjy5NOFugPdOMgQIFwfvJDRdQXLb@1qb^Rco@@ouyNxCq^K_r|_YADA=#gSgm`4 zpPcR_Zpy0w$DCYo{Y<5$DeReEwUyr5AeiKV4mQd)P8bs__ zw8kGbDfvx&#-;?w>zEg?o@#`bS4^9ce1qFkSQd26F63v696#|g2ITd+qa0iGErQ^; zs_J|qlad$*XGg90b}nA>W65Mb;#dn5WA7sP=sy7lG9IxhY%iwq*icRxdKV}NpY=KY z!_C2sXti!En6=(n=J{J70$=(d0hpf+%;Z}SP+B+M-t}}I%OittdwgXD>Gm&X^_!;f z_!i2GtSy;d$Vc@|-YUMu0?pDw?p`9KcdDX-Z{=ugsQ{n@h8ca<1K~Fq!*mI8btIBg zk3+-_x1k07qND2?43Oi0u=sMZF%w}WX8Mnw;)(PbaWF1!cQ$?On|^P{AMc7Bk9~J~ zi6;?W3QYxmb<|W=BC=DEdj1ChNb)KmMy?MF-q?oXyXYq#r8#iNWZbPwW*WoQ!kvgD zc1IL)7g-smHBex@iO)+Hh8E8WhnZ3^1LI6yvpYgClRjX&SUW;6lMPI7G6>^LHzXiA z&5$wA^M|GwOiPPz;e!CwJ{{xb;-m1Ac!6)>0|)A1T$ne@hL7)H!{sAD;Q;C;kd9X> zNb?&D!Eb$nrXhhEuh9p7*W`OLCm2wi?Rgzg>VBOJ2tH29Gs{M0Kg@v2SO0Dv%HPZl z#H#-E#nYINNq*9&s%t<7UL-`HcEW&ta*GTo@qSE>g48;JkS~`n4FjKyxcIUs1Q!rZ zS?tjTKF#qjdk%%Y(M*T7a0WgP7GL%Zd&S|H3KhT&#Ly=B z?Dxo*DbcQMX}%Fbq-Z_%zC8ZIB114p%$ZcK&d8Syzm%zjGl`y3KUlua>n1zrtz$4Z4viIe(5Q=_;B_z4(8U&Vnc}DLm<2zDZbOs|GUp`R@$H=X9 zA@qj|{{ev6s4*}iAcP2spjb>&TMkfzXp%Gs5zs*yL2HjWkY$H@E8JvRcaXmVtpKH3 z$0ChSx~M9k%>T8r-2E4HTpdS&w^q2xluQE~Y1cYnj(3VMaY&H0#*jxv0LRPBNC~o1 zf~=GvD^r@D9Awe?gut4D*aM zq?p>b@7*rve6kxEKK2i@LZ59S4JJN&V4wr=y5N42x@r9H|Ns8~!<>uDHW!iDN?c)~ zh}ju-Je81CGc_%%Rkcc0t5mhB>Ru;S0VuUE{a^qO{apYGwtOo>5Fn1H0|6N#cuIAu zhoJ(&>c%iO`%p)^xR^BI1UF0}?=DWrP*?-ZxV?6PVcA25&B``j`x6DIAb_f%${-Yc z+76=vo&cyoSHA+J0#CFa^TGREj%l;1JunayRL*W)H-L4xHH(WX8Qw0W>sNq~#JQsI2u&Jt9)W6DdHa!zS2Upm9#tGBwdN;=*1??1C0+ z0jApp%-KC>`iBX~2kKVQV|}m?nND+7i5M+-bmxDvP-z*A6@)yWISX$!nY=8n8D^-> zBm?&p7xSGLE}Ak5hF4YgFPJ2469Z<+kz*R<{V~T8^h~y#?2Ob zZ3+_{IF5Ez_Ude=q`D1r5{t#=x}qq1u8Pd9$XV()E;zErIhl^ilAUMNi{ioy0i&$FFb1$4orP6$T+uKT{M$Q)@Nz(}e zVjXtLa1xqqCxRk%$F`@17 z;A9=|o1vhfvJEc*P7(i3P1x)C%yA_e*hZvaJ|u%2JqO7IcTra6 zI3ZD~Pk{7!+|U02t~wGXr3&=``2L zz}r?VV4kH(g0?Ce!gd$f?6b!)uCr2Tx2_nNin222SW(?i(5y37aHH2AZNN)iz?`Fu znJwXf9$shjOjGTe;0e=dz7tB?4>GCvod|GfH3!(>Bq%iBdD12_eDXY7f@rk{m+lkXt;RHoX9bKv|jZlEBcJbd309#?oj?j$j9iQ#7Qd)hi>B=(9;Gd^AXy z?=Io28@ggwOpt0bwAu|sT)PDF7Pc&s_kZesiF>fLU^Qp94iUCd#GXOI4LMo~s z0MD5hS}{I)L&UY5l$ZLu^cs;BCl!@>8L$bj0Zms0(pSt>L(kz90rO6LvGl7NXOJW0 zcPb%xra6OCd5JMrn-nj^q{uf&1QB&z6PxhE_YKdTA8JWKY$1vh&5? z{9%b=QelhDvbvw4N1LCq(~C;-Sc}iN%zcy})yIr+k(auF(Z@i@I4$esIVd@~16{K6 z^ZAU{Igu8tB@p&fuhiqd%v{9Pi#mdFi`6XEUW!Eu-*hqZ`@YdTatFj|iBg_}i#+b- z&QnrWMlZ8h@r*VTui?fXH&b=e*f=Kx9l^$8Z{QvS8Xqo4(W4OfWX3LrO#ISxi$_w) zids1H@zx(H|7>#eO+g6J0Z7QjKWX(uF06kP)gs#M0_Lo)qxk8{=5?I7-vmpeUP{cw z5#GX_3>%P-s?ZpX!DoRuXo<@W?F{_@b48+OP+pr-ObJIaWZ^+*IY!s2nDztN1HAA5 z9=gPVYLv!ae7fRzbGC1Fr6vq@V?Ho_kB0K zO7H8OVfMbS^L<~S_jQ)NY0xq^Yn$8*IqUU(UkC5|3casWMz(%ww_zSH$HEcQb`;vc zi0_-NFwVB&nyuFXZMEG50pPf~FWc~g54W4H(RG^_z;2Y4+1i)53z@k24Z94wZgLA; zLvb-%s|3#+AvGNj9y3 z!%fVUmFJVp+yIWN`ys6zDLV`? zTn6EdxFGlXLj2|>X?;pT_ zRbGy<6$=;tt^qv&fmN-lWPCwQkTYUN{RJ(UOov_a3b+UH5+DU{a|OpgZ5b(GvAN3( zLag)$>uLN#Jk$d)3wSb?kd}4D9D=VQsv2@A-`gX zM(U<|m$8E>C>$}Y$a4@=2xIC@d?cm43)+>JdTasaWk^g!_{O#5IPn5dKqAJ82C)zU ze%wkEFW+JFgqW707)VXmtJK-^1Nea>3ji&Cu}>}q`t%<5V3ASd!M0$E=}-c#{FEY} zvM8Ecvr&UPX^Qbw42+pIGHpIR1bqpY{U5BFGc4Hd%4wD(nG5nDJ`|!g0I?%gtZ^eO zo)5x~moy_1JC6+`@2>FiA@)+FWmegC4w-n78c$w?05H_pMA>u-c;Q0~17E};1!|J4 z%^11pLY%e_ErGZ;He}0LQ|NqJj2@~_uoV&RHX5Mfuujv;=t%I#zF$QB*5X*o$f0JdYZ{TjfEkabLFLl$ql_ zN#6?5uNwa@qlSfVli1$s5=PaJ+9tD!IFIP{uPFG@h!Wa~nq1$(0Q^@_rQ84%nrTEC zcVgDfcVxNvD+3Vo6v|30f3+2W#i%hHA|Qkai7>~X1i+^3t<_AP=(NH60Gea?xbHL;R`1RVh%c~)oKL)@7&MI#u& zl;HLFOq`K3MI#uA-m0;zX->qcP74R&o6B&jE5U;>t2Kln!s0sD5QZ?we}u-|pO7}} zVmp7nsNP3ZELv|+R2#2YP}Qyd^x4sh1*>4kT~Q4vwJ-f(01tIt06MmuD?$(;uIDFH zZ-!dnlVd&4e}|#cma>kmcnFpYA1fHYMc|njlNrkY@McMU6CtJB|FBJR{X`U(?|n~& zEtqxa*ip6BoLg z6%1Rb42=283%l;%4Ne~GmtF1Z-9lCZXDyv{9fo0(5?%1uP9 zovnq{j(2coIIC8-+sL!A_q#ZAc0k*ly5fT<|wZ%0(d--L@ntoJvQ*7STdOcc+8RCDq6tr4A`OwJRZ(;O9!%a9mjAjapOG3iJ&N~G8Pb$cGDRoGEW6#eUckl++`=iunO2gp&n5z6Em#y9= z2E*_Y3_o2!kORZd7BCDK02jgVlZ*un!%rB7abWmag~g;Q%FJ4%Ignh3rGL zGBKb~xwAw46ilBl1zOpM-?B=t{07U+2XlnuOE>0?`1gH5SSW8W!QlsM`|>4elIp8?Q#e%IiQF=>H@Nt$WLTC7Enfc#bK#SiGjIWV zDD5(W)e=@~5BkC3Q?&zdqzekzW~Mk)Dzy()E&qryC_gF!xhElEcuA$5NCD38l>~ts z*+sA^gS6>wFnq-TG$p>C?iQqcd@LrlHFrQsjJ}oQjvw^0<_qa6C-?Ze0R(VA)mP)Oc#(N7ICPQK zYS)nEztkVpSD~!pyCeW&Of=dzSka%up!b4E2=Isx6n49f{Qw~wUz(}q18uDNL~52V zTD&gx*Zmr>&iHMcmtRzp;Dt)EGMk@W6@4*lX?Nva)J_g>w&z7?XvjG4? z!oqH4`2A37qCB9B6+R4>lKTeNx0s&)H2B2-LA}09Btn(xv~zCLchchLqnN?+jdmmg zVYtgV9)FXj03M2Wig$G2%zL_b2|s?5h&~U+X^ek_*`!#ly}#vsCPgUk7sSUu%HZ%s zD(yW>^fSdhc|R>L|M=HsNu{^<$Ewei=H&gDnEWG`7JGYqz5girO=4UR1*?pAq_o4J zTJ0N8=|e>*@_#R;`0j|WenB+ar-baEf!gJ3vQ7U50*fA`+t{T_JpX_(Tb{}qC;m|S zp=-5x{b?!a^BPvX7MjXy={wQusMKCTufv}z_IN~Vlo#}2?LDB-eiVr1b1A9v-NG+k z3L|3YL0H&_tQq_fO9s6p1Rp$~_CbG>B>O1noOm^wLq15Pq1$vSn;{e6iy7_kn+3#q zImtCGM-qGpINRuF0}A*no}ATcl}#kU_%)ooXdnv|cnFx0VBJRf$OZIYk7in^if10f zh6R;Mc%at?Q znW<2V9#=f?HCQ0Y6>Hj0Vs6ui23^2 zZvu4O#l`#tk`kiQy8#9Bem0E|I&NZ}qhw8x&Px33mPR_3Ajdql)Y;nO<0p2CewN4_ z9gEPJ$$(%<;0=z)eY2kp13|}elsN~IS*u#*Ou)K+Hi!y6M1^wJu63ABr`#|L_hXGb zp@&=unU&O3tZ0s)7bOGr{{96-imGG6_Bm zzXk{kG!WPN2ihzSRI1#<3DQ@ylB9odtobAiK2oVve#_zfGqUWU9f%R*rB)qLm0r2b z@A+a?xPJ3%#K)l#9cl68%pxW~Y(v#wu0Z4MEC&OiQsoWUcs^KSrnhV>^FVe$J&;O! zPU81}!HD!;A77qG4j~i@?LCN9egoeOJ`J80ZzM(GP^Gs6L0R)jv|ai$c~hT6>l8#- z*kiSsp6SShf0-J=M(QeB7y-l2Gv{Mip{0Q7Y;}wkz@gK8cq58(x~0+1Z@h*YgJ)OY2)u)CE#jwx7I=V*Yho142t7Z{Gos959F@Lt`p z*)7PpaZJj{`Z<{+3(w^F_4A4Hx(Q*k;Db3PnjrP_>*d->ZzLxvIA$J&TBl113(r-3 z-4t=mqsrRBP<(w;gWlSIZ@I52|BgM*ebCV;slW+Vr8h~CK>2wG;C~(Xv=t) zLN4_jR6{pgbg)Ijy||&Dl)8srw424?-0Iy}fE(ucsC{4n+08h7#P>J<@>bXOrJ85zEaF@2YA!$qXIMNOo&Sb%iHF8B_0oGV5tgmbPyT zpmD|?4b(U~7yArExvg3K!yCc4snw+XI*qP(`$21yLvC@X$@H+D%?GRI1d}-$xx3l} zP|uZTg4zku4DQ{DP)qF`uSCMsD0m#QVgSW1F0>eD zFbrQXD}(Vu?g3%euUo|(za`CBYPdXu75bHmykod6a|dp9r-Oxluj_VNTsXP|^&5Z#%_F1;$A&RpB{)=A*fVQYX5F#W*NCbsQO;>Y(gCr@W0}+6f zB2B}3EC(XkP0vY@HFkGyia;k33b{5{`fl%W}?t_(R1O?h-X$yzwm_cUo3tJ`eMnHb31-8VimaX7N zCxaj(n)Akvaf%TTt9r+L$;ZAH|J%6F2Iz`otO>m%mM9)p7zOPf?z1&0u?rwh{?R&v z_t4<%M4sM03qwJiRpsN=I8AXdq$4G;*p1fVE?xm4@zp@8;MEj~?i=7oE~(^FirQ#1fDD{4Pt{9)SmaS(uqaam5O=cmdr3nU zJOm}3D1~X0D;XlePnsaXpO{FZL10xp?vBk*V$s2yJ}e3}r1NYT4NoZr$v>DOMkC-Q z;Z-|nPszX@SBfp80930xEBMH@rj&U&9CmQ$1rpH*Qt8fiCE!pAPYnC@Ng_c@S{6(qB-ZCU1YxKUKL#A0{0 z&4t6o_jx%@OHQQ0i#X5c&QcN`8b;{ya(1NQ%`8rlk&-(*hwjiw8rRFYB84*t4ciC~ z?yMashh0|BuXMo118~3zS*`9Yp1Q*gBHq68YKsdc5uZ$z&K@`-! z-^RU`dvs4kxqRgoGaP6~TqaL%uVum$Z%qeZc_)uYa10bfrS7$i02C|A^5;Og;1JTN ziA?6s=JA7KA;8AZ;qu`CJnMM9h&#K%64=LT$iIg)d)?{ zV93+c*{o{EF8w`}q$ntiD{7cbroO&W)3JQ|P)77Ym9%h0(86gk!tdD003M2z6=+k5 zyK~Mu4H53x7F-YILk}pH(?(>Zq?VKW>t#Fco{NDBsNtUQ{Wj`95Lvplne<%U2M-}h z^Li2Wp;oK^7=qvf*#v=WI548yJ=A8vJoW01^MFwtVLq}qEhsps@dO>|U360K7ef*D zCJE`hJiU!%hpt!6=~v=}>5H-#{WPUJbj$ARtn~ZN6^A;Eg`ht zTp;hUYuNrq-_vHpk#p{la}U~?gPeP?IcE^LDCZutvYc~I&ebI)~;E$WE(UO2uOJ%P`KJ&+~mJyxbmytmK17^#!bhgff~ z>BU?f`P`A1ut>>m1*#J33HiMkzC%DbV3^A;@-U;kI?`C&qK*@{2IOcwDcbTCHv?6ECrn92|Zz3LKA%^5Kw5x0M1N z@m*5ck9lCp;S8f+PUpV<;KfO@Z22)@RveDVStI9tjRwU?^n)L>_`|he+^%oqzOI?Y zb$lnD3>G3M(f|}!_i$gcyv0S%ym&HQp!gdbr;I$kP4?p^p34*C%U~7qx1kGQV6mHQ z`XZJC0RA!-V89i4GE%A3O_m2F*1`ec8FPSfw-sSq&*vtCY!kmhQ230OU7kSJ1_m&h zyKKrDy9H74X7GIQwkpbLq~tCmVkK@n;__!qF!_)YJl#n@@Ng95e2Qp=$0MXSU5R)t zP|~j$>aiOD>P%kOCjwOBt-L`5OqKMdHZ=cMq4@<=tx%9@>`GG-UxB0Rvv};1PWQTV zj^MkAK=E3;PDLSJ?{KB%6UdtJF0y;YrINm(5c_RobN@omidEE(js!x(5Alog2jFF0 zZGHRE6`yBgr280FJ1j5W1?b8?8;78uF@OUFP|@@Z8N&RU8t-#ynaY}y(2XdoKKrNU zyQI)q5)>TVEsmh| zp&5pM2I%--V4k+s>Yje^(TlW7d>R)uUqj66#Od4xFd}sfJ*fQJl8mRpq>0J5aa%Po z?Hb_zhhS;&FmimQgjBk-&F>R{Gv&3+VDG5Zy~|MPOd%})jq=7{Q3!K{$=p;W9CWB1 zKp*$S;iDG*=DdjeNkLGT%66V^PQy##QPOJRwi6*yhbD6Py2}41HWs)^rCVtYP)E@~ zg}2koin5S&#AD zFN)9!tooczr+(uQq?>`*K9mPWP`h!PE$7!}5fXL`-3ib!X?kF0;s`b&YdPnpY!J0H zt>jI$U$1z0ZXOnNlF+L0im3Ff19;EHy91@f)1mR~n)onw{}S2xdgOnw0p!B@OV9B1nz+fk+3_yYo*HrC=gc z%yii-LD0(Tvt z={bQ+-AhK?|5ez7wLHGQ!(^d%fno7}R|@bKGCwk-Pp3h`f^Xt|gcTj_H~^H;XVA5M z6C@Qd<7LtF`P>prGavl_(6N>GNV%==C315@lJd^L`(qDO$gd~BRB+j5gUS{bYP#7+xj9~ zC;lndNW#XmlK`^ybSP;2lw+GID^-t*alp?-X+6~jNfTpKT|`xsmrFYHFLguJb)`e; z!H>J}<)bYu;SwqWfV-$M5JO0akO(sxrD+)haDyaC(g6{`a3V^>T3HTDO8OZe_{|S* zeD2}Pe~1HfVK6Wl8Vn7F21A3P!O&o6Ff^vSAi%Xi|49^aRh%4081-4?Y0_o*XcE%MP{Av8BEE2tT! zAEfjyiAFgU7a+ar%Ez~p66g??Pf3(Y4npeJ`5UDd>L8~fmF$WH3UVhmNnM3so3Ais zq7^+Mfs81M}B7uCl<8bqSe&{z@zh4LUQ0KF?J#w+C+qkHy@W0kTF)}-pE4V4o7OeQ>@L? z0}mriCi6`qO5`vHA;eCurl*wxLWHp9y-fn2a5x2)*crizYbEKmTrS@=L?3XsB^KhQ z5kuFA-3Fy<-Hz~K18?iVEp9G#;9lWzLa9`4qa$*7n;8W$Q_LL~OyZECIJuo6PRiTf z9WnE6j7#S6hqrCJgZj+zwlP2AX3!9~FAiZg>-b{fD#6|QgvCuXU9MT0-t}tud~Gr~ z+*pmBV(>G>-BVzo;OhV+WQWxdzo`e$Wg+;&&oACj4LEfmawMKA3>bIMn4Q&{w}})= z>1#N!PXa4aXIWXSR_pejL&I)E66&2eIMIBGP0q58{D@6scfkkkk7@{N!Y6pP0tGqL zP+CXPl=MSFI`rdFVF+s;uX-%esf6})BwX49ec&F7ljB!kk^KW1obF&q`xLMe;6d8< z4Ga|IS}bn#4TWqP&WpA;`Vet)TSEgpdRqv*XX*l6#Lj4dnAnDb;vI+s?^DfI+z(NMEaBJqaGIPLTvp zl~lUtpjgn=u0(uP+Lw-Dg>y!udjiL(?gLHOk086!H`Wj`naq9Vjz~v~GWa2s05y;n zb0o5kTmqD4@46%TOG1$JyriR4t>Z;=;(AmIlTQkR)nw2tW{5_)ksQR1fDq6lt=ZEY ztdTilGC9%)SGtR>>tj%C(rNHyQ7V-@03}d53ka~@h%tqBqlLAQb>thkv}^sDy#+gm z`jD-wC{U1d5M=5pBAI-VBdoDhDn!;iK7d}*v8FOS(W4i==)#KtB5k)C%le@^CA1wr zE+&YHaS&Q2=-h6CpTLJnL;8qHfI|6*Fd6j6!XE_0L+g>IW>Wxn0L2`e>_hGc=@x5ZIi!jkbKbo0( zAuNn@#KicCouY#fDxvLMY4HFc4aHe5xmATCod8HV&6s8GiDqPQy&CeXE!pk?1U*fM zF@&cuq^Pi3$FWX~^#PvXXgLS$eNmN2O*G04r~unLti8~2uxwvpPH#}DWgF%+fg+G1U1%u@bBV3LHMl!Ftz-zm670Al3J)Q$7&wQrC zovn{f$P?@m`52UG2DC%L)?(b^MxmLLg|O!>Q=IH40vCTN0>XFTL7J;53hs9=#YciT zz!-ck=>ddRLL8YeE$$oWuTbF_JjCrucz0^50 znUBWY)>8%_Qi{xj$Y|TPL)-p5Fa)S=f8g4-711WO?T?VRwrzjfwvEuXKMu5EOdDrC z$kJ}4^KP#m=%7Cb*!$16wZjAQ40kM^cHMW@}jr zJrpU>wwmiX>98c0camuna@@e6aW(uH831-z&)Pe|R6NJ_7`^=B2Sb;n!;5b3jOINt z=+ZHxTK5_?g>;zE>z!5^o_GiWxunt;g_$ND#(?gfPZQiGBYe?l^i`9z(P22gcLEXM zTEV43fXRHBu$Xpu1^=cR9xj=i_(G|CF%V;>!#{!FbRx%%1C(<>*6}?vgHLz6d;F#h zBkq&9Mm7&%cY7G$6l&r2>4>9c&D%oIx85dCd1jR+E}1V@DgsfoqXsAqQYl{xdz`iQ z826h9_e5%XtYwfiLxV8x7Yzm9gguk~beVV9(tg1d{nQ>8sTP~r1dXKqUcmTQRC`h+ zXEW7Vjr}@-@lmilQZ(>9qOQn(A0Yd&XCj;OXeIy)wciD>o^1~Y+m_VafrZ|FyOuBH zu#N3aab_xvvR|tTZ$#<*2A`)c3Aowr2nq*tdnw4N#_Itt2KUs24H8{;hVOjR; zG5RT2%BCm?XQ8>p{ck2eug^Orqs|c=`}Tjqejm`D9w8xv5J_kMUE*_*p{9F6GM=`e z{YOT;mnXa_2TpQh+1UQHIxmL5P3shqu^L$Sf64g3A2({y4*6Q$u^(Ff!Lk?B4Q%8! zSiL{$`fJt>sU@)T87p@C1K9dE10YhNdh!N)n)XZJ@P}tr)F_q=I7V;nf!Zs=;6lX_ zM*iXf-Wn0@=a_L)(F%}dqZ?Zf!uZAO7?pZ~%ms*-N8qmmswk@Y4M9j5~y#G zEZE}A{vscLwH{9OAj*kWto<;Y-b|N`X%ng(sb{u7isbuI{iaN6Glj(j_TPb@3fUYR zd}Q8`VsgJwpfB=(l++8KnS_V~_G?7y!FpiVu3BakS@V83;P6jlvTAAO%uz18{p#V< zgo}MV%>oeSG9fQ}U$E0pUvwO;i*BYnyV`G>$(RYKk)Op@GnBY9`(2_KdkNX#JTO@2 zDph~`g*Ffu@fzZ0WA4m1qijFcN{rVe11J0Anz@*9+W#Xc{wssWbvTjcFKqArqB`+4 zi4-pOXJ;OxA-9eq72g>mgXe(ZS#UDV)@~db=mQfThW5?@fU~GU2w{Yf2p1vV#sQFn zB&l=|7*M1-YzGtejHxe9y)o;>sV`=|F*RSFleD$B=dBlJy{N*-q99;VB(NyVWT91| z&{|Pw$(xGVe{OGxmDYg#LQ0TW5CPY0G8pS`v|DWfcnjEi6LHyOvdLI3Bj7KFJi2{$ zzTIuRJAv6s&m!V1ky#?{gD^k+Ci`vtzS&{IPb@yqZl9e`FKm{`3I6t4H7K<&{a^qO z&0GK~wG1mqAdG6$0b~B~boxw-KYYbXG+d z8u3LN>;)=Zp-Gt@s*3V%xC+2Z@GxeUb!I!80+s@t0&;Ua%P;N}0)5_sPp#i~S#IO& zecz(@jj`J?^S&{4@B1RXK<^tvr{jI!nD>2U-Zy6M{i3!wLla}`Vnb7V-&f~--wE#< zBge5!OzO$WARA^wfcEkPsquX|77D7K+!k)Q0X*7^kDN6sm19{L){{Y1Hf)2_T(sJ= zPEU@dL9Lhc0ARy&TJ#nvav5cpWBcN2C02Sij5kSZ*;2;{3ptijMXe-=-Y}pVEgC>j znA{u(dl{%DIrMC}hzI)f#sVxB%fVo&Iua;!!$~mdEOtL%Rx1Z{OROKMU~Ra`6m5mj z&1*X4V2@XIk_iada26|?O4roI`|>bpW$jqxv||}1^aqMRT$!3Y>??!1aRRv=3lK+R z3SnGerg<2RrLH%>?3j8*Uq*r0(&}-sAP#B_Fr4jJfgZZ@1`MrimW$QMP|vaDj=^Zq zOU5j(*DDtTA+Bbu_UstP8l5C2@QO<1Vmyzycg#3N zD_UU`ot~WRNUAQf&9Gx8j8<0_|Uz7mA z-Z*%$8kh{X@xIleOieCBnxd`(joaTDR;u$%^Q@+-jx$x{_nuDt`)SG9EYC`#>=ZaX ze@}|x_fggemCCd5M05(<#kXMe$8Q-*hn=20%MYqk2>f{qKCyn^&1E6=bsQ}tzsI-y z>p(Gx#d0i6$gabs;`xk1c&HtMfYT{YVFXI=>7n8K=9Zp`=G@EFKmBM0hY!LP^%mF` z>nOV%4ujQ^Ug-&`IQg2VOgXtZ&P27*sV;8bkcCeS+5t@ttCf3b%VhS|!xzPyfPv^0M~rNdPWRtXAvRz<`_{hD6EB4%BlAorh<7H`ai? zY$wahACP9q2z*ef)Lldq+s__Fe_MCy9UVCx2n+Wh6w#j6x%t~&(@Ft2Fr7~K-UJG| z8Xn*)BH2JwZJ`8d^>*GMSzoJ-UQw%uhQXziN~Qa*MoMQ(!{8Nr7@*hKrrgNQZ3)bX zI-8+}KcWQ)Jwpivf8TfGksEqm2>Q_yc`G{w_J7F(;;;~RXOI_DC8qLPrf@r5>%A_QH@gQ_?D5GEGwQg?_b3_U|t z1RsQP^D9VtusaYI@)BrmU1%ozfmTc2s4Hb#3CZZvDQoW+fzT^4MN(3B`ISjU&*9+j z_d=lY@Rq0C-vqUg{^i2$WglB895`x+AY)2@0mAU*9$8Rz6D2!~0&u+xbi&JWZZMG% z-3H}--NoPB%h@i>Km}o&gc4@GMU;q_T};9}u9e#h+1t4|xO!Qt2QET@%}Z77EU=)w zOhf`^@2_FzlShowjV*~B zR)e&9JgFn;O&MVM!x}R&l?gPfKi4Z?vf=7WJEGpOkH(x;A*w!9DsQS*=t@*aZ}`T= zS~g!)rBW$(5=-hJEI9cgUloI~GOY4+dU7Zn8@h)lgkPA=`I!-mRUOJMk9D-@1_X*e z;o;WXpx~+E5Ek-%V@2m6qvnN70sS1PwrUmI*EOK9zK{!f-;>j#T7$*%sHez&^r7d2 zoB;C{x>}XSYUNU0(7I6&>3%L84xsxs3l7ZHT27xg^;;9}JWWiVNN-k{P}c3@xHmDmTFw*Mr!0 zJP<^|&yd2av(uBGxWerL$QwK$m!9Vk)OUrjkfWG>(1CaaA8;!24dCL~#9}#B0vdDx zXmI^s-`^iV9hEYj@~SMcZsAMS`+*^Q5OGGCnVQ_ns;*1(D&G$~^GZXgJkjd$6iz<9 z!qkTEYcljpgix2)E5D);rS|}!{k{|se3M($22v@%ij3?#U&@~EiO@S0d19SW(05+V z=Oa`5C%q;ma&!C|L)3MQik=UL>!GMzc(hvi^=*Kj^HuhHTe^qAs5MqG(QzQB{9YQ7 zj{`5yX0sof9qn&PeEw|P;{qP#z1QVUhtuxOp>`o~OT=u#i&)$^TnPohqJkuz2H$EP z2NMm4YtzD_9bj4PDmCydlqlS( z010ko%txRA!)si~00u>1kSoEN)kjf4h`*&_VNvWPBPg~ho*wz&a9z5Q$qccm%u{AFpMsCbUCml@9IyXtGV1|*MK||B~0#{A* z0a~2}`H6!w5j^*L?c;DB<1a~|n*oG2p=xE*Pw{t`2p+>iDxH#F-=vvT2AwKuv z5>iL|Gx1vmg&W>g? z_S?iTT1rW|jT}+?nT+^bBxJNsV%Sy$YM`HORsNO(F1iMT4O=#`)y+7Q{C2a+941SQ z&4^^Ho2|Y5*2~!Z2`Rv)8~D=8u2gxs0^kgS^lNvlWG}m7@^S{6x$6PkcDxhnWQQJJ zhHGZ-lIMmDWzomDNWM%3ViwHsV=s}T>0?c6FMHk0c68zHQmyD>UpX(UX_?P*IQIr3 z7<(9wu9t7D&9RW#z6^WO!S1kLt^+gMK!WZkM*=&R2lwT?A1)vXDO*zmV25F&#>?6% zqa$LIEhT`us6iA#AwnXIU>G*b7=VK$DWn4tz-%Hc!&+GmLgdO2$8Fe#ZPV7@rR-ul1(zgWF7Ytp*athjekrRr^^ z%Da|O?v1}1D77#BU;qzQUjPcS%qm6@D6CBf|Db`IBtW}i2zCa|^f2MR3KF;*n?E__6~ z8WRkj>6GtusR1d z^&?lVKw%i>LY8xCu0SZ=${}A*GKKF=r}>ahRGk2vSFf@cqAyW9!lY991xd?VMUbdY zrHERe69M#nK6wCsYc+}=LOP8G)$8U6x?L|X%9_>)42ja`AQ1FBBr0mISbjvisSjxK zrWeMQ=uQ}*o|#VhhMq7r*5P8GQj_U;WfmZvPVRIHtFJ0V&V$7Chx#h zSVISR(E};`^gb>?4i6D|lUZ6VXF~hmqqJjTMJ;S?ynrYu>Ua`^?g!>e_Y+EUB^u=( z@~CyZQc5HZ_%*$KIDkt_KRixL&c` zX(z7U^@e_ha?}B*lJuriUcibLwfr>de*vKASS@PuoK8MKrcYhshp=Zm5YqP$8}A$+ z`G(9HH5O1}ACx1c=W#iqqpRaYUJ2A%-^<=Fv2-R~UrVG?Ucu@}&1L57R^pQMByuW| zG@E=!Z>xSGrP8<1t?6wfyl#hx@>j)J-4$2pUkV%h8Hd5f)+TEY6R2sVQS6I?PYCB4k_loHYOZhuiU_o6JDl`+mu>lW<9woc8Dmy5CnjmVUVyX&Fbd7 z3T`*9SXoM@f}1e_WK(7z%y&CaHQ3r@6;dMHEK6_7Nw--}0K(~XDrdz2!GHYF*p*Hf z=C?5;uxM0<8X@C99`MCQQ%g)$r;vs+!NX zbo@EQ9~2f;s;r~rj#s_X{XN3YL`heqQfVwXMdenm#r&^THW zD*MZbSyQ6OBf<8z{vZ4GvcSo;eM<(FrA-&Z@&9$Qn&@+rLrXIp~TKC=AC= z(JeKamBnt^=r})BfQ%gHtWU#~n*OW2VUR+4@Fw$py?~Ky{3fT2-U6_dSSFtTVtow*#Y&hC%Wn`~_NXNO`VzLSMtoqQ6_VtUB_Zi>B^yRc7dI9F?`l zoaa79=y*bQwBZgT)@sso!OV3EoNZ_&LR;3f7|*rB`vpx*=mjKM^KsUeNT7{s!ChcM$S2)k-lULuo_-&F2 z`o@_$CekOTDv9}9oe%Vw1vX*{028^>>Eu<$p4Xy@LsMB?#Y&`_oQSTDS2G}ctr#!# zk2E5sI!!XRNh-R+^gM>aC z(G%0DajKe$dhKN)O}0f9zxl~=bbRDiojAWO00LdZgO50^?72kcw_#AaMU%YPfh2s^ zE4|-ldC*s9b8(ai8P_kp-(Es#5l!S`35a3VA!(lbfDO8bNUN%7aR`pCms{7gJeLV# zSF^%7dto24R@$8B)?hjo$SE2tPD*aNV!5@9KX;3!>m3N_A@LbzoTM}Ew*-vJvYMecVfX&U@i&jxVhutC;EmSYDD!$2?$@4&E5oIJfW<7G2;Y%iNE^Is!~ zDljZhd64lkF*e%^hiv|f!Q=Uq!7Kx1A6cYLM;xT`U#kdEzq|@hWKVFOs&4S#I4yR9 zivRi2xUWt~_^*&E*P|>wdsXfuVdVclP}X-8N!M_3`wd9Vf0ImzAw|(!7N6|5AVqIE zM1m=j4LXqrcfYMU`^xW~7t$K7L6HR;$(Y<%8jzKNRHY}cj5~=>lc($fi6lk8f%9P} zAtZb65v!v%|3FD;!(EWyYe9%xkD@#e1lJAM!@_rspgD?qpEi8MH8SvBo+WNI0(_yq zc`Lb+@N1}p2J%BwFAF zh~u~8gbbg9Ah`gTzC+mFj%#y!H8#3RTu|Vl^3t{(ksmKPq!x&>6+E0$a-qC~*NS`;-mtsHBbMuXASx_R!yhqZH zHXaC|XVfAF%|J-@d|EMk0uV<(=EGoB%GzVACH4eSqF%90fGS^=&mO6<^@bq57!(nz zP`oe2P2$$`LVeg5 zrdfP16tY#sLi}OTnT>_2J>px@1}J%WFbsou;-tx4)`sgY@MXq^_!*{(=b|~W;kr{_ zX6ypAf@qXilL&b3x61}HWcP}gQ=o!ngwOaxwT-y&ykS)js1y!O&p5Qe++|M3$GGZ% zX1M~N@xf9*;6s4rsDU6QAcP2sFwKmv&0vEhNzw)paBU?jt<@Yrllk7|5@ciw-q*KV zqGDn4YjmV_mXdmhsre4>beQtRp>qv7H&vg=oes0SCDXB_FW{Je(_0_T@s4esO#1U? zK*3$*(<7d&N91}h=@X8MIaO(o{)P*hGjd{rPK;>aBl43pZ3=n5%98@#^h!fb;--8= zR>TH>Jo09S-j4#<(?=tDm`yu&+*+C!&Ka37VIpqDqjbykdScz_LSxd)ohWE>Bovys z5TPs>>4Q*Cg~{M6R~K%`XuWJR9_x3%OaJ0L^zyzt(KHD5ulXIaG6)Q1n5mEz1OOH)m{27y|!Mf?p3$! zM)C_o4JfrQ{a^qOy;}h4u)rxs5Gbro2UkO88UUI{&ZW;GPuB~pY*8MVXu9MJ<#PBo zIfgiw=0QQd!dtx)1}%X0?iK|sk@hA8kfnoFSJXa>{K-^jZ3l${g93{Jn~e6-nc{Qg zA?fOhb`#yKCLFW)4OAb{7RTjNH3 zV7`Nb1-RQs4b^V=*R_;fnuSV6b0cZ5aH)*;XBUAWb^s$-x(=qw}ut*{WdR4V0F z8f^AH3S;y&1DogK@Wd~)x$&x~U+;NBdIAsC=PI+}KR-X5%80lBm63H5jwR2v1&LEx z*>nxQQF_U5>bV*_@Hmb+735;~g8)fezodAsBvX=-liccooGv9RhNjYPzmu^3jG+GPrYjsWg`oKJE=%%A}Su24uRX@AMD#~2+r4dT#q>x_|c?*vW2X%I*3=$qCrNr?FuQXI!Zas0Havx(y;T^z?m zu>f)WY%&+e@iUI&nmB&S#Zl7wZo0pk@9 zZ~o$#OPPJ?hc34K0za&;cnFO`rSdD5ZRY|#@g=GkesPfiDAOsY0Lr0PslxIeV#ya{ zHu;rGxs{G**NedNdyqCf84gkQet!6s0E3-K5J@oOtmVrD0_nvu=ju_^MI1c=EAbuh zmKrwyieuRcVj}la3rug-MnxWyoaA0EDCk1dF73sFn9m_5hwOzVOQ#UShgR%_@z<>k za)oM@&rqP=6VB6&i`N(#a?Kp+)r6g3!Gj^~)!?g4x7}rNtJLL&* zG(HUGO-J(S<5&Wfc>?qPkrJyXA=Mr#l1h%+-SOGXnE$fPw51pa4`q}lcRL91gn>0W zGXTH85oC;vbG`De12Eo$xJGRzh}%CUD#|xhD(^-$`L{wsYgStS$%La^BbD+ln0_cm zTJ)v^(x2eWO71EF@pU+Jn)7SI+kiYo(+B2VDMDU}h$K5s8uB(?)S20Cd3Ouh7x{Ya zr_nGA^B&_ELJ)RO{nDCk>gv27f(oNsdb;a%F?xVK31kF1Q? zIScfC)6gL2Qmt~YZ2hTF-#J_qpD7C>7yS9*UI^0u1Dev-x%NEMjye7!?mJxY**cAu z&lGfodw}%h1+c=ocW7|_QkMca2UIHeDgnNa+=#s+1@f2P;`m=2b8nN+?@Xz(qdP{w zH1);3HOL-1p>ju8aQ%{;f%9#*2<+$^)-Odfy)}*=n&f~Tl_P(NdO3H!a_>MK7XTnrNf|$s?8RY)P71M?~ZFnc7zb+Z52hsqUUDIaw zH8k;xRI9wZq{`DpXU)kM;%#`rkoNP#yE52c@i9f4Vbc4jGHkpIFp$q0Wbl#&DCx=R z=Hu8v$j8RW_$*E8Q9Ci+ctgiaL0!PZs8sItG^2M25^!+J{tEziPeLvH)Ciav&db** zo7I}AuwW71#_T}&72tTfF|}{%>1}6Dsre|C%XxE*CUIhMhxf4F=KHp# zc?fCQW^gq4r-;URgf7iPXv;Q(L*<_$9QX8|#Bp3A&k5cg$0m9E*Kvm4hH&*;18~98 zfa>4DFwLzQ@>>-Qkgu|+^e+i9y;bGlxt(cbESd*>FRn^+ZEbjNB%e$L7|5}DbzQIW zPIo=Fcy6JUOo81U#~KQCy$rIRnsrEYQdoCNMe7#k&Z zM~hQHE78LLN-~6;#m4PrV4j*u+1p=n<;V?4r97)Mf(}Fi0a}h}%wIi+WI2wx)-|Y$ z6);89nW%g%SQ2?7CUPynydFjbsqZvMz4n!VxXk?G;}@|@GDQJQ@+K4 zutSNVqF+TMUc+YQTuA1B=1}ZQCl8OIta4VQ0&m{T`!WNbw@_kpejET?s5v(#keRO# zDPyjz0RHOuZOo~}2l@jsht0rfT-J>#1%v;&!=nRRSL~f>Gxk1vQX$|DL_l_C1WDf` zST}cC^<9a(+nGQpJkNx#Zd^eh3i)nlb|At>r@-Af551^u-u$3> z2XQ;R0g<;!;5nZ;qiG;L?(ks#9)AB6QD#0vLFcer++oNg z|3ve_oCd5he4}>wNYLLPap=ZEQlQa%+Tjb7uQMS!b8>;9h=My)O6+@jG-t~^FkM}Z zjoFQRAQFJHVb1$JiQ1P@d5=NHcdn~?q^)*a4sd;`3r(mJZ+4}~rZf`yAUe}{ab7>l zWQQ%uxP24UrLGX4SOLV2tV!|vl7m9Zej{VUe#F#y2pk8uLOAvZik$2)oYj|NtbhxI z)|-e5w_+IKW3j$yJ@Rg)B)7lp5b)e0B4qK|^)J1>?PYE4zlc0xg{^h6A8h+@7k${+ zUp2M$w6e!-n1kfUGVo{}*r2n?#n^>6OFjrk+QEWGPx1v}gV4bA%^qcBxjlMZ8`T~R z-10(xhOmY@y~&nf3r6Alv^oyh9h<$bM~p3KqxNcZi&z*^-Hrv~{-6rat8q$U!I`~@ zVbT`#@%CwD46~1DI-I56glzlI97|{|@OC38s_eoG79Yq6ES8>7AB&;ghiOU=mWGQK z2xlGp(VZy5ncpgU!bP0yEmUakFf11MsX8yO9qMmdjW*;N+dmM1)2LA-BOrtbiJ&l0 z&@-$7V1pz{ngbEwIT3kUk2#|`ZY~hm8Cnq7nKOHy9cRAyy-k9#)B<}`qV@}aDSi2ct8SBd+?g2Kf)Xj2l1xMYjN)>%zVolJAtXLCt87tN_x@;41&iWdDlPekRuZyEHf)#5*w^#4HCwTIahT)zPpm&B` zB)Q=q&dDQS&@SK^+TK~#s50w$2W+|IibM0_H-UoLoHt0@q5*wPd&jyER)_@#UmXCv zl+t!I>Ba@|3iBLMUBc~@XFH4ng#v#9JGhF~YL$BliSj|HdURt5Y<)nzScp62Jg$ij&$B_ThNY;H(kwI1gaa!zif#8 z1|6u-R+y&rv^}8F%E2rzAMMGWh9uKFjutAofI@i~ z174q_hLSb`ZmXZI;B3m&eyno`$hny{p{#>LJEA8b=nM-Hvf$u_`Js#dv}AaIo8IJf3an!C%t5J8eX^>kelP!#3|om1(v1^TA*8fdZ@Tw z`54gKE8#S1N=v0)O|m1RQu!Dc;PVlpbY-2iOF;ojrBa^7fc+sxKW)jOfDRRgfr(5_ zUL)(MPrgtzrXptFSoR0GIbK8XfnKQMOlRHz_M$|b4pb_y(PgM_(e89+9GFg|XcmA} z%C$Qnx(H>Kv}TDaeW*(V3Wahlikxm|WQf+}i=dz2`~)CVlWUs-=t0b+=*^-9x)9Wd z&LJY#T37TPZzt%@KdqjCw#vcF<61Lr*CzgGP9iV8gc#ukwKcAV`_Zdow3<^7u8;UH z7OGXQ#mmwsSQ4o_MO^hLkJM&5<=SmwhcPIiJKLuHr_7L-z3&lCG|IJx)^5Pe2Hp7? zD7*;;Tx{J#C`WBo;c8vKcYsCU)`md2M4^@((7%c?zRrY2QPBT12dAsU*T}~ z-noNIKykQUubk@%$OF-uZe68JOh65%R*dvR)DpLTql_=WsZyy_p2Y$0kEjsbdWs|F z@st9MDx+6o!PU-{N#YRTa;$@bQgFp0<&j zkq(uCBr{W!Q`LO=M4-a7g~0Hr#wPu&*pLL zR-C?e9#YJV8TdFnMC4hpxxSrCvSBIRd`wJ6P;&kyBWQh}^40(aSyIXvV}Moy~{O6rL^qO)L0|j?oM~HU+QFJU zR-WsXi%o4l(_ZG*S#;zaMlvxb9)4POxwT?l4pA9*o%#Dc^|Q5;os42{du4L`A}9}A zC%Mc?Lxk52vVKTw#?~EBGgT_XRq@6L&H30mttwYF@QH==g(LoH%|4ALlbr)C^9VIZo>D0vYctVP z7}I5E5GM0qKf%ZLEc7p03_G_8Wxx_k_~n!k9rFrnXE4k>$kQyVRX)~*tydE2?JUEB zd^m$+@&>DS<+gU7(q$@FPCVPw*c&VJ&O(v7QS1tTl$+z(6qP*@$pcDDJ+ShR{b6)2QvsY)G6A<~99y)xyCm`gqBfg{W|ED4q^ODN)nTnzNS zL2AQPUSuv^FfKTq@@!Uw{Ki%9 z(RF5mTpn)I8$njlbU;g74?S$W5oeu#Yuw~^fT6img3cmvgbP3lK@U^Gbk_h@Tn$Z@ zG*F_gWV~D*EZ@UdLv#jXmbe*s^s7lbi4nui(E#J&ETf(PY76&5WeS;QD>MreR=7BX zjt`@8HBwg{*MeUMhinn(9CU$u(|7Z*4;;;alohUxU=%#J8lA#Nl3SzYgNK1Q>7b}B z+!_!}YC(AP0Ypu>G*eiuOwEVkob(7GBDgb9wComfCp6HIP43JQ)5CE}^v}^I_hp>% zaGa+Op(e?F(IyWM5g(S@(LF$t+*iqF=92sUeP3z3CBgc&#r4OlM2l}|n73gt24XUg zD5^$AZ`g-q!(l;UGI1KJGW6c?L*<6c9Eeen?#@RKVsW{=LQ8cJTU z62^udnc^*Y*eXF7|HMtihB05nl{0>&-_6?T?7#f(S`SU)U&|H;}pf(`K$vnneYiQneMovX;=C|8A6Nge-pw6pWsHGVQv zcg5nz`z5fmvk=2LUh2GJ!ud$c)cxtTj#704`~a7Wp?y=QIuPgpo)W#;lL6T|B)z1w&px>TTo|K*Nivf zqqDV>msp1p#jHy!|G|u(t+xc@u}3nkDZ{V(k-0URR%~UnL@Uzrh4{H`O@|m$8@0A# zJpLTw0b3^-jFT#8+ERq^0f5%1Q5+*6gb0ZdAYw?#O=Ca<5lPZ?5kO@k)LPFk3Vo0* zaUpr^Av-XF?p#)nyQJ0)3iqc(zHXeXo%mNyFyq(Mu9%s~UW)Y0(*8uq| z?qs6lWwy&XA}UD#g8!?k`>aRQ+qCnVc3#uYYub5DJFjWyHSN5n_c^xJ;kNUdcHZ9R z9^KygyY2%yMJEfp-449Y$IePy3Sr0N?--8m<;gdao!kZ7FJf<69#u9W!S`Fj1^45k zm#=mo@pSr8*yZym{5L<^r|jG*otiWv`jqQDRgi0)KSXvJxV-u+NIwR`n`22Ups>%q z9zhNj3yQf@tJe&&h7NiN{1{rDeOPb2Yu&M?d&6394R@_I-n8ym)4gG>w}wHPhtOL81h1b<9Up886|&+j_mk?VJW5AuQ|Kz8 z#A1JGOvsrm<+f6bCz8|YM<*b;(i|6CDbWWQ9DeBp0eDiI0rnD&Lr6O9TM)u@B*3S= z#E7KvdVK+6jQP>r)Mko7wMHs^3~VagsO-dM3bY_G@%tLG2RH;0Ep`(X+hG>&IT#u9 zqGxqCWi9Ypt>0mVmJ4+;+D(#H%s`<(fSfW8L?g?NlK27y4E(4uE$-lnw4)D@fk{*Q zX&5u!12@2qlCk5fR$t08>`x1k+li+yPwSu3YP?w`YdcNHwp;E`CEk!TsbSlRO9vhn z`yj-+G8l>2b~+MAN2h%d7DUQ!oRGE?kfjT**9W0yEHlc**iIz$s7R$>bu^a0QKcQF z6cLyB{i+lWWJ5OUjwa#CX5qf7Y=b-qM{Y-Zx)4~cUqwem4m3gCO=23DK%rk%$Rz*8 zDQ>1at|WkgUo}3G^(4*qQsX!+P3^5LoXK3Q%Dv=sh*qt>6$&2mmMS2&(ox)7B~U5b z0V!_=2bXq?< z^C8p0A^yp(D1WdeHFwlwY;FFhNp?+prjx_lvP0fkCMUc;S4E>l&(GC~k znL(}f2Qy^^$xvtXAQBzJBmf;13I#S8FaY;qH-`c%q%O zZu<3Ut#`C;@@cK5^pV!hFMC?+rq3pb}tOoe*@!k3<{-2K!Mo1D2@INIKvKbn92l5>s{SC4~I!x z4!}Sv+6XV+)j;IOAweYpIxRJaR?54k5FhNIP%KT2y5cQ@b3Jl-a3YoK^-6^@K#p@Y z3G(4Q2g0gVYLJkYb5T9`NV_kXRC*<7M#W#80s9T?tPs%ps)&%HzYzQJa=u4K;@4_S z1!QiWlzK@G9>$jIr3lj!x0bd29LzzlEZmldmlWoXu8DD>Z>50xOCO^GpinLu1X$P7eqRi>0vzVP%|Wj9MEp8` z;4HvEZrzrU7w|&qGe4|h(P_D2Fm-qfDQ!R2PMt_o<2Fh$Ig7;&TRV{|alLjmrH`{n zQryiKDyr3Lm#9e2S7cSNofM`JAeDBPz@A(M5U}lJbPS<&S3{$rXF)OAJ69Ct#BbLs z8^%-EVX&WNBd)gGE(#!3j`am;^Q0gXP3Yd6qsuLw>Re6$N8Y=Y#VZ#ZU2@Ipy;n?L zDF^9u!W6w%n)ON`ADqr&)_Wg7c_oT3pCs(?gd4E&N~cPvq~Q64hg_U;?BK8!xOVe&OK!Ko{fbWZkPpS z_8BjJF?*JkC!!A3|^D>^BLE!wLWRbrYhhNrk^L-Sw{&!h? zGRozj%?961K9>_z{VqwK_?~k*7%Ti*upaO{CX)`CN#XBY$Z)+m8U9#8f1M(x@2Oeh zjUwK>-4oUIdUd|1sJAH!dn{mVG7`V;hbGAxwS4b|=*w@rH?k>tZWG69wd#CN6&{u@ z`7U1A)t2k~DT<4MSbaB*)O0#^E*Y%N&pzyTw`$lmnax0U;OE-FoTXB!&ov*Ip=Vcq z%cV2}kcIOpYV>9aABMb_E}g){%;SLbwiSlIv@XKc5e2AhPk3#0n8-7KmrK!1@kCLBd33)}kD?7kpH>*MA zEh z;?_J^xQaI)zfx!RmVsw{2$heg5fJ3(P`h}WT@ELsVdEv0x*pea#nINRJRKRyznqZa zQHtojxJeWjlq_>9cx;aeg@z+$<@wwa5kEfS^~VcDo&hD+))?S$NfvXi1(D2dqJ3~o zC{29JL2f%uxS4lsF!61;WIN~Zef9X4KS;nM0+PwJPQf+c$lr~esVR< zLrj8Pj9-uaRI+9!Iy&?*B#P|kl)HJTP8k=21ZY3E+UB7V@ld=J9}aJj(HZD*&oct9P zI99(l67v`JC zC?Ryy9H5gVX$=u@d_r&#%f=kd)tHUhm^q`0?8qi7tqt4S$OW;bD327n|9`d9oO&|B zTv3ng$d2qt)xU&n%tp=0Ok+G(Sxai5;@S~y+g2!g=AgoyHN!Xn&F|t68#?|(~ z+vUcqpeRXElA@G+YFpN{tZ7-(!qtSNC`nP0q9jGfk(~zi2&)DtwJ-f(01uU506M_f zEJhG0jHv@ZrRi@{FpYf+-m`=*)AW#|fl!N zV`itUB<$G{vfUSaYes}c=KDi-!~((stpa+4NKa)XY+Jb?^}AkO&kOFUFetKj;Q)Pg z?RqZZsd`}9fIhzPQK_!C;eHCP%;v+!*_%#%PtDaw{k7Q?=mx%56cARbE2*G{5H zg(Ax?W#_^>NnN*{kSI>XV-MW$_8n-!-N2xb3K$!`%7(+A9&XtRbfFZ45&bai=!8DeYA)a2!Py~`5GUtpH)8((%4bn9FZ#Q%lrl6^z&X|m-ym>wEW zDX2Bp3`GR<~Q{7YJVPP6nvJNd#xmZMlv`O7+diA7H5sDMqwfA2f00 zn-d_pn#=|%lFhmWW2(NHr@}gcAC<`U>Vu3dzWL>`MiAl5fx7m@FK*vd6kC~aG7Onc z9fLo{Z;F$uZL&%s%cWy5*7HuMD%PwM7Xz~FU9c41iC1VfL!@j@JoZFGGXJci&d&o4 z!r16rYT*4d%$FH1aw-=_^l+5fLw9)1cr>oWeFOc9nz4sY1~5Z8Vk(g5^(t~pJ}P!* z&YQrOV%=Bq(8D*$4jC0 z(FkF_Bo@%&<9c-?k$VsQu>&?z1OcwDUG53jKN)?1BN+PXL8W>dAd-IqIfB`!DSVqw z9fnKrP9vqgAq5n-<OMLp=T|IZB865#RZ7_Dxo#vf1oUEs1d=v?;9U;&1{7Rbp|ZJ=_k+_{N-}_DrO00DctAm zB`fj~1h{&iE%(RB3g-&8RLytK;(2r|ye!MFg65g)!sMA7+4d6R2*u*@qqvJQ=g`qH zw;-H)3qx!e85+*>as59Z>~ghSV2ox#M#rIr}z8 zS(Y)#vNFu#jw~xPkY!m)ZpyL}%okafm9i}B$gJOFI0=1aiZxpd zh$(?#L?47<qZ7$cf?>Er>mKZ(&R7WwnzK~bU;CNy`o^D6ZTX(b7FqLc&thW3p|;9rN)Ac7ZuuLLy3&{Q zom5KDbrjHDsemH|_52eD5!$KMeijBjZrxFV7d=5A>fveT_4-+FOJ0TcaHo~4hdzSQ z7pTRP#k` zo^*vU;)fX1#H~PR;6ZV6yflah`X|r(Ad=Y@`8e}N&mWqW)8$t+c6bm6G;h?^ zqa|dsPY-e9Rii8p&;pyxnKcK#?b zjefKbe2x+6Kog94q^=N?-@t$8qdS(50}VFtNO&jSXtnQy6#SJS9jMKaM^YnRL#4i} znQ%JDga=uxpJXjDkHO(sN=O&-Df^@;caPcZ&vp|$%Lj@J$$dXbl0up3^sQycxR!}B zABtmq3}LgJC4 zW*Ba{AHoI?rvjUFpR^Bew4}vgUB3vmMDL*FVwPh?#Yd0swn8lVln`oe17gZQZwUQq zwLfC-=|)=EX7K_~-s$6pk4k;6BV9Zy`87w1`TM3&7boKJb3ML!Gy}o;%+b^{_ttPd z3BirpfX$Ku(9dM@0dG2et|CE>Bxhz`^R)5IyBc?ljnBm<=opxo%xxaQ&lHk_i^P~O zX}RV}KfPz-SQN5c{sMt>oC}O6Un0?Wkt74Q+>;{*Ge+}ZW8OUk2$3CRvB$?8ao@{pz+S-1$ew!} zdk0*o-_?c2mLtKl=a|s&F=Y5hG-7S83!puxg>^VuN^Z;LYk_gwKg#lUkTRZ^3217Q z<*zr^?xCf$fXFV%t%J#S|G*P_3n4Vw(XD%*u(oYX zP1!w$m_M{PS>>{K*1EQNjJbN}3oZk$*SFf+vR7~EBcxe;1OE$)jBjuX;bu+Nz9$M6J=U#z5=>m2g9K9C%mX(6 z1Eq{kq18TDQlfW|)92U@O>e>NjJ{s4ztz;^O;=hRyMp^dOFFbzi74)2ERAE|s{Bv` zL}5g#{$WMcv3P(_bm#?48ONQjzBu-){ic;9v{xAMX}j8;CZimyh3TJcPr575`!ByqG!227vGM1^4IJtW6*nW|{h~)Z zU!&qwdX5j^X77udSgg8r|6@x$$_<#483KLOxkshdJ`MK7r`Y817R|_i&iNp9y*^eI z0$#OI!UMpfeKRqD%&1`yA}B&4%&10X%NTHjBq>N65fJ6l%6rYlGdJgG;W6>_+rv}4zvkq~>ph&?rfy11DIFpX2^!!f(fCe9fICOR0PzcWCh6zO zkLa?}f1znxzPHHI_nfRV&>d?`bH`X@ z(LF0{anH$!nUgUSr&I#^cPnRf3e_xr+(xkIqqV>f-2AFADE0A8qt{345HAJ@G*Dom zz(9e40s{pG3Jeq&C@>K5(MSy_wJ-f(01r)I01CLYD@G6~ZK(qj@w}{~ui(b|bq&yB zj9bpDDdDXxvH@RwxVd{3~zJK&~}( z;vk~%*nK*jXi+LZ?Zh0uy}*Wh86df}dn2;E@2kM`$G2)6_?K99Z}||w$?mJjtHQT; zCwLg_Vf!U|_;Y;x6Mgdrlx*O14`fHV8Z2T|)E2wy>mHp;BL~&5n;Tl)o+nCBzdg zknSXE9G-9$KTEHvzwaE6picn%2oxGTdH&~70Nf7L38&zTkWFNbNmjf4e*nhaFrQNZ z$+qVvEMc+P|2p)*%aEbqi9E8qNCqpMSg&tZW(}YJI!A)RZD-jaM-wXb&yd{Vh8b9J z8JF1v8K%-JE(w5Kcv}+P^2Ww<%c~{;E^qe zxCko{cH#tK?v%<8GxLS7*jqQ7;s<%(*lN8# zi8pR|9tT%$Z4-IU2kVkh$mfoaxP;UBc}jdf%55v`GoTrhP%3{42^;TqW3BLNaZX(J zMEovj6d@AVWNd}Y^&q0MaAg6Uj6-O*&!@-eV;%MMa$qbLvtD1@1@0e+ljo5zEHN0B z`hEfk{;mV{{Cg{kqtWR5S+M6f-s97OH92wDa`}Hz3;h1^_)H`N636fRe@s@t$H+Vn zg90Ba&+oT~@HGTnPp$#?olfWb9in*Hk;t=wC(!%J=<-lA`I!YM&M%kC-!|$!*ZbvZ zMNauj*z9j7V0kP=yeFRI(JPh8*B(iE4?RFUk=%fLKEtJF;-T`K6Jz}MecwtX)IZ@h zKHa`uHp+>1l&YTOIk)9Y*;ms_4-0i?Cl>Z z@RoN1+y_Z|-`DAVf7Yl8dfy+&_kFdp-k;aP`~Fz)_`dJY`@TT$`{VekIa{>3(ZE6D zhMSG|eIdN>JM_LkX?9f>c6r~Iah2jl(n#Q9V~DnrAY%Ar_toSW z{0_zh+{*}#y#x*wL&wLDq4$70vBH3B6fSm?MlLf~@nQ5h!}CPc;ag*A8ygfU%k#fj z!iP^WgUGY$)HWUzkV5VDU0}fFRA5-(S|7KeIK2^Kv+qJ$g6};*hHojg*-_pw4Op+= zLJ-TX2(@vpqzqfi1A|pD!!Hz`DCqrf^TS5a4RBI~*f?3+vi%wk!x(P&f) zaOSA%r=D*v=UK>zBf3Znlde4sev{c`e)7Rc4^i-@YbfeBvAXjXxJdmIXVkS4&^Nm_ z%wZC^0e8TosOtyUZ<;lk&p0Z<8gRkuFdjVLe4(A+NaBDq;4^o)&Db~N2cP?BwCh)Sm6++Clu$%7*A9i`Uj?~F z?yJKHg|g{ARI5U_!cOIDR1n&@BF;bAAao9EdgdXb7|_LT(sS8C^$uu7^P58l7Mq0{ z7McCl6vpm>LF3HHD)25R~#3c)ab9izB<;IGK6<@ z@>rc$OE3Lu8RoIv3^}pfL>TRPpTwUeSm)oM>QkiP_u%aJPSOi*+ikX@{>LcxVgD)O^O3_?qQf1GP5B$ z@x$@)JET$i7kl8j#sG~yZnF;yl9$a0fQ~T0u14h2WlFO*4~eTziE zxd1p;antF?3D9{K3_#}+LyR|^&Ie18_bYtRnL||Ids8Z33TDWsX_zy|Sb`<`(iZ?Y zV#bntv&L0?70fe_*0h|dFnk@L-9C&wUXS93j~T<#&;aZ8Ygl;Tr($@_N-SkDl}h~^ zY>;ol=))|e#!jpjjeZ>>_ob0l@|2%ztU{jOj*f~a+Ym=4LM0QUVY9E~&HFL9HgZ~@ z$rweo`c2+I@L`Kya+R`7Je^KI8-1{pI9uZ7atXg_>s`!B$!8eTg244e`PmwFV;*=xX3p`}|XVihAU z^r&9)8Yal<5_3&)gvl-}wISKPxV-(7+mB9>L>5EfD#BqFFmx|15WiulO`~BMjEl5e zIBYOS@8V6rVaW}RR=14D?Bw(=GP{Rj8q;VNfW!b$sj$>ZhYrGm84s1s(kV{7#X`|2 zY$j&0gV-_mQA#I-T$xr72x2IeMm^8y%sD7vN-9zjWQM z6G-yRz&K3=Mop{TY9q%kUE4@{rkFOE0|jEe zP2_nd8#6E>)C6}*rJh1E?3%>;%r`pVK`1$la20hkj!xHQjL*EF4W@FzX|-Op)zq|W z5qh54)dCy&kTn;LYO59qbX^AYOgme!ngmo;U~kuDYtP&u58T8OP_0%qvna0XvczZZ zkpoquP0}{m)lp}DbX~Uh&7cU-5CMSBs8Jk3h=2$QQ3667r<=w=0})A*4iP|kA}Gzy zW{`iRc!3}%5&pj6G<+uhvb}D6Apfv}~jvAHlcLvWt351m8o;7HTd7?VaV;>30r{ahCh0-!?!`WEZBFLg;1i5Zg)w+7KXRo(kSip>rjjW_JRw9dqpF+LiqXX>Nr{8= zg=y=erX-7?qRzUB2k&7rW+6iT z8$V`r#w!ctE>2J#cX%8O7qDMNBhb}kpdyQ1cXF7WalsM(+c4w%n=>Vp0{w`rRx4*y z)8tDrGWwk@MY_VAjsk{SoL}W$+Uz%(G@_tknJ-?(H1s=!?4voa|MYUSxMIJPNi!m(xg_x1P144_6 zM)?4dL%tJF0$%7Vi~jnEff2`iM=9}F&?xd6>=J3gzNL%sqnyEa%5N%EdghxLT1*8y zPJ>%yng;|wg%=0k!NrnZRJyLX!;|A6oqQAljtFu0EcE=)*NJ|#0@q}ACZh@Ve?o?z zZ<3j!;V@-DVYSNIDpWp|$pud&1q}TGS`8|dDpOgh_*5hw-l;SKoJ@)`HJh@GstZ0< z03YvMAPk%=Q@6CY{3WOSR3sknl#|eNm{@1SL%E5Xj89F1=!pPX&}lnM7-poGO?oy2Im;Rv^EM&GgJFlY0m;_`z!BkR0^*O@e=(StJL~l41Go-b+p@ zm8bdQ{7qvqJX0}lvH}o9cM%*Tc;(C5hfeHpkg!AP~r z+0>>VtIc*gA1Nwlh-6@+Qn{18G9Np2)am4Andis>MVd|SmxcY<6E}L@29(9(r?oid zXvFBx_2jSHEgd=2hpZuAn!A}}@wtLryImVDTxtqNyTjvioKK%C%BMGh+~PWlIG(k+ z%@BS-ey$BMI^ItW&Oo!s%6|F3lE&E(Xed0ohgK%|259q^YTjYG(tlm zR_ol;NcgW)-L7X;059^Dl2xnoQrh*eJ6XDyOAU@Bj=~s~I>$P9e+$Z&&S!+m-+C+% zBpRK4s$+i(foG2*#>C-xnOL(q|1g(dD~(m}JCethD3Sq*V zboZWpGzjx~MDp}+m;+o%@(N~nILC4+K94FvYNbSXV)v(1@1n z`1z5IM(5;J+0PLK*Tc}zfVbeI;)-JqM~(&GdUvB6dTsd;Q&G<<0Ajr=7PP>GfQOzt z6@G4RG6Yu$8E_FNo9EIRo?RbOPqo8Hu+r6@=Qe^pyV(q$dRLmzgJ?eRTo1g^Ej2@z zQ^aUzpy$r%;Mr}`2VIVNfQk*O7*CJ&I4hk&u-95JV z9@;yZ<`Kf)$?)Dg327&H(B4Tjj(hLq-dnkMvT;w;W>i$PGLQTa-l2%nYX`ppECnT?L*Yc}ODGI)H}f?S=12jQ$H z_O=(ta+yUzkA;)1Blsem(UP`zZ@KZR0FO1S)^J!<^B5TpPr{FKn1T(D#S+&_`iD7; zjhZ~eL)mfZ=COQQwURhhW-X8aP6oHgi+4O8yX0BNMc`$|@^FUtrRBk|F&>MSSj*MP z%~8&2leQ+HqM($`SuAgA9s`o(yb2Q<>cC;|-I*ISWbje|*hCP*aKS+7P&jzf8MWF(=;5KD+)++YN>E0qpH6&q zFbOr>(dpDt>L>wFLfCuDN~JQ1mEF3|p@4`~YeCV0HK~>-ap@--^;UAONEK!x(g*lJ zbjLuVr8tiL3ndguDdd$-ASa6lnkp_;2tWFH+Cqv3NTf8(Pn$Q&!m`vexTORWDWW3c z5`{aw4dr#Z2S);~lczS{odKlrIGZFY#fKzx4Pf^|_px|Bu zLwxB6;daAp!KlkeYfidS=yZ z`YZ`(LY(z{@OlxFp~m8qRC{|aC@;Kagf;XWpD${=2}XD?478q?3`|EsAndw<fsA3jWifX1j{ zG(-q7LP7+D5aMvt7=VK$NjegMp)<@QOr@xxru_{|%R~uQ=0Noa8y(2s5rAX8j6IhZ zv&S*G{7(u7=TEg~Y_Y*+*|Dzc?nL+l-Avxt`u1!A@lit7-VIpB=YH6YUy%Lwtpzl& z{(`FvU2NmetoZG(e|dx)uK4wI4%Hvpw?T(H4a!$q{sHCQ5q{hj6y2$&9_ zb8&Kb*`TWWG>66p*r{(8O p%gfJB&!3#0K0Pmgubso3)${VD<>g7|r^`-H58__KR|8U0Lqqkxm-PSu literal 126695 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 diff --git a/scripts/audio_system/multiplayer_audio_3d.gd b/audio/audio_system/multiplayer_audio_3d.gd similarity index 100% rename from scripts/audio_system/multiplayer_audio_3d.gd rename to audio/audio_system/multiplayer_audio_3d.gd diff --git a/scripts/audio_system/multiplayer_audio_3d.gd.uid b/audio/audio_system/multiplayer_audio_3d.gd.uid similarity index 100% rename from scripts/audio_system/multiplayer_audio_3d.gd.uid rename to audio/audio_system/multiplayer_audio_3d.gd.uid diff --git a/scenes/gui/buy_menu/buy_button/buy_button.gd b/gui/buy_menu/buy_button/buy_button.gd similarity index 100% rename from scenes/gui/buy_menu/buy_button/buy_button.gd rename to gui/buy_menu/buy_button/buy_button.gd diff --git a/scenes/gui/buy_menu/buy_button/buy_button.gd.uid b/gui/buy_menu/buy_button/buy_button.gd.uid similarity index 100% rename from scenes/gui/buy_menu/buy_button/buy_button.gd.uid rename to gui/buy_menu/buy_button/buy_button.gd.uid diff --git a/scenes/gui/buy_menu/buy_button/buy_button.tscn b/gui/buy_menu/buy_button/buy_button.tscn similarity index 89% rename from scenes/gui/buy_menu/buy_button/buy_button.tscn rename to gui/buy_menu/buy_button/buy_button.tscn index debf4ce..6a5f424 100644 --- a/scenes/gui/buy_menu/buy_button/buy_button.tscn +++ b/gui/buy_menu/buy_button/buy_button.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=3 uid="uid://b1ej6kmbjpm78"] [ext_resource type="Texture2D" uid="uid://dnxw4x3cmu7io" path="res://icon.svg" id="1_apu4l"] -[ext_resource type="Script" uid="uid://bq32y7eee1f63" path="res://scenes/gui/buy_menu/buy_button/buy_button.gd" id="1_impj7"] +[ext_resource type="Script" uid="uid://bq32y7eee1f63" path="res://gui/buy_menu/buy_button/buy_button.gd" id="1_impj7"] [node name="BuyButton" type="Button"] anchors_preset = -1 diff --git a/scenes/gui/buy_menu/buy_menu.gd b/gui/buy_menu/buy_menu.gd similarity index 100% rename from scenes/gui/buy_menu/buy_menu.gd rename to gui/buy_menu/buy_menu.gd diff --git a/scenes/gui/buy_menu/buy_menu.gd.uid b/gui/buy_menu/buy_menu.gd.uid similarity index 100% rename from scenes/gui/buy_menu/buy_menu.gd.uid rename to gui/buy_menu/buy_menu.gd.uid diff --git a/scenes/gui/buy_menu/buy_menu.tscn b/gui/buy_menu/buy_menu.tscn similarity index 89% rename from scenes/gui/buy_menu/buy_menu.tscn rename to gui/buy_menu/buy_menu.tscn index b7a0c1a..bd77d80 100644 --- a/scenes/gui/buy_menu/buy_menu.tscn +++ b/gui/buy_menu/buy_menu.tscn @@ -1,9 +1,9 @@ [gd_scene load_steps=5 format=3 uid="uid://j5lgbg8c0pq"] -[ext_resource type="PackedScene" uid="uid://b1ej6kmbjpm78" path="res://scenes/gui/buy_menu/buy_button/buy_button.tscn" id="1_8guql"] -[ext_resource type="Script" uid="uid://dba17sgimp4j0" path="res://scenes/gui/buy_menu/buy_menu.gd" id="1_ko0fn"] +[ext_resource type="PackedScene" uid="uid://b1ej6kmbjpm78" path="res://gui/buy_menu/buy_button/buy_button.tscn" id="1_8guql"] +[ext_resource type="Script" uid="uid://dba17sgimp4j0" path="res://gui/buy_menu/buy_menu.gd" id="1_ko0fn"] [ext_resource type="Resource" uid="uid://b081hg7uxx1wu" path="res://weapons/molikman_molotov.tres" id="2_0gws3"] -[ext_resource type="Script" uid="uid://dk4diwvruvkch" path="res://scenes/gui/buy_menu/player_money_label.gd" id="2_ll0n6"] +[ext_resource type="Script" uid="uid://dk4diwvruvkch" path="res://gui/buy_menu/player_money_label.gd" id="2_ll0n6"] [node name="BuyMenu" type="ColorRect"] anchors_preset = 15 diff --git a/scenes/gui/buy_menu/player_money_label.gd b/gui/buy_menu/player_money_label.gd similarity index 100% rename from scenes/gui/buy_menu/player_money_label.gd rename to gui/buy_menu/player_money_label.gd diff --git a/scenes/gui/buy_menu/player_money_label.gd.uid b/gui/buy_menu/player_money_label.gd.uid similarity index 100% rename from scenes/gui/buy_menu/player_money_label.gd.uid rename to gui/buy_menu/player_money_label.gd.uid diff --git a/scripts/client_settings.gd b/gui/client_settings/client_settings.gd similarity index 100% rename from scripts/client_settings.gd rename to gui/client_settings/client_settings.gd diff --git a/scripts/client_settings.gd.uid b/gui/client_settings/client_settings.gd.uid similarity index 100% rename from scripts/client_settings.gd.uid rename to gui/client_settings/client_settings.gd.uid diff --git a/scenes/gui/client_settings.tscn b/gui/client_settings/client_settings.tscn similarity index 98% rename from scenes/gui/client_settings.tscn rename to gui/client_settings/client_settings.tscn index be3e36e..35c62f1 100644 --- a/scenes/gui/client_settings.tscn +++ b/gui/client_settings/client_settings.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://bv6ptrditssow"] -[ext_resource type="Script" uid="uid://ddi1alk8oyi1b" path="res://scripts/gui/client_settings_menu.gd" id="1_xqyus"] +[ext_resource type="Script" uid="uid://ddi1alk8oyi1b" path="res://gui/client_settings/client_settings_menu.gd" id="1_xqyus"] [node name="ClientSettingsMenu" type="CanvasLayer"] layer = 3 diff --git a/scripts/gui/client_settings_menu.gd b/gui/client_settings/client_settings_menu.gd similarity index 100% rename from scripts/gui/client_settings_menu.gd rename to gui/client_settings/client_settings_menu.gd diff --git a/scripts/gui/client_settings_menu.gd.uid b/gui/client_settings/client_settings_menu.gd.uid similarity index 100% rename from scripts/gui/client_settings_menu.gd.uid rename to gui/client_settings/client_settings_menu.gd.uid diff --git a/scripts/player/crosshair.gd b/gui/crosshair.gd similarity index 100% rename from scripts/player/crosshair.gd rename to gui/crosshair.gd diff --git a/scripts/player/crosshair.gd.uid b/gui/crosshair.gd.uid similarity index 100% rename from scripts/player/crosshair.gd.uid rename to gui/crosshair.gd.uid diff --git a/scripts/gui/hud/player_ammo_display.gd b/gui/hud/player_ammo_display.gd similarity index 100% rename from scripts/gui/hud/player_ammo_display.gd rename to gui/hud/player_ammo_display.gd diff --git a/scripts/gui/hud/player_ammo_display.gd.uid b/gui/hud/player_ammo_display.gd.uid similarity index 100% rename from scripts/gui/hud/player_ammo_display.gd.uid rename to gui/hud/player_ammo_display.gd.uid diff --git a/scripts/gui/hud/player_healthbar.gd b/gui/hud/player_healthbar.gd similarity index 100% rename from scripts/gui/hud/player_healthbar.gd rename to gui/hud/player_healthbar.gd diff --git a/scripts/gui/hud/player_healthbar.gd.uid b/gui/hud/player_healthbar.gd.uid similarity index 100% rename from scripts/gui/hud/player_healthbar.gd.uid rename to gui/hud/player_healthbar.gd.uid diff --git a/scripts/gui/hud/player_round_display.gd b/gui/hud/player_round_display.gd similarity index 100% rename from scripts/gui/hud/player_round_display.gd rename to gui/hud/player_round_display.gd diff --git a/scripts/gui/hud/player_round_display.gd.uid b/gui/hud/player_round_display.gd.uid similarity index 100% rename from scripts/gui/hud/player_round_display.gd.uid rename to gui/hud/player_round_display.gd.uid diff --git a/scripts/gui/hud/player_round_time.gd b/gui/hud/player_round_time.gd similarity index 100% rename from scripts/gui/hud/player_round_time.gd rename to gui/hud/player_round_time.gd diff --git a/scripts/gui/hud/player_round_time.gd.uid b/gui/hud/player_round_time.gd.uid similarity index 100% rename from scripts/gui/hud/player_round_time.gd.uid rename to gui/hud/player_round_time.gd.uid diff --git a/scripts/multiplayer/host_menu.gd b/gui/main_menu/host_menu.gd similarity index 100% rename from scripts/multiplayer/host_menu.gd rename to gui/main_menu/host_menu.gd diff --git a/scripts/multiplayer/host_menu.gd.uid b/gui/main_menu/host_menu.gd.uid similarity index 100% rename from scripts/multiplayer/host_menu.gd.uid rename to gui/main_menu/host_menu.gd.uid diff --git a/scenes/main_menu.tscn b/gui/main_menu/main_menu.tscn similarity index 98% rename from scenes/main_menu.tscn rename to gui/main_menu/main_menu.tscn index 4e135cb..3e1fccb 100644 --- a/scenes/main_menu.tscn +++ b/gui/main_menu/main_menu.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=3 uid="uid://cbtp4rvg66ba1"] -[ext_resource type="Script" uid="uid://bsyuos803g7qf" path="res://scripts/gui/main_menu_gui.gd" id="1_l6cm7"] -[ext_resource type="Script" uid="uid://dh64rv15w8ecl" path="res://scripts/multiplayer/host_menu.gd" id="2_ekxnf"] +[ext_resource type="Script" uid="uid://bsyuos803g7qf" path="res://gui/main_menu/main_menu_gui.gd" id="1_l6cm7"] +[ext_resource type="Script" uid="uid://dh64rv15w8ecl" path="res://gui/main_menu/host_menu.gd" id="2_ekxnf"] [node name="MainMenu" type="CenterContainer"] anchors_preset = 15 diff --git a/scripts/gui/main_menu_gui.gd b/gui/main_menu/main_menu_gui.gd similarity index 100% rename from scripts/gui/main_menu_gui.gd rename to gui/main_menu/main_menu_gui.gd diff --git a/scripts/gui/main_menu_gui.gd.uid b/gui/main_menu/main_menu_gui.gd.uid similarity index 100% rename from scripts/gui/main_menu_gui.gd.uid rename to gui/main_menu/main_menu_gui.gd.uid diff --git a/scripts/gui/team_choice_menu.gd b/gui/team_choice/team_choice_menu.gd similarity index 100% rename from scripts/gui/team_choice_menu.gd rename to gui/team_choice/team_choice_menu.gd diff --git a/scripts/gui/team_choice_menu.gd.uid b/gui/team_choice/team_choice_menu.gd.uid similarity index 100% rename from scripts/gui/team_choice_menu.gd.uid rename to gui/team_choice/team_choice_menu.gd.uid diff --git a/gui/team_choice/team_choice_menu.tscn b/gui/team_choice/team_choice_menu.tscn new file mode 100644 index 0000000..c01a791 --- /dev/null +++ b/gui/team_choice/team_choice_menu.tscn @@ -0,0 +1,47 @@ +[gd_scene load_steps=2 format=3 uid="uid://cmon3g1lsm3q"] + +[ext_resource type="Script" uid="uid://m8qq2eynls6n" path="res://gui/team_choice/team_choice_menu.gd" id="1_kch1g"] + +[node name="TeamChoiceMenu" type="CenterContainer"] +visible = false +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_kch1g") + +[node name="Panel" type="PanelContainer" parent="."] +layout_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="Panel"] +layout_mode = 2 + +[node name="Label" type="Label" parent="Panel/VBoxContainer"] +layout_mode = 2 +text = "Choose your team" +horizontal_alignment = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="Panel/VBoxContainer"] +layout_mode = 2 + +[node name="SpectatorButton" type="Button" parent="Panel/VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "Spectators" + +[node name="AttackButton" type="Button" parent="Panel/VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "Attackers" + +[node name="DefenceButton" type="Button" parent="Panel/VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "Defenders" + +[node name="CancelButton" type="Button" parent="Panel/VBoxContainer"] +layout_mode = 2 +text = "Cancel" + +[connection signal="pressed" from="Panel/VBoxContainer/HBoxContainer/SpectatorButton" to="." method="_on_spectator_button_pressed"] +[connection signal="pressed" from="Panel/VBoxContainer/HBoxContainer/AttackButton" to="." method="_on_attack_button_pressed"] +[connection signal="pressed" from="Panel/VBoxContainer/HBoxContainer/DefenceButton" to="." method="_on_defence_button_pressed"] +[connection signal="pressed" from="Panel/VBoxContainer/CancelButton" to="." method="_on_cancel_button_pressed"] diff --git a/levels/prototype_scene.tscn b/levels/prototype_scene.tscn index 44cb972..a4e3dd2 100644 --- a/levels/prototype_scene.tscn +++ b/levels/prototype_scene.tscn @@ -6,20 +6,20 @@ [ext_resource type="Material" uid="uid://mlha6r17v2en" path="res://materials/DarkBluemat.tres" id="5_bno23"] [ext_resource type="Material" uid="uid://duvlktlyurohd" path="res://materials/Yellowmat.tres" id="5_foctg"] [ext_resource type="Material" uid="uid://jdfticwelku4" path="res://materials/Greenmat.tres" id="6_8bje3"] -[ext_resource type="Script" uid="uid://dncldab5y4yod" path="res://scripts/item_spawner.gd" id="6_61ure"] -[ext_resource type="PackedScene" uid="uid://cxdgk74ln5xpn" path="res://scenes/weapons/droppable_bomb.tscn" id="6_bno23"] +[ext_resource type="Script" uid="uid://dncldab5y4yod" path="res://systems/item_spawner.gd" id="6_61ure"] +[ext_resource type="PackedScene" uid="uid://cxdgk74ln5xpn" path="res://weapons/bomb/droppable_bomb.tscn" id="6_bno23"] [ext_resource type="Material" uid="uid://cyej4ph6hcnou" path="res://materials/Orangemat.tres" id="6_foctg"] -[ext_resource type="Script" uid="uid://bqjv6l7hh0lix" path="res://scripts/multiplayer/spawn_system/dyn_objects_spawner.gd" id="6_oujx2"] [ext_resource type="Material" uid="uid://cdeggf10dmama" path="res://materials/Purplemat.tres" id="7_8bje3"] -[ext_resource type="Script" uid="uid://dk1gjbuydemmb" path="res://scripts/multiplayer/plant_site/plant_site.gd" id="8_oujx2"] -[ext_resource type="Script" uid="uid://b4cpux52fmx5o" path="res://scripts/multiplayer/plant_site/plant_deadzone.gd" id="9_1wlgq"] +[ext_resource type="Script" uid="uid://dk1gjbuydemmb" path="res://multiplayer/plant_site/plant_site.gd" id="8_oujx2"] +[ext_resource type="Script" uid="uid://b4cpux52fmx5o" path="res://multiplayer/plant_site/plant_deadzone.gd" id="9_1wlgq"] [ext_resource type="Material" uid="uid://c6xa4phihtya2" path="res://materials/Redmat.tres" id="9_ysk2e"] -[ext_resource type="Script" uid="uid://ypgm3aplt78m" path="res://scripts/multiplayer/spawn_system/team_spawner.gd" id="10_02ic3"] -[ext_resource type="Script" uid="uid://3i00rp8urth7" path="res://scripts/object_container.gd" id="11_02ic3"] -[ext_resource type="Script" uid="uid://bala54fa32e35" path="res://scripts/gui/hud/player_round_display.gd" id="17_wsuwo"] -[ext_resource type="Script" uid="uid://bos7nftlx8tv3" path="res://scripts/gui/hud/player_round_time.gd" id="18_0hcup"] -[ext_resource type="Script" uid="uid://m8qq2eynls6n" path="res://scripts/gui/team_choice_menu.gd" id="19_0hcup"] -[ext_resource type="PackedScene" uid="uid://j5lgbg8c0pq" path="res://scenes/gui/buy_menu/buy_menu.tscn" id="20_gcyg7"] +[ext_resource type="Script" uid="uid://ypgm3aplt78m" path="res://team_spawner.gd" id="10_02ic3"] +[ext_resource type="Script" uid="uid://3i00rp8urth7" path="res://systems/object_container.gd" id="11_02ic3"] +[ext_resource type="Script" uid="uid://xwiw2g6uc21k" path="res://multiplayer/dynamic_objects_parent.gd" id="11_gcyg7"] +[ext_resource type="Script" uid="uid://bala54fa32e35" path="res://gui/hud/player_round_display.gd" id="17_wsuwo"] +[ext_resource type="Script" uid="uid://bos7nftlx8tv3" path="res://gui/hud/player_round_time.gd" id="18_0hcup"] +[ext_resource type="PackedScene" uid="uid://cmon3g1lsm3q" path="res://gui/team_choice/team_choice_menu.tscn" id="19_gcyg7"] +[ext_resource type="PackedScene" uid="uid://j5lgbg8c0pq" path="res://gui/buy_menu/buy_menu.tscn" id="20_gcyg7"] [sub_resource type="BoxShape3D" id="BoxShape3D_ysk2e"] size = Vector3(15.324341, 0.96273804, 21.381592) @@ -289,12 +289,14 @@ spawn_path = NodePath("..") [node name="DynamicObjectsContainer" type="Node3D" parent="." node_paths=PackedStringArray("exlusion_list")] script = ExtResource("11_02ic3") -exlusion_list = [NodePath("MultiplayerSpawner"), NodePath("Bomb")] +exlusion_list = [NodePath("MultiplayerSpawner"), NodePath("Bomb"), NodePath("Parenter")] [node name="MultiplayerSpawner" type="MultiplayerSpawner" parent="DynamicObjectsContainer"] -_spawnable_scenes = PackedStringArray("uid://cxdgk74ln5xpn", "uid://dgfqppi21c2u0", "uid://l4t1mflutm3t") +_spawnable_scenes = PackedStringArray("uid://cxdgk74ln5xpn", "uid://l4t1mflutm3t", "uid://b6qahd6q60js7") spawn_path = NodePath("..") -script = ExtResource("6_oujx2") + +[node name="Parenter" type="Node" parent="DynamicObjectsContainer"] +script = ExtResource("11_gcyg7") [node name="Bomb" type="Node3D" parent="DynamicObjectsContainer"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -28.858309, 1.4657042, 12.873563) @@ -375,49 +377,7 @@ script = ExtResource("18_0hcup") layout_mode = 2 script = ExtResource("17_wsuwo") -[node name="CenterContainer" type="CenterContainer" parent="CanvasLayer"] -visible = false -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -script = ExtResource("19_0hcup") - -[node name="Panel" type="PanelContainer" parent="CanvasLayer/CenterContainer"] -layout_mode = 2 - -[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer/CenterContainer/Panel"] -layout_mode = 2 - -[node name="Label" type="Label" parent="CanvasLayer/CenterContainer/Panel/VBoxContainer"] -layout_mode = 2 -text = "Choose your team" -horizontal_alignment = 1 - -[node name="HBoxContainer" type="HBoxContainer" parent="CanvasLayer/CenterContainer/Panel/VBoxContainer"] -layout_mode = 2 - -[node name="SpectatorButton" type="Button" parent="CanvasLayer/CenterContainer/Panel/VBoxContainer/HBoxContainer"] -layout_mode = 2 -text = "Spectators" - -[node name="AttackButton" type="Button" parent="CanvasLayer/CenterContainer/Panel/VBoxContainer/HBoxContainer"] -layout_mode = 2 -text = "Attackers" - -[node name="DefenceButton" type="Button" parent="CanvasLayer/CenterContainer/Panel/VBoxContainer/HBoxContainer"] -layout_mode = 2 -text = "Defenders" - -[node name="CancelButton" type="Button" parent="CanvasLayer/CenterContainer/Panel/VBoxContainer"] -layout_mode = 2 -text = "Cancel" +[node name="TeamChoiceMenu" parent="CanvasLayer" instance=ExtResource("19_gcyg7")] [node name="BuyMenu" parent="CanvasLayer" instance=ExtResource("20_gcyg7")] visible = false - -[connection signal="pressed" from="CanvasLayer/CenterContainer/Panel/VBoxContainer/HBoxContainer/SpectatorButton" to="CanvasLayer/CenterContainer" method="_on_spectator_button_pressed"] -[connection signal="pressed" from="CanvasLayer/CenterContainer/Panel/VBoxContainer/HBoxContainer/AttackButton" to="CanvasLayer/CenterContainer" method="_on_attack_button_pressed"] -[connection signal="pressed" from="CanvasLayer/CenterContainer/Panel/VBoxContainer/HBoxContainer/DefenceButton" to="CanvasLayer/CenterContainer" method="_on_defence_button_pressed"] -[connection signal="pressed" from="CanvasLayer/CenterContainer/Panel/VBoxContainer/CancelButton" to="CanvasLayer/CenterContainer" method="_on_cancel_button_pressed"] diff --git a/levels/split.tscn b/levels/split.tscn index 03b1c4f..dcb525a 100644 --- a/levels/split.tscn +++ b/levels/split.tscn @@ -2,11 +2,11 @@ [ext_resource type="Environment" uid="uid://ybeuqwdb504c" path="res://environments/split_environment.tres" id="1_muj2s"] [ext_resource type="Material" uid="uid://bx3f5vx71ynh5" path="res://materials/Graymat.tres" id="4_mj4b4"] -[ext_resource type="Script" uid="uid://3i00rp8urth7" path="res://scripts/object_container.gd" id="9_klida"] -[ext_resource type="Script" uid="uid://ypgm3aplt78m" path="res://scripts/multiplayer/team_spawner.gd" id="10_n3y50"] -[ext_resource type="Script" uid="uid://bqjv6l7hh0lix" path="res://scripts/multiplayer/spawn_system/dyn_objects_spawner.gd" id="11_ydk8w"] -[ext_resource type="Script" uid="uid://dncldab5y4yod" path="res://scripts/item_spawner.gd" id="12_kry5j"] -[ext_resource type="PackedScene" uid="uid://cxdgk74ln5xpn" path="res://scenes/weapons/droppable_bomb.tscn" id="13_hy0sx"] +[ext_resource type="Script" uid="uid://3i00rp8urth7" path="res://systems/object_container.gd" id="9_klida"] +[ext_resource type="Script" uid="uid://ypgm3aplt78m" path="res://team_spawner.gd" id="10_n3y50"] +[ext_resource type="Script" path="res://multiplayer/spawn_system/dyn_objects_spawner.gd" id="11_ydk8w"] +[ext_resource type="Script" uid="uid://dncldab5y4yod" path="res://systems/item_spawner.gd" id="12_kry5j"] +[ext_resource type="PackedScene" uid="uid://cxdgk74ln5xpn" path="res://weapons/bomb/droppable_bomb.tscn" id="13_hy0sx"] [node name="PrototypeScene" type="Node3D"] diff --git a/multiplayer/dynamic_objects_parent.gd b/multiplayer/dynamic_objects_parent.gd new file mode 100644 index 0000000..78bc3a6 --- /dev/null +++ b/multiplayer/dynamic_objects_parent.gd @@ -0,0 +1,6 @@ +extends Node + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + Session.dynamic_objects_parent = get_parent() diff --git a/multiplayer/dynamic_objects_parent.gd.uid b/multiplayer/dynamic_objects_parent.gd.uid new file mode 100644 index 0000000..a968d43 --- /dev/null +++ b/multiplayer/dynamic_objects_parent.gd.uid @@ -0,0 +1 @@ +uid://xwiw2g6uc21k diff --git a/scripts/multiplayer/level_container.gd b/multiplayer/level_container.gd similarity index 100% rename from scripts/multiplayer/level_container.gd rename to multiplayer/level_container.gd diff --git a/scripts/multiplayer/level_container.gd.uid b/multiplayer/level_container.gd.uid similarity index 100% rename from scripts/multiplayer/level_container.gd.uid rename to multiplayer/level_container.gd.uid diff --git a/scripts/multiplayer/lobby.gd b/multiplayer/lobby.gd similarity index 100% rename from scripts/multiplayer/lobby.gd rename to multiplayer/lobby.gd diff --git a/scripts/multiplayer/lobby.gd.uid b/multiplayer/lobby.gd.uid similarity index 100% rename from scripts/multiplayer/lobby.gd.uid rename to multiplayer/lobby.gd.uid diff --git a/scripts/multiplayer/own_visibility_toggle.gd b/multiplayer/own_visibility_toggle.gd similarity index 100% rename from scripts/multiplayer/own_visibility_toggle.gd rename to multiplayer/own_visibility_toggle.gd diff --git a/scripts/multiplayer/own_visibility_toggle.gd.uid b/multiplayer/own_visibility_toggle.gd.uid similarity index 100% rename from scripts/multiplayer/own_visibility_toggle.gd.uid rename to multiplayer/own_visibility_toggle.gd.uid diff --git a/scripts/multiplayer/plant_site/plant_deadzone.gd b/multiplayer/plant_site/plant_deadzone.gd similarity index 100% rename from scripts/multiplayer/plant_site/plant_deadzone.gd rename to multiplayer/plant_site/plant_deadzone.gd diff --git a/scripts/multiplayer/plant_site/plant_deadzone.gd.uid b/multiplayer/plant_site/plant_deadzone.gd.uid similarity index 100% rename from scripts/multiplayer/plant_site/plant_deadzone.gd.uid rename to multiplayer/plant_site/plant_deadzone.gd.uid diff --git a/scripts/multiplayer/plant_site/plant_site.gd b/multiplayer/plant_site/plant_site.gd similarity index 100% rename from scripts/multiplayer/plant_site/plant_site.gd rename to multiplayer/plant_site/plant_site.gd diff --git a/scripts/multiplayer/plant_site/plant_site.gd.uid b/multiplayer/plant_site/plant_site.gd.uid similarity index 100% rename from scripts/multiplayer/plant_site/plant_site.gd.uid rename to multiplayer/plant_site/plant_site.gd.uid diff --git a/scripts/multiplayer/session.gd b/multiplayer/session.gd similarity index 92% rename from scripts/multiplayer/session.gd rename to multiplayer/session.gd index c4b575f..8aa096d 100644 --- a/scripts/multiplayer/session.gd +++ b/multiplayer/session.gd @@ -31,27 +31,25 @@ signal player_stopped_interacting(id: int) var player_nodes: Dictionary[int,Player] = {} var player_data: Dictionary[int,Dictionary] = {} -var object_containers: Array[ObjectContainer] -var dynamic_objects_spawner: MultiplayerSpawner +var dynamic_objects_parent: Node3D +var object_containers: Array[ObjectContainer] var plants: Array[PlantSite] var plant_deadzones: Dictionary[StringName, Area3D] +var session_started_flag: bool = false +var round_state: ROUND_STATES var current_round: int = 0 var attacker_score: int = 0 var defender_score: int = 0 var attackers_alive: int = 0 var defenders_alive: int = 0 +var reference_round_time: float var bomb_timer: Timer var round_timer: Timer var buy_timer: Timer -var round_state: ROUND_STATES -var session_started_flag: bool = false - -var reference_round_time: float - func _ready() -> void: if multiplayer.is_server() == false: return @@ -198,9 +196,10 @@ func end_session() -> void: session_started_flag = false - dynamic_objects_spawner = null plants = [] plant_deadzones = {} + + dynamic_objects_parent = null func quit_session() -> void: if multiplayer.is_server(): @@ -307,30 +306,6 @@ func add_dead(team: int): func is_server_request() -> bool: return multiplayer.is_server() or multiplayer.get_remote_sender_id() == 1 -## Spawns dynamic object at game scene [br] -## Dictionary keys: [br] -## (Required) scene - path/uuid to scene [br] -## (Optional) position - position to spawn [br] -## (Optional) impulse - impulse to apply [br] -## (Optional but required for each other) [br] -## ammo, remaining_ammo, slot - data for dropped weapon [br] -## for more, see dyn_objects_spawner.gd -func spawn(data: Dictionary) -> void: - if multiplayer.is_server() == false: - return - - var object = dynamic_objects_spawner.spawn(data) - - if data.has("position"): - object.global_position = data.position - -func despawn(path: NodePath) -> void: - if multiplayer.is_server() == false: - printerr(str(multiplayer.get_remote_sender_id())+" tried to despawn internally on "+str(multiplayer.get_unique_id())) - return - - get_node(path).queue_free() - func shoot(id:int , damage: int, distance: float) -> void: if multiplayer.is_server() == false: return diff --git a/scripts/multiplayer/session.gd.uid b/multiplayer/session.gd.uid similarity index 100% rename from scripts/multiplayer/session.gd.uid rename to multiplayer/session.gd.uid diff --git a/project.godot b/project.godot index 4f12e8c..d35f188 100644 --- a/project.godot +++ b/project.godot @@ -20,12 +20,12 @@ config/icon="res://icon.svg" [autoload] -PlayerGlobal="*res://scripts/player/player_global.gd" -Lobby="*res://scripts/multiplayer/lobby.gd" -Session="*res://scripts/multiplayer/session.gd" -ClientSettings="*res://scripts/client_settings.gd" -Registry="*res://scripts/registry.gd" -ClientSettingsMenu="res://scenes/gui/client_settings.tscn" +PlayerGlobal="*res://systems/player/player_global.gd" +Lobby="*res://multiplayer/lobby.gd" +Session="*res://multiplayer/session.gd" +ClientSettings="*res://gui/client_settings/client_settings.gd" +ClientSettingsMenu="res://gui/client_settings/client_settings.tscn" +Registry="*res://systems/registry.gd" [display] diff --git a/scenes/game.tscn b/scenes/game.tscn index 011867b..dd4c8ff 100644 --- a/scenes/game.tscn +++ b/scenes/game.tscn @@ -1,8 +1,8 @@ [gd_scene load_steps=4 format=3 uid="uid://dstie24qkbc86"] -[ext_resource type="PackedScene" uid="uid://bv6ptrditssow" path="res://scenes/gui/client_settings.tscn" id="1_yqjtg"] -[ext_resource type="PackedScene" uid="uid://cbtp4rvg66ba1" path="res://scenes/main_menu.tscn" id="2_lnu2h"] -[ext_resource type="Script" uid="uid://dj4mlrime72hx" path="res://scripts/multiplayer/level_container.gd" id="3_lnu2h"] +[ext_resource type="PackedScene" uid="uid://bv6ptrditssow" path="res://gui/client_settings/client_settings.tscn" id="1_yqjtg"] +[ext_resource type="PackedScene" uid="uid://cbtp4rvg66ba1" path="res://gui/main_menu/main_menu.tscn" id="2_lnu2h"] +[ext_resource type="Script" uid="uid://dj4mlrime72hx" path="res://multiplayer/level_container.gd" id="3_lnu2h"] [node name="Game" type="Node"] diff --git a/scenes/molikman.tscn b/scenes/molikman.tscn index 1e96fae..d034709 100644 --- a/scenes/molikman.tscn +++ b/scenes/molikman.tscn @@ -1,41 +1,41 @@ [gd_scene load_steps=82 format=4 uid="uid://dpsr6ug3pkb40"] -[ext_resource type="Script" uid="uid://3dphlay25fih" path="res://scripts/player/player.gd" id="1_g2els"] -[ext_resource type="Script" uid="uid://dalwlndejfdhm" path="res://scripts/player/crosshair.gd" id="3_dqkch"] -[ext_resource type="Script" uid="uid://bjhbdh6xsjgnn" path="res://scripts/player/player_camera.gd" id="3_qhqgy"] -[ext_resource type="Script" uid="uid://bmecgup3kcua7" path="res://scripts/weapon_system/weapon_system.gd" id="4_qlg0r"] -[ext_resource type="Script" uid="uid://dd5mp72dq43v6" path="res://scripts/multiplayer/own_visibility_toggle.gd" id="4_smehm"] +[ext_resource type="Script" uid="uid://3dphlay25fih" path="res://systems/player/player.gd" id="1_g2els"] +[ext_resource type="Script" uid="uid://dalwlndejfdhm" path="res://gui/crosshair.gd" id="3_dqkch"] +[ext_resource type="Script" uid="uid://bjhbdh6xsjgnn" path="res://systems/player/player_camera.gd" id="3_qhqgy"] +[ext_resource type="Script" uid="uid://bmecgup3kcua7" path="res://systems/weapon_system/weapon_system.gd" id="4_qlg0r"] +[ext_resource type="Script" uid="uid://dd5mp72dq43v6" path="res://multiplayer/own_visibility_toggle.gd" id="4_smehm"] [ext_resource type="Texture2D" uid="uid://pdepam77xqnq" path="res://models/characters/viewmodels/molikman_hands_tex_knife.png" id="5_4whvg"] [ext_resource type="Texture2D" uid="uid://mjmyeeb7m7yy" path="res://models/characters/viewmodels/molikman_hands_tex_sp_albedo.png" id="5_j3w78"] [ext_resource type="Texture2D" uid="uid://cmpn3gco5t5p2" path="res://models/characters/viewmodels/molikman_hands_tex_sp_roughness.png" id="6_gifnh"] -[ext_resource type="Script" uid="uid://5gwpjiswnegn" path="res://scripts/player/collision_team_updater.gd" id="7_a8ls1"] -[ext_resource type="Script" uid="uid://7gmgcaxfh8sb" path="res://scripts/debug/property_shower.gd" id="7_oprun"] +[ext_resource type="Script" uid="uid://5gwpjiswnegn" path="res://systems/player/collision_team_updater.gd" id="7_a8ls1"] +[ext_resource type="Script" uid="uid://7gmgcaxfh8sb" path="res://systems/debug/property_shower.gd" id="7_oprun"] [ext_resource type="Texture2D" uid="uid://twxsiwqgu1dy" path="res://models/characters/viewmodels/molikman_hands_tex_bomb.png" id="7_pa2rf"] -[ext_resource type="Script" uid="uid://3777rkbebgjm" path="res://scripts/state_machine/machine.gd" id="8_f1ej7"] -[ext_resource type="Script" uid="uid://bl8gfrrc512q2" path="res://scripts/player/dead_player_spectator.gd" id="8_rwwcc"] +[ext_resource type="Script" uid="uid://3777rkbebgjm" path="res://systems/state_machine/machine.gd" id="8_f1ej7"] +[ext_resource type="Script" uid="uid://bl8gfrrc512q2" path="res://systems/player/dead_player_spectator.gd" id="8_rwwcc"] [ext_resource type="Animation" uid="uid://bd7i1oux2k74q" path="res://animations/baked_bomb_plant.res" id="9_b2eak"] -[ext_resource type="Script" uid="uid://bv8sgx78s8hwn" path="res://scripts/player/states/crouching.gd" id="9_oprun"] -[ext_resource type="Script" uid="uid://dmy6ahci16los" path="res://scripts/debug/inventory_preview.gd" id="9_ownlk"] -[ext_resource type="Script" uid="uid://u0e2b2mvij1k" path="res://scripts/player/states/standing.gd" id="10_a8ls1"] -[ext_resource type="Script" uid="uid://vmhlmhd6gjx6" path="res://scripts/gui/hud/player_healthbar.gd" id="11_42l2h"] -[ext_resource type="Script" uid="uid://cwasvwhm5yg0o" path="res://scripts/player/states/walk.gd" id="11_qfm1y"] -[ext_resource type="Script" uid="uid://cq4i0afwesdm3" path="res://scripts/player/states/falling.gd" id="12_fulsm"] -[ext_resource type="Script" uid="uid://gan0amqbhi4i" path="res://scripts/gui/hud/player_ammo_display.gd" id="12_iortg"] +[ext_resource type="Script" uid="uid://bv8sgx78s8hwn" path="res://systems/player/states/crouching.gd" id="9_oprun"] +[ext_resource type="Script" uid="uid://dmy6ahci16los" path="res://systems/debug/inventory_preview.gd" id="9_ownlk"] +[ext_resource type="Script" uid="uid://u0e2b2mvij1k" path="res://systems/player/states/standing.gd" id="10_a8ls1"] +[ext_resource type="Script" uid="uid://vmhlmhd6gjx6" path="res://gui/hud/player_healthbar.gd" id="11_42l2h"] +[ext_resource type="Script" uid="uid://cwasvwhm5yg0o" path="res://systems/player/states/walk.gd" id="11_qfm1y"] +[ext_resource type="Script" uid="uid://cq4i0afwesdm3" path="res://systems/player/states/falling.gd" id="12_fulsm"] +[ext_resource type="Script" uid="uid://gan0amqbhi4i" path="res://gui/hud/player_ammo_display.gd" id="12_iortg"] [ext_resource type="AudioStream" uid="uid://bd4iofirvmiu6" path="res://audio/step_wood.ogg" id="16_fbysy"] -[ext_resource type="Script" uid="uid://da0xv360va3b3" path="res://scripts/audio_system/multiplayer_audio_3d.gd" id="17_0cqlf"] -[ext_resource type="Script" uid="uid://xsgfbuyje35p" path="res://scripts/player/player_pickup.gd" id="17_fjvrb"] -[ext_resource type="Script" uid="uid://doevvmbvhlig8" path="res://scripts/weapon_system/starting_weapon_spawner.gd" id="17_ownlk"] +[ext_resource type="Script" uid="uid://da0xv360va3b3" path="res://audio/audio_system/multiplayer_audio_3d.gd" id="17_0cqlf"] +[ext_resource type="Script" uid="uid://xsgfbuyje35p" path="res://systems/player/player_pickup.gd" id="17_fjvrb"] +[ext_resource type="Script" uid="uid://doevvmbvhlig8" path="res://systems/weapon_system/starting_weapon_spawner.gd" id="17_ownlk"] [ext_resource type="AudioStream" uid="uid://cdf76gyi58rrd" path="res://audio/land_wood.ogg" id="18_0cqlf"] -[ext_resource type="Script" uid="uid://bs4y647h5rdfr" path="res://scripts/player/player_movement.gd" id="19_70eug"] +[ext_resource type="Script" uid="uid://bs4y647h5rdfr" path="res://systems/player/player_movement.gd" id="19_70eug"] [ext_resource type="AudioStream" uid="uid://cc2mp4y3bkpgp" path="res://audio/plant.ogg" id="19_nquoi"] -[ext_resource type="Script" uid="uid://tb140f8fweug" path="res://scripts/player/states/death.gd" id="19_rwwcc"] +[ext_resource type="Script" uid="uid://tb140f8fweug" path="res://systems/player/states/death.gd" id="19_rwwcc"] [ext_resource type="AudioStream" uid="uid://c2y8wd427mmdw" path="res://audio/shoot.ogg" id="20_moxwy"] [ext_resource type="AudioStream" uid="uid://bixhakxpo8epv" path="res://audio/test_damaged.ogg" id="23_b2eak"] -[ext_resource type="Script" uid="uid://b2djbdh05pbcn" path="res://scripts/player/team_color_switcher.gd" id="25_1mtds"] +[ext_resource type="Script" uid="uid://b2djbdh05pbcn" path="res://systems/player/team_color_switcher.gd" id="25_1mtds"] [ext_resource type="Material" uid="uid://cjb0h3of85nc2" path="res://materials/players/molikman/mat_Molikman.tres" id="26_r2jxp"] [ext_resource type="Texture2D" uid="uid://15mf4452fse0" path="res://textures/players/molikman/molikman_ingame_Molikman_blue.png" id="27_j3w78"] -[ext_resource type="Script" uid="uid://dsp1sq46c5i3y" path="res://scripts/player/player_interaction.gd" id="37_5amik"] -[ext_resource type="Script" uid="uid://dfvnx8f1v6m5g" path="res://scripts/multiplayer/player_input.gd" id="37_b2eak"] +[ext_resource type="Script" uid="uid://dsp1sq46c5i3y" path="res://systems/player/player_interaction.gd" id="37_5amik"] +[ext_resource type="Script" uid="uid://dfvnx8f1v6m5g" path="res://systems/player/player_input.gd" id="37_b2eak"] [sub_resource type="ArrayMesh" id="ArrayMesh_lot4n"] _surfaces = [{ @@ -8141,167 +8141,167 @@ bones/1/parent = 0 bones/1/rest = Transform3D(-0.967654, 0.25016752, 0.0325744, -0.25158498, -0.96648616, -0.05108291, 0.018703416, -0.057625845, 0.998163, 0.26421797, 0.773799, 4.559311e-08) bones/1/enabled = true bones/1/position = Vector3(0.264218, 0.773799, 7.5726156e-08) -bones/1/rotation = Quaternion(0.25656375, -0.04702925, 0.90831447, -0.32699883) +bones/1/rotation = Quaternion(-0.11607456, -0.007566696, 0.95669395, -0.26684496) bones/1/scale = Vector3(0.9999995, 1, 0.99999994) bones/2/name = "Forearm.L" bones/2/parent = 1 bones/2/rest = Transform3D(0.9995757, 0.013401157, 0.025863314, -0.011816048, 0.9980985, -0.060496498, -0.026624857, 0.060165223, 0.9978333, -1.3533281e-08, 0.4103367, 9.313226e-10) bones/2/enabled = true bones/2/position = Vector3(-1.3533281e-08, 0.4103367, 9.313226e-10) -bones/2/rotation = Quaternion(0.7044763, 0.00911981, -0.14722896, 0.6942288) +bones/2/rotation = Quaternion(0.35293797, 0.012252082, -0.073760726, 0.9326543) bones/2/scale = Vector3(1, 1, 1) bones/3/name = "Wrist.L" bones/3/parent = 2 bones/3/rest = Transform3D(-0.9710889, 0.23862918, 0.0065318705, 0.2375265, 0.96860886, -0.07333562, -0.023826849, -0.069663905, -0.9972859, 1.2121745e-08, 0.40612826, -7.421477e-10) bones/3/enabled = true bones/3/position = Vector3(1.2121745e-08, 0.40612826, -7.421477e-10) -bones/3/rotation = Quaternion(0.15562417, 0.961473, 0.016216002, 0.22602618) +bones/3/rotation = Quaternion(0.1121526, 0.9382349, -0.23010647, 0.23278317) bones/3/scale = Vector3(1, 1, 1) bones/4/name = "ThumbU.L" bones/4/parent = 3 bones/4/rest = Transform3D(0.9771098, -0.21273556, 7.7299774e-08, 0.2122333, 0.97480285, 0.068675034, -0.014609697, -0.06710303, 0.99763906, -0.0045400136, 0.06477452, -0.046769787) bones/4/enabled = true bones/4/position = Vector3(-0.0045400136, 0.06477452, -0.046769787) -bones/4/rotation = Quaternion(-0.034160614, 0.0036756974, 0.10691859, 0.993674) +bones/4/rotation = Quaternion(-0.18413022, 0.109042466, -0.01852451, 0.97665894) bones/4/scale = Vector3(1, 0.99999994, 1) bones/5/name = "ThumbM.L" bones/5/parent = 4 bones/5/rest = Transform3D(0.96273476, -0.2702871, -0.009302501, 0.270358, 0.96273106, 0.0074529527, 0.0069413693, -0.009690224, 0.9999289, -9.109499e-09, 0.050440647, -1.0863523e-09) bones/5/enabled = true bones/5/position = Vector3(-9.109499e-09, 0.050440647, -1.0863523e-09) -bones/5/rotation = Quaternion(-0.0043263314, -0.0040993784, 0.13643973, 0.9906305) +bones/5/rotation = Quaternion(-0.003382863, -0.0049069775, -0.07181848, 0.9973999) bones/5/scale = Vector3(0.9999999, 1, 0.99999994) bones/6/name = "ThumbD.L" bones/6/parent = 5 bones/6/rest = Transform3D(0.9935268, -0.11359587, 0.00059893046, 0.11359593, 0.99347246, -0.01041187, 0.0005877246, 0.010412509, 0.9999456, -7.9744495e-09, 0.031673077, -2.8667273e-09) bones/6/enabled = true bones/6/position = Vector3(-7.9744495e-09, 0.031673077, -2.8667273e-09) -bones/6/rotation = Quaternion(0.005214611, 2.8070995e-06, 0.05689102, 0.9983668) +bones/6/rotation = Quaternion(0.004960197, 0.0016089659, -0.25340638, 0.96734595) bones/6/scale = Vector3(0.99999994, 1, 0.99999994) bones/7/name = "IndexU.L" bones/7/parent = 3 bones/7/rest = Transform3D(0.9800801, -0.19626929, -0.030354138, 0.19836761, 0.95998544, 0.19768214, -0.009659407, -0.19976562, 0.97979605, 0.04529645, 0.07181831, -0.03615555) bones/7/enabled = true bones/7/position = Vector3(0.04529645, 0.07181831, -0.03615555) -bones/7/rotation = Quaternion(-0.1003725, -0.005226302, 0.09966263, 0.98993206) +bones/7/rotation = Quaternion(-0.100372516, -0.0052263015, 0.09966263, 0.98993206) bones/7/scale = Vector3(1, 1, 0.99999994) bones/8/name = "IndexM.L" bones/8/parent = 7 bones/8/rest = Transform3D(0.9323135, -0.3615566, -0.008257606, 0.36068276, 0.9312451, -0.05187074, 0.026444064, 0.045381427, 0.99861956, 2.4359906e-08, 0.078790486, 4.656613e-10) bones/8/enabled = true bones/8/position = Vector3(2.4359906e-08, 0.078790486, 4.656613e-10) -bones/8/rotation = Quaternion(0.024743048, -0.008828851, 0.18375325, 0.98262125) +bones/8/rotation = Quaternion(0.02378056, -0.011164779, 0.27729166, 0.96042657) bones/8/scale = Vector3(0.9999999, 1, 0.9999999) bones/9/name = "IndexD.L" bones/9/parent = 8 bones/9/rest = Transform3D(0.99988145, 0.015218651, -0.0023559656, -0.015326478, 0.99832255, -0.055830937, 0.001502342, 0.055860423, 0.99843746, -1.967419e-08, 0.060257126, -9.313226e-10) bones/9/enabled = true bones/9/position = Vector3(-1.967419e-08, 0.060257126, -9.313226e-10) -bones/9/rotation = Quaternion(0.027934574, -0.0009649883, -0.0076394607, 0.9995801) +bones/9/rotation = Quaternion(0.024683425, -0.013114907, 0.43138972, 0.9017327) bones/9/scale = Vector3(1, 0.99999994, 1) bones/10/name = "MiddleU.L" bones/10/parent = 3 bones/10/rest = Transform3D(0.995789, -0.058257025, -0.070783034, 0.065396525, 0.9925152, 0.10313419, 0.064244956, -0.10732886, 0.99214566, 0.0423781, 0.07765784, -0.01126304) bones/10/enabled = true bones/10/position = Vector3(0.0423781, 0.07765784, -0.01126304) -bones/10/rotation = Quaternion(-0.05274483, -0.0338398, 0.030989205, 0.9975533) +bones/10/rotation = Quaternion(-0.052744843, -0.033839792, 0.030989215, 0.9975533) bones/10/scale = Vector3(0.99999994, 0.9999999, 0.99999994) bones/11/name = "MiddleM.L" bones/11/parent = 10 bones/11/rest = Transform3D(0.86401427, -0.5034334, 0.005847616, 0.50168175, 0.85991454, -0.09414042, 0.042364985, 0.0842723, 0.99554175, -6.426126e-08, 0.07325909, 8.731149e-10) bones/11/enabled = true bones/11/position = Vector3(-6.426126e-08, 0.07325909, 8.731149e-10) -bones/11/rotation = Quaternion(0.046254627, -0.009467352, 0.26058254, 0.96429646) +bones/11/rotation = Quaternion(0.045131322, -0.013866683, 0.35200542, 0.9348064) bones/11/scale = Vector3(1, 1, 0.99999994) bones/12/name = "MiddleD.L" bones/12/parent = 11 bones/12/rest = Transform3D(0.9998987, -0.014212552, -0.00084086665, 0.014225133, 0.99974453, 0.017563164, 0.0005910344, -0.017573344, 0.99984545, -3.655441e-08, 0.064242914, -3.259629e-09) bones/12/enabled = true bones/12/position = Vector3(-3.655441e-08, 0.064242914, -3.259629e-09) -bones/12/rotation = Quaternion(-0.00878469, -0.00035800118, 0.0071099484, 0.9999361) +bones/12/rotation = Quaternion(-0.008052284, 0.0035297836, 0.44480184, 0.89558583) bones/12/scale = Vector3(1, 0.99999994, 1) bones/13/name = "RingU.L" bones/13/parent = 3 bones/13/rest = Transform3D(0.9704054, 0.03888444, -0.23833017, -0.02366867, 0.9975139, 0.06637663, 0.2403187, -0.05877129, 0.9689131, 0.033461113, 0.07149333, 0.017992377) bones/13/enabled = true bones/13/position = Vector3(0.033461113, 0.07149333, 0.017992377) -bones/13/rotation = Quaternion(-0.03153699, -0.12061845, -0.015763242, 0.9920727) +bones/13/rotation = Quaternion(-0.03153701, -0.12061846, -0.015763242, 0.9920727) bones/13/scale = Vector3(0.99999994, 1, 0.9999998) bones/14/name = "RingM.L" bones/14/parent = 13 bones/14/rest = Transform3D(0.8251062, -0.5639382, -0.034260202, 0.5524452, 0.81802005, -0.16014954, 0.11833996, 0.11321349, 0.9864982, 1.6880222e-08, 0.07553467, 6.165976e-09) bones/14/enabled = true bones/14/position = Vector3(1.6880222e-08, 0.07553467, 6.165976e-09) -bones/14/rotation = Quaternion(0.07174287, -0.040049206, 0.29298976, 0.9525786) +bones/14/rotation = Quaternion(0.067564145, -0.04675546, 0.38313726, 0.9200298) bones/14/scale = Vector3(1.0000001, 1.0000001, 1.0000001) bones/15/name = "RingD.L" bones/15/parent = 14 bones/15/rest = Transform3D(0.99991727, -0.012864361, 0.00015441107, 0.012864626, 0.999672, -0.022144126, 0.00013050961, 0.022144279, 0.9997547, 1.8626451e-08, 0.064691424, -4.656613e-09) bones/15/enabled = true bones/15/position = Vector3(1.8626451e-08, 0.064691424, -4.656613e-09) -bones/15/rotation = Quaternion(0.011073017, 5.9979952e-06, 0.0064327978, 0.9999181) +bones/15/rotation = Quaternion(0.009954605, -0.0048495512, 0.44418532, 0.89586663) bones/15/scale = Vector3(1, 0.99999994, 0.99999994) bones/16/name = "LittleU.L" bones/16/parent = 3 bones/16/rest = Transform3D(0.9178412, -0.18039086, -0.35359105, 0.15868124, 0.98324484, -0.089720085, 0.3638513, 0.026240522, 0.93108726, 0.03628368, 0.082845636, 0.04032454) bones/16/enabled = true bones/16/position = Vector3(0.03628368, 0.082845636, 0.04032454) -bones/16/rotation = Quaternion(0.02961815, -0.183246, 0.08660432, 0.9787969) +bones/16/rotation = Quaternion(0.029618153, -0.18324603, 0.0866043, 0.9787969) bones/16/scale = Vector3(0.99999994, 0.9999999, 0.9999999) bones/17/name = "LittleM.L" bones/17/parent = 16 bones/17/rest = Transform3D(0.92672586, -0.36745474, -0.07846127, 0.35205162, 0.9221317, -0.16041435, 0.13129665, 0.12103772, 0.9839263, -2.0954758e-09, 0.061574344, -4.1909516e-09) bones/17/enabled = true bones/17/position = Vector3(-2.0954758e-09, 0.061574344, -4.1909516e-09) -bones/17/rotation = Quaternion(0.07188154, -0.05357118, 0.18375853, 0.97887486) +bones/17/rotation = Quaternion(0.066403255, -0.06022823, 0.27693692, 0.95669705) bones/17/scale = Vector3(1, 1, 0.99999994) bones/18/name = "LittleD.L" bones/18/parent = 17 bones/18/rest = Transform3D(0.9951905, -0.09795637, -0.0007189751, 0.09795622, 0.99507964, 0.014866696, -0.00074085005, -0.014865619, 0.9998894, 1.4901161e-08, 0.035935525, -1.7695129e-08) bones/18/enabled = true bones/18/position = Vector3(1.4901161e-08, 0.035935525, -1.7695129e-08) -bones/18/rotation = Quaternion(-0.0074422434, 5.438985e-06, 0.049038637, 0.99876916) +bones/18/rotation = Quaternion(-0.0073038945, 0.0014285325, 0.2391246, 0.9709604) bones/18/scale = Vector3(1, 0.99999994, 1.0000001) bones/19/name = "ThumbCtrl.L" bones/19/parent = 3 bones/19/rest = Transform3D(0.9771098, -0.21273556, 9.247858e-08, 0.2122333, 0.97480285, 0.06867504, -0.014609714, -0.06710303, 0.99763906, -0.0045400136, 0.06477452, -0.046769787) bones/19/enabled = true bones/19/position = Vector3(-0.0045400136, 0.06477452, -0.046769787) -bones/19/rotation = Quaternion(-0.034160614, 0.0036757048, 0.106918596, 0.993674) +bones/19/rotation = Quaternion(-0.18413022, 0.10904248, -0.018524526, 0.97665894) bones/19/scale = Vector3(1, 0.99999994, 1) bones/20/name = "IndexCtrl.L" bones/20/parent = 3 bones/20/rest = Transform3D(0.9800801, -0.19626929, -0.030354116, 0.19836757, 0.9599856, 0.19768208, -0.009659403, -0.19976556, 0.9797962, 0.04529645, 0.07181834, -0.036155563) bones/20/enabled = true bones/20/position = Vector3(0.04529645, 0.07181834, -0.036155563) -bones/20/rotation = Quaternion(-0.10037246, -0.0052262964, 0.099662624, 0.98993206) +bones/20/rotation = Quaternion(-0.10037247, -0.0052262973, 0.09966262, 0.98993206) bones/20/scale = Vector3(1, 1.0000001, 1) bones/21/name = "MiddleCtrl.L" bones/21/parent = 3 bones/21/rest = Transform3D(0.995789, -0.058257017, -0.07078303, 0.06539652, 0.9925152, 0.1031342, 0.06424495, -0.10732886, 0.99214566, 0.0423781, 0.07765784, -0.011263036) bones/21/enabled = true bones/21/position = Vector3(0.0423781, 0.07765784, -0.011263036) -bones/21/rotation = Quaternion(-0.05274483, -0.03383979, 0.030989202, 0.9975533) +bones/21/rotation = Quaternion(-0.052744843, -0.033839785, 0.030989211, 0.9975533) bones/21/scale = Vector3(0.99999994, 0.9999999, 0.99999994) bones/22/name = "RingCtrl.L" bones/22/parent = 3 bones/22/rest = Transform3D(0.9704054, 0.03888438, -0.23833017, -0.023668619, 0.9975138, 0.0663766, 0.2403187, -0.05877127, 0.9689131, 0.033461053, 0.07149334, 0.017992355) bones/22/enabled = true bones/22/position = Vector3(0.033461053, 0.07149334, 0.017992355) -bones/22/rotation = Quaternion(-0.03153698, -0.12061845, -0.015763218, 0.9920727) +bones/22/rotation = Quaternion(-0.031537004, -0.12061846, -0.015763216, 0.9920727) bones/22/scale = Vector3(0.99999994, 0.9999999, 0.9999998) bones/23/name = "LittleCtrl.L" bones/23/parent = 3 bones/23/rest = Transform3D(0.91784114, -0.18039091, -0.35359108, 0.15868126, 0.9832449, -0.08972012, 0.3638513, 0.026240537, 0.9310873, 0.03628368, 0.08284565, 0.04032453) bones/23/enabled = true bones/23/position = Vector3(0.03628368, 0.08284565, 0.04032453) -bones/23/rotation = Quaternion(0.02961816, -0.183246, 0.08660434, 0.9787969) +bones/23/rotation = Quaternion(0.029618153, -0.18324603, 0.08660434, 0.9787969) bones/23/scale = Vector3(0.99999994, 0.99999994, 0.99999994) bones/24/name = "ArmPole.L" bones/24/parent = 0 bones/24/rest = Transform3D(-1, 0, 1.509958e-07, 0, 1, 0, -1.509958e-07, 0, -1, 0.35926056, 0.3746208, -0.29998538) bones/24/enabled = true -bones/24/position = Vector3(0.3592606, 0.3746208, -0.29998538) +bones/24/position = Vector3(0.6056142, 0.20785579, -0.19235319) bones/24/rotation = Quaternion(0, 1, 0, 7.54979e-08) bones/24/scale = Vector3(1, 1, 1) bones/25/name = "ArmCtrl.L" @@ -8315,190 +8315,190 @@ bones/26/name = "WristCtrl.L" bones/26/parent = 0 bones/26/rest = Transform3D(0.99986863, 1.6880067e-09, -0.016210483, 0.0011133, -0.9976389, 0.06866942, -0.016172118, -0.06867806, -0.9975134, 0.4638072, -0.017174125, -0.022513157) bones/26/enabled = true -bones/26/position = Vector3(0.62878627, 0.4425465, 0.28039673) -bones/26/rotation = Quaternion(0.73096085, 0.005924971, -0.005531113, 0.68237126) +bones/26/position = Vector3(0.5209434, 0.11365941, 0.27973163) +bones/26/rotation = Quaternion(0.99525756, 0.0013011391, -0.008000332, 0.096937135) bones/26/scale = Vector3(1, 1, 1.0000056) bones/27/name = "Arm.R" bones/27/parent = 0 bones/27/rest = Transform3D(-0.9676544, -0.25016746, -0.032574747, 0.25158504, -0.96648616, -0.051082943, -0.018703751, -0.057625957, 0.99816304, -0.26421797, 0.773799, -8.039582e-08) bones/27/enabled = true -bones/27/position = Vector3(-0.25017977, 0.56099474, -0.06066542) -bones/27/rotation = Quaternion(-0.08453745, 0.20055908, 0.85529864, 0.47020617) +bones/27/position = Vector3(-0.2642181, 0.773799, -7.244679e-08) +bones/27/rotation = Quaternion(-0.004606466, 0.043080933, 0.98210853, 0.18326412) bones/27/scale = Vector3(0.99999994, 1, 1) bones/28/name = "Forearm.R" bones/28/parent = 27 bones/28/rest = Transform3D(0.99957556, -0.013401167, -0.025863245, 0.011816061, 0.9980984, -0.060496498, 0.026624788, 0.060165223, 0.99783325, 1.17579475e-08, 0.4103366, 3.7252903e-09) bones/28/enabled = true bones/28/position = Vector3(1.17579475e-08, 0.4103366, 3.7252903e-09) -bones/28/rotation = Quaternion(0.46447125, -0.011562698, 0.097070254, 0.8801762) +bones/28/rotation = Quaternion(0.24371684, -0.012721976, 0.050934598, 0.96842444) bones/28/scale = Vector3(0.9999999, 0.9999999, 0.99999994) bones/29/name = "Wrist.R" bones/29/parent = 28 bones/29/rest = Transform3D(-0.9710889, -0.23862909, -0.0065321154, -0.23752637, 0.968609, -0.073335625, 0.02382708, -0.06966387, -0.9972859, -2.158049e-08, 0.4061282, -2.1100277e-09) bones/29/enabled = true bones/29/position = Vector3(-2.158049e-08, 0.4061282, -2.1100277e-09) -bones/29/rotation = Quaternion(-0.59555614, 0.5829333, 0.006156997, -0.5526879) +bones/29/rotation = Quaternion(-0.105007105, 0.9899002, -0.015528794, -0.09396898) bones/29/scale = Vector3(1, 1.0000001, 1) bones/30/name = "ThumbU.R" bones/30/parent = 29 bones/30/rest = Transform3D(0.97710997, 0.21273556, -2.9711325e-07, -0.21223329, 0.9748031, 0.06867511, 0.014609926, -0.067103066, 0.9976392, 0.0045400467, 0.06477455, -0.046769787) bones/30/enabled = true bones/30/position = Vector3(0.0045400467, 0.06477455, -0.046769787) -bones/30/rotation = Quaternion(-0.032949667, -0.0097353915, -0.28318176, 0.95845073) +bones/30/rotation = Quaternion(-0.03416064, -0.0036758184, -0.10691859, 0.993674) bones/30/scale = Vector3(1.0000001, 1.0000001, 1.0000001) bones/31/name = "ThumbM.R" bones/31/parent = 30 bones/31/rest = Transform3D(0.9627348, 0.270287, 0.009302534, -0.27035788, 0.9627312, 0.0074529545, -0.006941402, -0.009690234, 0.99992895, 1.0739313e-08, 0.05044063, 6.8161654e-10) bones/31/enabled = true bones/31/position = Vector3(1.0739313e-08, 0.05044063, 6.8161654e-10) -bones/31/rotation = Quaternion(-0.0019134879, 0.0056446115, 0.3415998, 0.9398266) +bones/31/rotation = Quaternion(-0.0043263347, 0.0040993956, -0.13643965, 0.9906305) bones/31/scale = Vector3(0.99999994, 1.0000001, 1) bones/32/name = "ThumbD.R" bones/32/parent = 31 bones/32/rest = Transform3D(0.99352676, 0.113595836, -0.0005989222, -0.113595866, 0.99347264, -0.010411862, -0.00058773125, 0.010412501, 0.99994564, 1.717126e-08, 0.031673037, 2.6193447e-09) bones/32/enabled = true bones/32/position = Vector3(1.717126e-08, 0.031673037, 2.6193447e-09) -bones/32/rotation = Quaternion(0.004624635, -0.0024093962, 0.41035476, 0.9119111) +bones/32/rotation = Quaternion(0.0052146167, -2.8286527e-06, -0.056890868, 0.99836683) bones/32/scale = Vector3(0.9999999, 1.0000001, 1) bones/33/name = "IndexU.R" bones/33/parent = 29 bones/33/rest = Transform3D(0.9800801, 0.19626924, 0.030353922, -0.1983675, 0.95998544, 0.19768226, 0.00965963, -0.19976568, 0.97979605, -0.04529639, 0.07181834, -0.03615556) bones/33/enabled = true bones/33/position = Vector3(-0.04529639, 0.07181834, -0.03615556) -bones/33/rotation = Quaternion(-0.10037253, 0.005226144, -0.09966263, 0.98993206) +bones/33/rotation = Quaternion(-0.100372545, 0.005226185, -0.0996626, 0.98993206) bones/33/scale = Vector3(1, 0.99999994, 0.99999994) bones/34/name = "IndexM.R" bones/34/parent = 33 bones/34/rest = Transform3D(0.9323134, 0.3615565, 0.008257622, -0.3606826, 0.9312451, -0.051870808, -0.026444094, 0.04538148, 0.9986197, 1.2980308e-08, 0.07879048, -2.3283064e-09) bones/34/enabled = true bones/34/position = Vector3(1.2980308e-08, 0.07879048, -2.3283064e-09) -bones/34/rotation = Quaternion(0.0193374, 0.017782895, -0.5525706, 0.833052) +bones/34/rotation = Quaternion(0.024743041, 0.008828865, -0.18375322, 0.9826214) bones/34/scale = Vector3(0.9999997, 1, 1) bones/35/name = "IndexD.R" bones/35/parent = 34 bones/35/rest = Transform3D(0.99988145, -0.015218617, 0.0023559635, 0.015326444, 0.99832255, -0.05583094, -0.0015023419, 0.05586043, 0.9984374, -9.895302e-09, 0.060257077, 1.3969839e-09) bones/35/enabled = true bones/35/position = Vector3(-9.895302e-09, 0.060257077, 1.3969839e-09) -bones/35/rotation = Quaternion(0.010231995, 0.026011147, -0.91397166, 0.40481445) +bones/35/rotation = Quaternion(0.023770574, 0.014704669, -0.48956946, 0.8715162) bones/35/scale = Vector3(1, 0.99999994, 0.99999994) bones/36/name = "MiddleU.R" bones/36/parent = 29 bones/36/rest = Transform3D(0.9957891, 0.05825713, 0.07078279, -0.06539661, 0.9925152, 0.103134215, -0.064244695, -0.10732887, 0.9921457, -0.04237805, 0.07765788, -0.011263045) bones/36/enabled = true bones/36/position = Vector3(-0.04237805, 0.07765788, -0.011263045) -bones/36/rotation = Quaternion(-0.05274484, 0.033839658, -0.030989284, 0.9975533) +bones/36/rotation = Quaternion(-0.05274485, 0.03383966, -0.03098926, 0.9975533) bones/36/scale = Vector3(1, 0.9999999, 1) bones/37/name = "MiddleM.R" bones/37/parent = 36 bones/37/rest = Transform3D(0.8640145, 0.50343317, -0.0058475533, -0.5016816, 0.8599146, -0.09414036, -0.04236499, 0.08427222, 0.99554175, 3.4226105e-08, 0.073259085, -2.910383e-10) bones/37/enabled = true bones/37/position = Vector3(3.4226105e-08, 0.073259085, -2.910383e-10) -bones/37/rotation = Quaternion(0.038894925, 0.026763793, -0.61616135, 0.7862036) +bones/37/rotation = Quaternion(0.044503566, 0.015765553, -0.39127773, 0.9190607) bones/37/scale = Vector3(1.0000001, 0.99999994, 0.99999994) bones/38/name = "MiddleD.R" bones/38/parent = 37 bones/38/rest = Transform3D(0.9998987, 0.01421252, 0.00084087194, -0.014225099, 0.9997446, 0.017563174, -0.0005910403, -0.017573357, 0.9998453, 6.9849193e-09, 0.06424289, 3.259629e-09) bones/38/enabled = true bones/38/position = Vector3(6.9849193e-09, 0.06424289, 3.259629e-09) -bones/38/rotation = Quaternion(-0.0038245036, -0.0079165865, -0.9201681, 0.39142483) +bones/38/rotation = Quaternion(-0.0068607684, -0.0054980787, -0.661929, 0.749515) bones/38/scale = Vector3(1, 1, 0.9999999) bones/39/name = "RingU.R" bones/39/parent = 29 bones/39/rest = Transform3D(0.97040546, -0.03888434, 0.23833002, 0.023668591, 0.9975139, 0.0663766, -0.24031854, -0.05877128, 0.9689132, -0.033461094, 0.07149336, 0.017992368) bones/39/enabled = true bones/39/position = Vector3(-0.033461094, 0.07149336, 0.017992368) -bones/39/rotation = Quaternion(-0.031536963, 0.12061838, 0.01576319, 0.99207276) +bones/39/rotation = Quaternion(-0.031536996, 0.12061837, 0.015763192, 0.99207276) bones/39/scale = Vector3(1, 1, 0.9999999) bones/40/name = "RingM.R" bones/40/parent = 39 bones/40/rest = Transform3D(0.8251063, 0.56393784, 0.034260213, -0.55244493, 0.81802005, -0.16014935, -0.11833983, 0.11321335, 0.98649806, -1.9383151e-08, 0.07553466, 5.743118e-09) bones/40/enabled = true bones/40/position = Vector3(-1.9383151e-08, 0.07553466, 5.743118e-09) -bones/40/rotation = Quaternion(0.05043134, 0.064866394, -0.6414283, 0.7627704) +bones/40/rotation = Quaternion(0.055570774, 0.06052161, -0.5768524, 0.81270564) bones/40/scale = Vector3(1, 0.99999994, 1) bones/41/name = "RingD.R" bones/41/parent = 40 bones/41/rest = Transform3D(0.99991727, 0.012864309, -0.00015439918, -0.012864574, 0.999672, -0.022144107, -0.00013052007, 0.02214426, 0.9997548, 6.519258e-09, 0.06469142, 1.8626451e-08) bones/41/enabled = true bones/41/position = Vector3(6.519258e-09, 0.06469142, 1.8626451e-08) -bones/41/rotation = Quaternion(0.004412254, 0.010155983, -0.9198821, 0.3920389) +bones/41/rotation = Quaternion(0.008899972, 0.0065879845, -0.6005104, 0.7995404) bones/41/scale = Vector3(1, 0.99999994, 1) bones/42/name = "LittleU.R" bones/42/parent = 29 bones/42/rest = Transform3D(0.91784126, 0.18039082, 0.35359094, -0.15868118, 0.9832451, -0.08972006, -0.36385116, 0.026240546, 0.93108743, -0.036283698, 0.08284566, 0.04032454) bones/42/enabled = true bones/42/position = Vector3(-0.036283698, 0.08284566, 0.04032454) -bones/42/rotation = Quaternion(0.029618183, 0.1832459, -0.08660429, 0.978797) +bones/42/rotation = Quaternion(0.029618138, 0.18324591, -0.08660426, 0.978797) bones/42/scale = Vector3(1, 1.0000001, 1) bones/43/name = "LittleM.R" bones/43/parent = 42 bones/43/rest = Transform3D(0.9267258, 0.3674547, 0.078461215, -0.35205156, 0.9221319, -0.16041426, -0.13129655, 0.12103769, 0.9839263, 4.5401976e-09, 0.061574332, 1.4901161e-08) bones/43/enabled = true bones/43/position = Vector3(4.5401976e-09, 0.061574332, 1.4901161e-08) -bones/43/rotation = Quaternion(0.045283318, 0.07737079, -0.5511137, 0.8296004) +bones/43/rotation = Quaternion(0.04652544, 0.07663028, -0.5376598, 0.83838236) bones/43/scale = Vector3(0.9999999, 1.0000001, 0.99999994) bones/44/name = "LittleD.R" bones/44/parent = 43 bones/44/rest = Transform3D(0.99519044, 0.09795644, 0.00071900914, -0.097956285, 0.99507964, 0.014866768, 0.0007408244, -0.014865696, 0.99988925, -2.6077032e-08, 0.035935488, 2.0489097e-08) bones/44/enabled = true bones/44/position = Vector3(-2.6077032e-08, 0.035935488, 2.0489097e-08) -bones/44/rotation = Quaternion(-0.0051725525, -0.005350945, -0.75170314, 0.65945977) +bones/44/rotation = Quaternion(-0.005342348, -0.00518124, -0.7300394, 0.68336457) bones/44/scale = Vector3(1, 0.99999994, 1) bones/45/name = "ThumbCtrl.R" bones/45/parent = 29 bones/45/rest = Transform3D(0.97710997, 0.21273556, -3.141077e-07, -0.21223329, 0.9748031, 0.06867511, 0.014609943, -0.06710306, 0.9976392, 0.0045400467, 0.06477455, -0.046769787) bones/45/enabled = true bones/45/position = Vector3(0.0045400467, 0.06477455, -0.046769787) -bones/45/rotation = Quaternion(-0.032949682, -0.009735426, -0.28318176, 0.95845073) +bones/45/rotation = Quaternion(-0.03416064, -0.0036758187, -0.10691858, 0.993674) bones/45/scale = Vector3(1.0000001, 1.0000001, 1.0000001) bones/46/name = "IndexCtrl.R" bones/46/parent = 29 bones/46/rest = Transform3D(0.9800801, 0.1962692, 0.030353911, -0.19836746, 0.9599855, 0.1976822, 0.009659619, -0.19976562, 0.9797961, -0.04529639, 0.07181837, -0.036155567) bones/46/enabled = true bones/46/position = Vector3(-0.04529639, 0.07181837, -0.036155567) -bones/46/rotation = Quaternion(-0.100372516, 0.005226184, -0.09966261, 0.98993206) +bones/46/rotation = Quaternion(-0.100372516, 0.0052261977, -0.09966259, 0.98993206) bones/46/scale = Vector3(1, 1, 1) bones/47/name = "MiddleCtrl.R" bones/47/parent = 29 bones/47/rest = Transform3D(0.9957891, 0.05825713, 0.07078278, -0.06539661, 0.9925152, 0.103134215, -0.06424469, -0.10732887, 0.9921457, -0.04237805, 0.07765788, -0.011263043) bones/47/enabled = true bones/47/position = Vector3(-0.04237805, 0.07765788, -0.011263043) -bones/47/rotation = Quaternion(-0.052744824, 0.03383967, -0.030989263, 0.9975533) +bones/47/rotation = Quaternion(-0.052744865, 0.033839665, -0.030989254, 0.9975533) bones/47/scale = Vector3(1, 0.9999999, 1) bones/48/name = "RingCtrl.R" bones/48/parent = 29 bones/48/rest = Transform3D(0.97040546, -0.038884338, 0.23833002, 0.023668593, 0.9975139, 0.06637658, -0.24031854, -0.058771256, 0.9689132, -0.033461034, 0.07149337, 0.017992346) bones/48/enabled = true bones/48/position = Vector3(-0.033461034, 0.07149337, 0.017992346) -bones/48/rotation = Quaternion(-0.03153697, 0.120618366, 0.0157632, 0.99207276) +bones/48/rotation = Quaternion(-0.031536963, 0.120618366, 0.015763193, 0.99207276) bones/48/scale = Vector3(1, 1, 0.9999999) bones/49/name = "LittleCtrl.R" bones/49/parent = 29 bones/49/rest = Transform3D(0.91784126, 0.18039085, 0.353591, -0.15868121, 0.9832451, -0.08972009, -0.36385122, 0.026240563, 0.93108743, -0.036283698, 0.08284567, 0.04032453) bones/49/enabled = true bones/49/position = Vector3(-0.036283698, 0.08284567, 0.04032453) -bones/49/rotation = Quaternion(0.029618176, 0.1832459, -0.08660432, 0.9787969) +bones/49/rotation = Quaternion(0.029618144, 0.1832459, -0.0866043, 0.9787969) bones/49/scale = Vector3(1, 1.0000001, 1) bones/50/name = "ArmPole.R" bones/50/parent = 0 bones/50/rest = Transform3D(-1, 0, 3.8941437e-07, 0, 1, 0, -3.8941437e-07, 0, -1, -0.35926044, 0.3746208, -0.29998556) bones/50/enabled = true -bones/50/position = Vector3(-0.35926044, 0.3746208, -0.29998556) +bones/50/position = Vector3(-0.50106835, 0.038118243, -0.18320106) bones/50/rotation = Quaternion(0, 1, 0, 1.9470718e-07) bones/50/scale = Vector3(1, 1, 1) bones/51/name = "ArmCtrl.R" bones/51/parent = 0 bones/51/rest = Transform3D(0.94635737, -0.23162138, -0.2253216, -0.22532392, -0.9728065, 0.05364829, -0.23162167, -1.0385237e-07, -0.9728063, -0.26421803, 0.77379894, -6.9123985e-08) bones/51/enabled = true -bones/51/position = Vector3(-0.25017977, 0.5609948, -0.0606654) +bones/51/position = Vector3(-0.26421806, 0.77379906, -5.8168844e-08) bones/51/rotation = Quaternion(0.9864031, -0.11581065, -0.115810156, -0.013596978) bones/51/scale = Vector3(1.0000058, 1.0000005, 1) bones/52/name = "WristCtrl.R" bones/52/parent = 0 bones/52/rest = Transform3D(0.9998686, -1.920822e-09, 0.016210958, -0.0011133328, -0.9976389, 0.068669416, 0.016172592, -0.06867806, -0.9975133, -0.4638072, -0.017174125, -0.022513377) bones/52/enabled = true -bones/52/position = Vector3(-0.72660184, 0.34166104, 0.43067294) -bones/52/rotation = Quaternion(0.72577125, 0.52325475, -0.056364454, 0.4430391) +bones/52/position = Vector3(-0.4992833, 0.063198194, 0.25505123) +bones/52/rotation = Quaternion(0.9634464, -0.0027018473, 0.0076421746, 0.26777864) bones/52/scale = Vector3(0.99999994, 1, 1.0000055) bones/53/name = "neutral_bone" bones/53/parent = -1 @@ -8518,7 +8518,7 @@ mesh = SubResource("ArrayMesh_k2oqm") skin = SubResource("Skin_7i6yw") [node name="Knife" type="MeshInstance3D" parent="Camera3D/molikman_hands"] -transform = Transform3D(0.44349924, -0.24581784, -0.24349186, 1.6763806e-08, 0.3958524, -0.3996338, 0.34599808, 0.3150885, 0.3121071, -0.5997052, 0.41665718, 0.45029944) +transform = Transform3D(0.39448777, -0.03612302, -0.39935043, -0.32588214, 0.2975342, -0.3488273, 0.23363753, 0.4759987, 0.18773648, 0.028825827, 0.36956742, -0.17253295) mesh = SubResource("ArrayMesh_3xmvl") skeleton = NodePath("") @@ -8559,29 +8559,29 @@ bones/0/name = "DownCasing" bones/0/parent = -1 bones/0/rest = Transform3D(1, -3.1337524e-16, -6.436688e-14, -6.436689e-14, -0.009737134, -0.99995255, -3.1338864e-16, 0.99995255, -0.009737134, -1.376031e-17, -0.061970927, -0.35584867) bones/0/enabled = true -bones/0/position = Vector3(-1.376031e-17, -0.061970927, -0.35584867) -bones/0/rotation = Quaternion(0.710541, -2.2757397e-14, -2.2757402e-14, 0.7036558) +bones/0/position = Vector3(-1.1928003e-07, 0.12658781, 1.0104566) +bones/0/rotation = Quaternion(4.2351576e-08, 0.71054107, -0.7036557, 4.1941128e-08) bones/0/scale = Vector3(1, 0.99999994, 0.99999994) bones/1/name = "UpCasing" bones/1/parent = 0 bones/1/rest = Transform3D(1, 3.0177497e-16, 2.1433547e-14, -2.0314211e-16, 0.99998933, -0.0046016485, -2.143471e-14, 0.0046016485, 0.99998933, -4.4210334e-15, -0.0037285234, -0.06914721) bones/1/enabled = true bones/1/position = Vector3(-4.4210334e-15, -0.0037285234, -0.06914721) -bones/1/rotation = Quaternion(0.0023008306, 1.0717094e-14, -1.262296e-16, 0.9999974) +bones/1/rotation = Quaternion(0.0023008303, 1.0703215e-14, -1.261531e-16, 0.9999974) bones/1/scale = Vector3(1, 0.9999999, 0.9999999) bones/2/name = "Lock.L" bones/2/parent = 1 bones/2/rest = Transform3D(1, -2.2826183e-13, 4.7683716e-06, 4.768358e-06, -0.0023846624, -0.99999714, 1.1371185e-08, 0.99999714, -0.0023846624, 0.40466008, 0.74391246, -0.04321898) bones/2/enabled = true bones/2/position = Vector3(0.40466008, 0.74391246, -0.04321898) -bones/2/rotation = Quaternion(0.7079494, 1.6838627e-06, 1.6878829e-06, 0.7062632) +bones/2/rotation = Quaternion(0.7079494, 1.6838625e-06, 1.6878829e-06, 0.7062632) bones/2/scale = Vector3(1, 0.99999994, 0.99999994) bones/3/name = "Lock.R" bones/3/parent = 1 bones/3/rest = Transform3D(1, -2.2826183e-13, 4.7683716e-06, 4.768358e-06, -0.0023846624, -0.99999714, 1.1371185e-08, 0.99999714, -0.0023846624, -0.4074956, 0.74391246, -0.04321898) bones/3/enabled = true bones/3/position = Vector3(-0.4074956, 0.74391246, -0.04321898) -bones/3/rotation = Quaternion(0.7079494, 1.6838627e-06, 1.6878829e-06, 0.7062632) +bones/3/rotation = Quaternion(0.7079494, 1.6838625e-06, 1.6878829e-06, 0.7062632) bones/3/scale = Vector3(1, 0.99999994, 0.99999994) [node name="Case" type="MeshInstance3D" parent="Camera3D/molikman_hands/Armature/Skeleton3D"] diff --git a/scenes/smoke.tscn b/scenes/smoke.tscn deleted file mode 100644 index 31b1b8f..0000000 --- a/scenes/smoke.tscn +++ /dev/null @@ -1,49 +0,0 @@ -[gd_scene load_steps=8 format=3 uid="uid://cheu6vds21er7"] - -[ext_resource type="Script" uid="uid://t5jjqwnkxgvo" path="res://scripts/smoke_grenade.gd" id="1_acmqr"] - -[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_acmqr"] -bounce = 0.5 - -[sub_resource type="CapsuleMesh" id="CapsuleMesh_vb5ru"] -radius = 0.1 -height = 0.5 - -[sub_resource type="FastNoiseLite" id="FastNoiseLite_acmqr"] -frequency = 0.1141 - -[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_rx0m8"] -width = 128 -height = 128 -depth = 128 -noise = SubResource("FastNoiseLite_acmqr") - -[sub_resource type="FogMaterial" id="FogMaterial_rx0m8"] -resource_local_to_scene = true -density = 8.0 -density_texture = SubResource("NoiseTexture3D_rx0m8") - -[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_acmqr"] -radius = 0.1 -height = 0.5 - -[node name="Smoke" type="RigidBody3D" node_paths=PackedStringArray("fog")] -physics_material_override = SubResource("PhysicsMaterial_acmqr") -contact_monitor = true -max_contacts_reported = 1 -script = ExtResource("1_acmqr") -radius = 10.0 -fog = NodePath("FogVolume") - -[node name="MeshInstance3D" type="MeshInstance3D" parent="."] -mesh = SubResource("CapsuleMesh_vb5ru") - -[node name="FogVolume" type="FogVolume" parent="."] -size = Vector3(0, 0, 0) -shape = 0 -material = SubResource("FogMaterial_rx0m8") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="."] -shape = SubResource("CapsuleShape3D_acmqr") - -[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/scenes/spectator.tscn b/scenes/spectator.tscn index afc26b5..c7df0b8 100644 --- a/scenes/spectator.tscn +++ b/scenes/spectator.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://ckjabjcvgki6n"] -[ext_resource type="Script" uid="uid://cikw7fcykkpd5" path="res://scripts/player/spectator.gd" id="1_jjbhc"] +[ext_resource type="Script" uid="uid://cikw7fcykkpd5" path="res://systems/player/spectator.gd" id="1_jjbhc"] [node name="Spectator" type="Camera3D"] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 0, 0, 0) diff --git a/scenes/weapons/molik.tscn b/scenes/weapons/molik.tscn index bd941f3..f7c89cf 100644 --- a/scenes/weapons/molik.tscn +++ b/scenes/weapons/molik.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=5 format=3 uid="uid://b6qahd6q60js7"] -[ext_resource type="Script" uid="uid://y1s64ppporww" path="res://scripts/weapon_system/molikman/molik/molik.gd" id="1_aqokr"] +[ext_resource type="Script" uid="uid://y1s64ppporww" path="res://weapons/molikman/molik/molik.gd" id="1_aqokr"] [sub_resource type="PhysicsMaterial" id="PhysicsMaterial_aqokr"] bounce = 0.53 diff --git a/scenes/weapons/molikman_molik.tscn b/scenes/weapons/molikman_molik.tscn index a02e5b5..e57e5cb 100644 --- a/scenes/weapons/molikman_molik.tscn +++ b/scenes/weapons/molikman_molik.tscn @@ -1,9 +1,9 @@ [gd_scene load_steps=5 format=3 uid="uid://c5q7e5dj86187"] -[ext_resource type="Script" uid="uid://e6lqknfl4ngt" path="res://scripts/weapon_system/weapon_substate_machine.gd" id="1_e53aq"] -[ext_resource type="Script" uid="uid://js2rkse5mka0" path="res://scripts/weapon_system/molikman/molik/intro_state.gd" id="2_8q75j"] -[ext_resource type="Script" uid="uid://cnre3f01a2n88" path="res://scripts/weapon_system/molikman/molik/idle_state.gd" id="3_p1i4u"] -[ext_resource type="Script" uid="uid://b6eio68csxw7v" path="res://scripts/weapon_system/molikman/molik/throw.gd" id="4_1la3w"] +[ext_resource type="Script" uid="uid://e6lqknfl4ngt" path="res://systems/weapon_system/weapon_substate_machine.gd" id="1_e53aq"] +[ext_resource type="Script" uid="uid://js2rkse5mka0" path="res://weapons/molikman/molik/intro_state.gd" id="2_8q75j"] +[ext_resource type="Script" uid="uid://cnre3f01a2n88" path="res://weapons/molikman/molik/idle_state.gd" id="3_p1i4u"] +[ext_resource type="Script" uid="uid://b6eio68csxw7v" path="res://weapons/molikman/molik/throw.gd" id="4_1la3w"] [node name="MolikmanMolik" type="Node" node_paths=PackedStringArray("enter_state")] script = ExtResource("1_e53aq") diff --git a/scripts/abilities/Ability.gd b/scripts/abilities/Ability.gd deleted file mode 100644 index e3304c1..0000000 --- a/scripts/abilities/Ability.gd +++ /dev/null @@ -1,6 +0,0 @@ -extends Resource - -@export var internal_id: StringName -@export var immediate: bool -@export var max_uses: int -@export var cost: int diff --git a/scripts/abilities/Ability.gd.uid b/scripts/abilities/Ability.gd.uid deleted file mode 100644 index fa59ec2..0000000 --- a/scripts/abilities/Ability.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cwn6swbl3bcqw diff --git a/scripts/gui/lobby/lobby_buttons.gd b/scripts/gui/lobby/lobby_buttons.gd deleted file mode 100644 index 57fc58a..0000000 --- a/scripts/gui/lobby/lobby_buttons.gd +++ /dev/null @@ -1,7 +0,0 @@ -extends Node - -func _ready() -> void: - Lobby.lobby_joined.connect(on_lobby_joined) - -func on_lobby_joined() -> void: - $StartButton.hide() diff --git a/scripts/gui/lobby/lobby_buttons.gd.uid b/scripts/gui/lobby/lobby_buttons.gd.uid deleted file mode 100644 index 6157091..0000000 --- a/scripts/gui/lobby/lobby_buttons.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://2uyxkfmbbims diff --git a/scripts/multiplayer/loaded_notifier.gd b/scripts/multiplayer/loaded_notifier.gd deleted file mode 100644 index 7bccb84..0000000 --- a/scripts/multiplayer/loaded_notifier.gd +++ /dev/null @@ -1,7 +0,0 @@ -extends Node - - -func _ready() -> void: - if not multiplayer.is_server(): - return - Lobby.add_loaded_player(multiplayer.get_unique_id()) diff --git a/scripts/multiplayer/loaded_notifier.gd.uid b/scripts/multiplayer/loaded_notifier.gd.uid deleted file mode 100644 index 5d0fbec..0000000 --- a/scripts/multiplayer/loaded_notifier.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bdxy621fthtrv diff --git a/scripts/multiplayer/spawn_system/dyn_objects_spawner.gd b/scripts/multiplayer/spawn_system/dyn_objects_spawner.gd deleted file mode 100644 index 1db85a4..0000000 --- a/scripts/multiplayer/spawn_system/dyn_objects_spawner.gd +++ /dev/null @@ -1,44 +0,0 @@ -extends MultiplayerSpawner - -func _ready() -> void: - spawn_function = request_spawn - Session.dynamic_objects_spawner = self - -func request_spawn(data: Variant) -> Node: - if data.has("type") == false or data.has("spawn_name") == false: - return Node.new() - match data.type: - "weapon": - var weapon: DroppableWeapon = Registry.weapons[data.spawn_name].dropped_scene.instantiate() - weapon.apply_central_impulse(data.impulse) - weapon.weapon.ammo = data.ammo - weapon.weapon.remaining_ammo = data.remaining_ammo - weapon.slot = Registry.weapons[data.spawn_name].slot - - for key in data.keys(): - if key == "impulse" or key == "ammo" or key == "remaining_ammo": - continue - weapon.set(key,data[key]) - - return weapon - "projectile": - var projectile: RigidBody3D = Registry.spawnable_objects[data.spawn_name].instantiate() - projectile.apply_central_impulse(data.impulse) - - for key in data.keys(): - if key == "impulse": - continue - projectile.set(key,data[key]) - - return projectile - "object": - var object: Node3D = Registry.spawnable_objects[data.spawn_name].instantiate() - - - for key in data.keys(): - object.set(key,data[key]) - - return object - _: - return Node.new() - diff --git a/scripts/multiplayer/spawn_system/dyn_objects_spawner.gd.uid b/scripts/multiplayer/spawn_system/dyn_objects_spawner.gd.uid deleted file mode 100644 index 515c347..0000000 --- a/scripts/multiplayer/spawn_system/dyn_objects_spawner.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bqjv6l7hh0lix diff --git a/scripts/player/input_system.gd b/scripts/player/input_system.gd deleted file mode 100644 index fae2c76..0000000 --- a/scripts/player/input_system.gd +++ /dev/null @@ -1,11 +0,0 @@ -extends Node - - -# Called when the node enters the scene tree for the first time. -func _ready() -> void: - pass # Replace with function body. - - -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta: float) -> void: - pass diff --git a/scripts/player/input_system.gd.uid b/scripts/player/input_system.gd.uid deleted file mode 100644 index 2810c17..0000000 --- a/scripts/player/input_system.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cg0v1nmwuuoej diff --git a/scripts/registry.gd b/scripts/registry.gd deleted file mode 100644 index cacce20..0000000 --- a/scripts/registry.gd +++ /dev/null @@ -1,11 +0,0 @@ -extends Node - -var spawnable_objects: Dictionary[StringName,PackedScene] -var weapons: Dictionary[StringName,WeaponResource] - -func _ready() -> void: - for file in ResourceLoader.list_directory("res://weapons/"): - weapons[file.trim_suffix(".tres")] = load("res://weapons/"+ file) - - for file in ResourceLoader.list_directory("res://spawnables/"): - spawnable_objects[file.trim_suffix(".tscn")] = load("res://spawnables/" + file) diff --git a/scripts/registry.gd.uid b/scripts/registry.gd.uid deleted file mode 100644 index 5bfda02..0000000 --- a/scripts/registry.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c7p8avavia4fp diff --git a/shaders/team_color.gdshader b/shaders/team_color.gdshader deleted file mode 100644 index d96ec45..0000000 --- a/shaders/team_color.gdshader +++ /dev/null @@ -1,14 +0,0 @@ -shader_type spatial; - -void vertex() { - // Called for every vertex the material is visible on. -} - -void fragment() { - // Called for every pixel the material is visible on. -} - -//void light() { -// // Called for every pixel for every light affecting the material. -// // Uncomment to replace the default light processing function with this one. -//} diff --git a/shaders/team_color.gdshader.uid b/shaders/team_color.gdshader.uid deleted file mode 100644 index 9313504..0000000 --- a/shaders/team_color.gdshader.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bv2xmvpe4rjhq diff --git a/scripts/debug/inventory_preview.gd b/systems/debug/inventory_preview.gd similarity index 100% rename from scripts/debug/inventory_preview.gd rename to systems/debug/inventory_preview.gd diff --git a/scripts/debug/inventory_preview.gd.uid b/systems/debug/inventory_preview.gd.uid similarity index 100% rename from scripts/debug/inventory_preview.gd.uid rename to systems/debug/inventory_preview.gd.uid diff --git a/scripts/debug/property_shower.gd b/systems/debug/property_shower.gd similarity index 100% rename from scripts/debug/property_shower.gd rename to systems/debug/property_shower.gd diff --git a/scripts/debug/property_shower.gd.uid b/systems/debug/property_shower.gd.uid similarity index 100% rename from scripts/debug/property_shower.gd.uid rename to systems/debug/property_shower.gd.uid diff --git a/scripts/interaction_system/interactible.gd b/systems/interaction_system/interactible.gd similarity index 100% rename from scripts/interaction_system/interactible.gd rename to systems/interaction_system/interactible.gd diff --git a/scripts/interaction_system/interactible.gd.uid b/systems/interaction_system/interactible.gd.uid similarity index 100% rename from scripts/interaction_system/interactible.gd.uid rename to systems/interaction_system/interactible.gd.uid diff --git a/scripts/item_spawner.gd b/systems/item_spawner.gd similarity index 100% rename from scripts/item_spawner.gd rename to systems/item_spawner.gd diff --git a/scripts/item_spawner.gd.uid b/systems/item_spawner.gd.uid similarity index 100% rename from scripts/item_spawner.gd.uid rename to systems/item_spawner.gd.uid diff --git a/scripts/object_container.gd b/systems/object_container.gd similarity index 100% rename from scripts/object_container.gd rename to systems/object_container.gd diff --git a/scripts/object_container.gd.uid b/systems/object_container.gd.uid similarity index 100% rename from scripts/object_container.gd.uid rename to systems/object_container.gd.uid diff --git a/scripts/player/collision_team_updater.gd b/systems/player/collision_team_updater.gd similarity index 100% rename from scripts/player/collision_team_updater.gd rename to systems/player/collision_team_updater.gd diff --git a/scripts/player/collision_team_updater.gd.uid b/systems/player/collision_team_updater.gd.uid similarity index 100% rename from scripts/player/collision_team_updater.gd.uid rename to systems/player/collision_team_updater.gd.uid diff --git a/scripts/player/dead_player_spectator.gd b/systems/player/dead_player_spectator.gd similarity index 100% rename from scripts/player/dead_player_spectator.gd rename to systems/player/dead_player_spectator.gd diff --git a/scripts/player/dead_player_spectator.gd.uid b/systems/player/dead_player_spectator.gd.uid similarity index 100% rename from scripts/player/dead_player_spectator.gd.uid rename to systems/player/dead_player_spectator.gd.uid diff --git a/scripts/player/player.gd b/systems/player/player.gd similarity index 100% rename from scripts/player/player.gd rename to systems/player/player.gd diff --git a/scripts/player/player.gd.uid b/systems/player/player.gd.uid similarity index 100% rename from scripts/player/player.gd.uid rename to systems/player/player.gd.uid diff --git a/scripts/player/player_camera.gd b/systems/player/player_camera.gd similarity index 100% rename from scripts/player/player_camera.gd rename to systems/player/player_camera.gd diff --git a/scripts/player/player_camera.gd.uid b/systems/player/player_camera.gd.uid similarity index 100% rename from scripts/player/player_camera.gd.uid rename to systems/player/player_camera.gd.uid diff --git a/scripts/player/player_global.gd b/systems/player/player_global.gd similarity index 100% rename from scripts/player/player_global.gd rename to systems/player/player_global.gd diff --git a/scripts/player/player_global.gd.uid b/systems/player/player_global.gd.uid similarity index 100% rename from scripts/player/player_global.gd.uid rename to systems/player/player_global.gd.uid diff --git a/scripts/multiplayer/player_input.gd b/systems/player/player_input.gd similarity index 100% rename from scripts/multiplayer/player_input.gd rename to systems/player/player_input.gd diff --git a/scripts/multiplayer/player_input.gd.uid b/systems/player/player_input.gd.uid similarity index 100% rename from scripts/multiplayer/player_input.gd.uid rename to systems/player/player_input.gd.uid diff --git a/scripts/player/player_interaction.gd b/systems/player/player_interaction.gd similarity index 100% rename from scripts/player/player_interaction.gd rename to systems/player/player_interaction.gd diff --git a/scripts/player/player_interaction.gd.uid b/systems/player/player_interaction.gd.uid similarity index 100% rename from scripts/player/player_interaction.gd.uid rename to systems/player/player_interaction.gd.uid diff --git a/scripts/player/player_movement.gd b/systems/player/player_movement.gd similarity index 100% rename from scripts/player/player_movement.gd rename to systems/player/player_movement.gd diff --git a/scripts/player/player_movement.gd.uid b/systems/player/player_movement.gd.uid similarity index 100% rename from scripts/player/player_movement.gd.uid rename to systems/player/player_movement.gd.uid diff --git a/scripts/player/player_pickup.gd b/systems/player/player_pickup.gd similarity index 96% rename from scripts/player/player_pickup.gd rename to systems/player/player_pickup.gd index bd9df52..df61ce7 100644 --- a/scripts/player/player_pickup.gd +++ b/systems/player/player_pickup.gd @@ -25,7 +25,7 @@ func on_body_entered(body: Node3D): "slot": body.slot }) - Session.despawn(body.get_path()) + body.queue_free() func start_temp_ignore(): if disabled: diff --git a/scripts/player/player_pickup.gd.uid b/systems/player/player_pickup.gd.uid similarity index 100% rename from scripts/player/player_pickup.gd.uid rename to systems/player/player_pickup.gd.uid diff --git a/scripts/player/player_raycast.gd b/systems/player/player_raycast.gd similarity index 100% rename from scripts/player/player_raycast.gd rename to systems/player/player_raycast.gd diff --git a/scripts/player/player_raycast.gd.uid b/systems/player/player_raycast.gd.uid similarity index 100% rename from scripts/player/player_raycast.gd.uid rename to systems/player/player_raycast.gd.uid diff --git a/scripts/player/spectator.gd b/systems/player/spectator.gd similarity index 100% rename from scripts/player/spectator.gd rename to systems/player/spectator.gd diff --git a/scripts/player/spectator.gd.uid b/systems/player/spectator.gd.uid similarity index 100% rename from scripts/player/spectator.gd.uid rename to systems/player/spectator.gd.uid diff --git a/scripts/player/states/crouching.gd b/systems/player/states/crouching.gd similarity index 100% rename from scripts/player/states/crouching.gd rename to systems/player/states/crouching.gd diff --git a/scripts/player/states/crouching.gd.uid b/systems/player/states/crouching.gd.uid similarity index 100% rename from scripts/player/states/crouching.gd.uid rename to systems/player/states/crouching.gd.uid diff --git a/scripts/player/states/death.gd b/systems/player/states/death.gd similarity index 100% rename from scripts/player/states/death.gd rename to systems/player/states/death.gd diff --git a/scripts/player/states/death.gd.uid b/systems/player/states/death.gd.uid similarity index 100% rename from scripts/player/states/death.gd.uid rename to systems/player/states/death.gd.uid diff --git a/scripts/player/states/falling.gd b/systems/player/states/falling.gd similarity index 100% rename from scripts/player/states/falling.gd rename to systems/player/states/falling.gd diff --git a/scripts/player/states/falling.gd.uid b/systems/player/states/falling.gd.uid similarity index 100% rename from scripts/player/states/falling.gd.uid rename to systems/player/states/falling.gd.uid diff --git a/scripts/player/states/standing.gd b/systems/player/states/standing.gd similarity index 100% rename from scripts/player/states/standing.gd rename to systems/player/states/standing.gd diff --git a/scripts/player/states/standing.gd.uid b/systems/player/states/standing.gd.uid similarity index 100% rename from scripts/player/states/standing.gd.uid rename to systems/player/states/standing.gd.uid diff --git a/scripts/player/states/walk.gd b/systems/player/states/walk.gd similarity index 100% rename from scripts/player/states/walk.gd rename to systems/player/states/walk.gd diff --git a/scripts/player/states/walk.gd.uid b/systems/player/states/walk.gd.uid similarity index 100% rename from scripts/player/states/walk.gd.uid rename to systems/player/states/walk.gd.uid diff --git a/scripts/player/team_color_switcher.gd b/systems/player/team_color_switcher.gd similarity index 100% rename from scripts/player/team_color_switcher.gd rename to systems/player/team_color_switcher.gd diff --git a/scripts/player/team_color_switcher.gd.uid b/systems/player/team_color_switcher.gd.uid similarity index 100% rename from scripts/player/team_color_switcher.gd.uid rename to systems/player/team_color_switcher.gd.uid diff --git a/systems/registry.gd b/systems/registry.gd new file mode 100644 index 0000000..f58a725 --- /dev/null +++ b/systems/registry.gd @@ -0,0 +1,8 @@ +extends Node + +var weapons: Dictionary[StringName,WeaponResource] + +func _ready() -> void: + for file in ResourceLoader.list_directory("res://weapons/"): + if file.ends_with(".tres"): + weapons[file.trim_suffix(".tres")] = load("res://weapons/"+ file) diff --git a/systems/registry.gd.uid b/systems/registry.gd.uid new file mode 100644 index 0000000..bc399bd --- /dev/null +++ b/systems/registry.gd.uid @@ -0,0 +1 @@ +uid://csoswr6rx8fx6 diff --git a/scripts/state_machine/machine.gd b/systems/state_machine/machine.gd similarity index 100% rename from scripts/state_machine/machine.gd rename to systems/state_machine/machine.gd diff --git a/scripts/state_machine/machine.gd.uid b/systems/state_machine/machine.gd.uid similarity index 100% rename from scripts/state_machine/machine.gd.uid rename to systems/state_machine/machine.gd.uid diff --git a/scripts/state_machine/state.gd b/systems/state_machine/state.gd similarity index 100% rename from scripts/state_machine/state.gd rename to systems/state_machine/state.gd diff --git a/scripts/state_machine/state.gd.uid b/systems/state_machine/state.gd.uid similarity index 100% rename from scripts/state_machine/state.gd.uid rename to systems/state_machine/state.gd.uid diff --git a/scripts/state_machine/substate_machine.gd b/systems/state_machine/substate_machine.gd similarity index 100% rename from scripts/state_machine/substate_machine.gd rename to systems/state_machine/substate_machine.gd diff --git a/scripts/state_machine/substate_machine.gd.uid b/systems/state_machine/substate_machine.gd.uid similarity index 100% rename from scripts/state_machine/substate_machine.gd.uid rename to systems/state_machine/substate_machine.gd.uid diff --git a/scripts/weapon_system/dropped_weapon.gd b/systems/weapon_system/dropped_weapon.gd similarity index 100% rename from scripts/weapon_system/dropped_weapon.gd rename to systems/weapon_system/dropped_weapon.gd diff --git a/scripts/weapon_system/dropped_weapon.gd.uid b/systems/weapon_system/dropped_weapon.gd.uid similarity index 100% rename from scripts/weapon_system/dropped_weapon.gd.uid rename to systems/weapon_system/dropped_weapon.gd.uid diff --git a/scripts/weapon_system/starting_weapon_spawner.gd b/systems/weapon_system/starting_weapon_spawner.gd similarity index 100% rename from scripts/weapon_system/starting_weapon_spawner.gd rename to systems/weapon_system/starting_weapon_spawner.gd diff --git a/scripts/weapon_system/starting_weapon_spawner.gd.uid b/systems/weapon_system/starting_weapon_spawner.gd.uid similarity index 100% rename from scripts/weapon_system/starting_weapon_spawner.gd.uid rename to systems/weapon_system/starting_weapon_spawner.gd.uid diff --git a/scripts/resources/weapon_resource.gd b/systems/weapon_system/weapon_resource.gd similarity index 100% rename from scripts/resources/weapon_resource.gd rename to systems/weapon_system/weapon_resource.gd diff --git a/scripts/resources/weapon_resource.gd.uid b/systems/weapon_system/weapon_resource.gd.uid similarity index 100% rename from scripts/resources/weapon_resource.gd.uid rename to systems/weapon_system/weapon_resource.gd.uid diff --git a/scripts/weapon_system/weapon_state.gd b/systems/weapon_system/weapon_state.gd similarity index 100% rename from scripts/weapon_system/weapon_state.gd rename to systems/weapon_system/weapon_state.gd diff --git a/scripts/weapon_system/weapon_state.gd.uid b/systems/weapon_system/weapon_state.gd.uid similarity index 100% rename from scripts/weapon_system/weapon_state.gd.uid rename to systems/weapon_system/weapon_state.gd.uid diff --git a/scripts/weapon_system/weapon_substate_machine.gd b/systems/weapon_system/weapon_substate_machine.gd similarity index 97% rename from scripts/weapon_system/weapon_substate_machine.gd rename to systems/weapon_system/weapon_substate_machine.gd index 3e6df35..f6725e4 100644 --- a/scripts/weapon_system/weapon_substate_machine.gd +++ b/systems/weapon_system/weapon_substate_machine.gd @@ -3,7 +3,7 @@ extends SubStateMachine class_name WeaponSubStateMachine @export var animation_prefix: StringName -@export var index: StringName +@export var registry_entry: StringName @export var visibility_target: StringName @export var max_ammo: int diff --git a/scripts/weapon_system/weapon_substate_machine.gd.uid b/systems/weapon_system/weapon_substate_machine.gd.uid similarity index 100% rename from scripts/weapon_system/weapon_substate_machine.gd.uid rename to systems/weapon_system/weapon_substate_machine.gd.uid diff --git a/scripts/weapon_system/weapon_system.gd b/systems/weapon_system/weapon_system.gd similarity index 91% rename from scripts/weapon_system/weapon_system.gd rename to systems/weapon_system/weapon_system.gd index f30d7f5..259b16d 100644 --- a/scripts/weapon_system/weapon_system.gd +++ b/systems/weapon_system/weapon_system.gd @@ -103,16 +103,14 @@ func drop(weapon: WeaponSubStateMachine) -> void: return if slots.find_key(weapon) == "knife": return - var drop_data: Dictionary = {} - drop_data.type = "weapon" - drop_data.spawn_name = weapon.index - drop_data.ammo = weapon.ammo - drop_data.remaining_ammo = weapon.remaining_ammo - drop_data.slot = weapon.slot - drop_data.position = camera.global_position - drop_data.impulse = -camera.global_basis.z * 10 + player.velocity - Session.spawn(drop_data) + var dropped_weapon: DroppableWeapon = Registry.weapons[weapon.registry_entry].dropped_scene.instantiate() + dropped_weapon.weapon.ammo = weapon.ammo + dropped_weapon.weapon.remaining_ammo = weapon.remaining_ammo + dropped_weapon.weapon.slot = weapon.slot + Session.dynamic_objects_parent.add_child(dropped_weapon) + dropped_weapon.global_position = camera.global_position + dropped_weapon.apply_central_impulse(-camera.global_basis.z * 10 + player.velocity) $"../PickupRange".start_temp_ignore() diff --git a/scripts/weapon_system/weapon_system.gd.uid b/systems/weapon_system/weapon_system.gd.uid similarity index 100% rename from scripts/weapon_system/weapon_system.gd.uid rename to systems/weapon_system/weapon_system.gd.uid diff --git a/scripts/multiplayer/spawn_system/team_spawner.gd b/team_spawner.gd similarity index 100% rename from scripts/multiplayer/spawn_system/team_spawner.gd rename to team_spawner.gd diff --git a/scripts/multiplayer/spawn_system/team_spawner.gd.uid b/team_spawner.gd.uid similarity index 100% rename from scripts/multiplayer/spawn_system/team_spawner.gd.uid rename to team_spawner.gd.uid diff --git a/weapons/bomb.tres b/weapons/bomb.tres index 21e0293..a8f2d1b 100644 --- a/weapons/bomb.tres +++ b/weapons/bomb.tres @@ -1,9 +1,9 @@ [gd_resource type="Resource" script_class="WeaponResource" load_steps=5 format=3 uid="uid://b1obqb8w0o3ma"] -[ext_resource type="PackedScene" uid="uid://cxdgk74ln5xpn" path="res://scenes/weapons/droppable_bomb.tscn" id="1_sbnmj"] -[ext_resource type="Script" uid="uid://bvnn2eiwqbu7t" path="res://scripts/resources/weapon_resource.gd" id="1_w2ux2"] +[ext_resource type="PackedScene" uid="uid://cxdgk74ln5xpn" path="res://weapons/bomb/droppable_bomb.tscn" id="1_sbnmj"] +[ext_resource type="Script" uid="uid://bvnn2eiwqbu7t" path="res://systems/weapon_system/weapon_resource.gd" id="1_w2ux2"] [ext_resource type="Texture2D" uid="uid://dnxw4x3cmu7io" path="res://icon.svg" id="2_vkfbs"] -[ext_resource type="PackedScene" uid="uid://bxdatd1ilfgmc" path="res://scenes/weapons/bomb.tscn" id="4_shxvo"] +[ext_resource type="PackedScene" uid="uid://bxdatd1ilfgmc" path="res://weapons/bomb/bomb.tscn" id="4_shxvo"] [resource] script = ExtResource("1_w2ux2") diff --git a/scripts/weapon_system/bomb/active_bomb.gd b/weapons/bomb/active_bomb.gd similarity index 98% rename from scripts/weapon_system/bomb/active_bomb.gd rename to weapons/bomb/active_bomb.gd index dcc2419..0b308d1 100644 --- a/scripts/weapon_system/bomb/active_bomb.gd +++ b/weapons/bomb/active_bomb.gd @@ -1,5 +1,7 @@ extends Interactible +class_name ActiveBomb + var plant: StringName @onready var defuse_timer: Timer = $DefuseTimer @export var bomb_audio: MultiplayerAudio3D diff --git a/scripts/weapon_system/bomb/active_bomb.gd.uid b/weapons/bomb/active_bomb.gd.uid similarity index 100% rename from scripts/weapon_system/bomb/active_bomb.gd.uid rename to weapons/bomb/active_bomb.gd.uid diff --git a/spawnables/active_bomb.tscn b/weapons/bomb/active_bomb.tscn similarity index 95% rename from spawnables/active_bomb.tscn rename to weapons/bomb/active_bomb.tscn index 34dd3fd..519448c 100644 --- a/spawnables/active_bomb.tscn +++ b/weapons/bomb/active_bomb.tscn @@ -1,9 +1,9 @@ [gd_scene load_steps=10 format=3 uid="uid://dtbpyfdawb02b"] -[ext_resource type="Script" uid="uid://boftqgpgqf56g" path="res://scripts/weapon_system/bomb/active_bomb.gd" id="1_avh0g"] +[ext_resource type="Script" uid="uid://boftqgpgqf56g" path="res://weapons/bomb/active_bomb.gd" id="1_avh0g"] [ext_resource type="PackedScene" uid="uid://dftij0fdq3lbr" path="res://models/weapons/Bomb.glb" id="1_yh58y"] [ext_resource type="AudioStream" uid="uid://blqgr0uweyg38" path="res://audio/bomb_beep.ogg" id="3_0eiu1"] -[ext_resource type="Script" uid="uid://da0xv360va3b3" path="res://scripts/audio_system/multiplayer_audio_3d.gd" id="4_rcpur"] +[ext_resource type="Script" uid="uid://da0xv360va3b3" path="res://audio/audio_system/multiplayer_audio_3d.gd" id="4_rcpur"] [ext_resource type="AudioStream" uid="uid://dlvwyj5erlhss" path="res://audio/defuse.ogg" id="5_rcpur"] [ext_resource type="AudioStream" uid="uid://lmmqcovqat1u" path="res://audio/explosion.ogg" id="6_uibus"] diff --git a/scenes/weapons/bomb.tscn b/weapons/bomb/bomb.tscn similarity index 75% rename from scenes/weapons/bomb.tscn rename to weapons/bomb/bomb.tscn index 852ca71..266dd84 100644 --- a/scenes/weapons/bomb.tscn +++ b/weapons/bomb/bomb.tscn @@ -1,15 +1,15 @@ [gd_scene load_steps=6 format=3 uid="uid://bxdatd1ilfgmc"] -[ext_resource type="Script" uid="uid://e6lqknfl4ngt" path="res://scripts/weapon_system/weapon_substate_machine.gd" id="1_krsgt"] -[ext_resource type="Script" uid="uid://rx78vdadldm7" path="res://scripts/weapon_system/bomb/bomb_main_state.gd" id="2_870cc"] -[ext_resource type="Script" uid="uid://cx7j3kr1laq3s" path="res://scripts/weapon_system/bomb/bomb_idle_state.gd" id="3_1x0so"] -[ext_resource type="Script" uid="uid://dmyir46aricwi" path="res://scripts/weapon_system/bomb/bomb_intro_state.gd" id="4_fv3ha"] -[ext_resource type="Script" uid="uid://b5eapvgoni1pj" path="res://scripts/weapon_system/bomb/bomb_dropper.gd" id="5_fv3ha"] +[ext_resource type="Script" uid="uid://e6lqknfl4ngt" path="res://systems/weapon_system/weapon_substate_machine.gd" id="1_krsgt"] +[ext_resource type="Script" uid="uid://rx78vdadldm7" path="res://weapons/bomb/bomb_main_state.gd" id="2_870cc"] +[ext_resource type="Script" uid="uid://cx7j3kr1laq3s" path="res://weapons/bomb/bomb_idle_state.gd" id="3_1x0so"] +[ext_resource type="Script" uid="uid://dmyir46aricwi" path="res://weapons/bomb/bomb_intro_state.gd" id="4_fv3ha"] +[ext_resource type="Script" uid="uid://b5eapvgoni1pj" path="res://weapons/bomb/bomb_dropper.gd" id="5_fv3ha"] [node name="Bomb" type="Node" node_paths=PackedStringArray("enter_state")] script = ExtResource("1_krsgt") animation_prefix = &"baked_bomb_" -index = &"bomb" +registry_entry = &"bomb" visibility_target = &"bomb" max_ammo = 1 ammo_mags = 0 diff --git a/scripts/weapon_system/bomb/bomb_dropper.gd b/weapons/bomb/bomb_dropper.gd similarity index 100% rename from scripts/weapon_system/bomb/bomb_dropper.gd rename to weapons/bomb/bomb_dropper.gd diff --git a/scripts/weapon_system/bomb/bomb_dropper.gd.uid b/weapons/bomb/bomb_dropper.gd.uid similarity index 100% rename from scripts/weapon_system/bomb/bomb_dropper.gd.uid rename to weapons/bomb/bomb_dropper.gd.uid diff --git a/scripts/weapon_system/bomb/bomb_idle_state.gd b/weapons/bomb/bomb_idle_state.gd similarity index 100% rename from scripts/weapon_system/bomb/bomb_idle_state.gd rename to weapons/bomb/bomb_idle_state.gd diff --git a/scripts/weapon_system/bomb/bomb_idle_state.gd.uid b/weapons/bomb/bomb_idle_state.gd.uid similarity index 100% rename from scripts/weapon_system/bomb/bomb_idle_state.gd.uid rename to weapons/bomb/bomb_idle_state.gd.uid diff --git a/scripts/weapon_system/bomb/bomb_intro_state.gd b/weapons/bomb/bomb_intro_state.gd similarity index 100% rename from scripts/weapon_system/bomb/bomb_intro_state.gd rename to weapons/bomb/bomb_intro_state.gd diff --git a/scripts/weapon_system/bomb/bomb_intro_state.gd.uid b/weapons/bomb/bomb_intro_state.gd.uid similarity index 100% rename from scripts/weapon_system/bomb/bomb_intro_state.gd.uid rename to weapons/bomb/bomb_intro_state.gd.uid diff --git a/scripts/weapon_system/bomb/bomb_main_state.gd b/weapons/bomb/bomb_main_state.gd similarity index 75% rename from scripts/weapon_system/bomb/bomb_main_state.gd rename to weapons/bomb/bomb_main_state.gd index 88e86d0..f851dd8 100644 --- a/scripts/weapon_system/bomb/bomb_main_state.gd +++ b/weapons/bomb/bomb_main_state.gd @@ -1,5 +1,7 @@ extends WeaponState +@export var bomb_scene: PackedScene + func enter(): machine.animation_player.play(machine.animation_prefix+"plant") machine.animation_player.animation_finished.connect(on_animation_finished) @@ -15,7 +17,11 @@ func on_animation_finished(animation: StringName): if is_multiplayer_authority() == false: return if animation == machine.animation_prefix + "plant": - Session.spawn({"type": "object","spawn_name": "active_bomb", "position": machine.player_camera.get_parent().global_position,"plant": Session.get_site(machine.player.player_id).name}) + var bomb: ActiveBomb = bomb_scene.instantiate() + Session.dynamic_objects_parent.add_child(bomb) + + bomb.global_position = machine.player.global_position + bomb.plant = Session.get_site(machine.player.player_id).name machine.ammo -= 1 return_to_previous.emit() diff --git a/scripts/weapon_system/bomb/bomb_main_state.gd.uid b/weapons/bomb/bomb_main_state.gd.uid similarity index 100% rename from scripts/weapon_system/bomb/bomb_main_state.gd.uid rename to weapons/bomb/bomb_main_state.gd.uid diff --git a/scenes/weapons/droppable_bomb.tscn b/weapons/bomb/droppable_bomb.tscn similarity index 93% rename from scenes/weapons/droppable_bomb.tscn rename to weapons/bomb/droppable_bomb.tscn index 728bbda..796fc08 100644 --- a/scenes/weapons/droppable_bomb.tscn +++ b/weapons/bomb/droppable_bomb.tscn @@ -1,8 +1,8 @@ [gd_scene load_steps=6 format=3 uid="uid://cxdgk74ln5xpn"] -[ext_resource type="Script" uid="uid://cskgqgkr7pmb0" path="res://scripts/weapon_system/dropped_weapon.gd" id="1_hsebh"] +[ext_resource type="Script" uid="uid://cskgqgkr7pmb0" path="res://systems/weapon_system/dropped_weapon.gd" id="1_hsebh"] [ext_resource type="PackedScene" uid="uid://dftij0fdq3lbr" path="res://models/weapons/Bomb.glb" id="1_pcfvq"] -[ext_resource type="PackedScene" uid="uid://bxdatd1ilfgmc" path="res://scenes/weapons/bomb.tscn" id="2_ucc3u"] +[ext_resource type="PackedScene" uid="uid://bxdatd1ilfgmc" path="res://weapons/bomb/bomb.tscn" id="2_ucc3u"] [sub_resource type="BoxShape3D" id="BoxShape3D_hsebh"] size = Vector3(1, 0.25274658, 0.7492676) diff --git a/scripts/weapon_system/gun/idle_state.gd b/weapons/gun/idle_state.gd similarity index 100% rename from scripts/weapon_system/gun/idle_state.gd rename to weapons/gun/idle_state.gd diff --git a/scripts/weapon_system/gun/idle_state.gd.uid b/weapons/gun/idle_state.gd.uid similarity index 100% rename from scripts/weapon_system/gun/idle_state.gd.uid rename to weapons/gun/idle_state.gd.uid diff --git a/scripts/weapon_system/gun/intro_state.gd b/weapons/gun/intro_state.gd similarity index 100% rename from scripts/weapon_system/gun/intro_state.gd rename to weapons/gun/intro_state.gd diff --git a/scripts/weapon_system/gun/intro_state.gd.uid b/weapons/gun/intro_state.gd.uid similarity index 100% rename from scripts/weapon_system/gun/intro_state.gd.uid rename to weapons/gun/intro_state.gd.uid diff --git a/scripts/weapon_system/gun/reload_state.gd b/weapons/gun/reload_state.gd similarity index 100% rename from scripts/weapon_system/gun/reload_state.gd rename to weapons/gun/reload_state.gd diff --git a/scripts/weapon_system/gun/reload_state.gd.uid b/weapons/gun/reload_state.gd.uid similarity index 100% rename from scripts/weapon_system/gun/reload_state.gd.uid rename to weapons/gun/reload_state.gd.uid diff --git a/scripts/weapon_system/gun/semi_auto_shoot_state.gd b/weapons/gun/semi_auto_shoot_state.gd similarity index 100% rename from scripts/weapon_system/gun/semi_auto_shoot_state.gd rename to weapons/gun/semi_auto_shoot_state.gd diff --git a/scripts/weapon_system/gun/semi_auto_shoot_state.gd.uid b/weapons/gun/semi_auto_shoot_state.gd.uid similarity index 100% rename from scripts/weapon_system/gun/semi_auto_shoot_state.gd.uid rename to weapons/gun/semi_auto_shoot_state.gd.uid diff --git a/scenes/weapons/droppable_sp.tscn b/weapons/gun/sp/droppable_sp.tscn similarity index 92% rename from scenes/weapons/droppable_sp.tscn rename to weapons/gun/sp/droppable_sp.tscn index 5aacc41..73ec5bb 100644 --- a/scenes/weapons/droppable_sp.tscn +++ b/weapons/gun/sp/droppable_sp.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=6 format=3 uid="uid://dgfqppi21c2u0"] -[ext_resource type="Script" uid="uid://cskgqgkr7pmb0" path="res://scripts/weapon_system/dropped_weapon.gd" id="1_jym52"] -[ext_resource type="PackedScene" uid="uid://djwjl8xll53vn" path="res://scenes/weapons/starting_pistol.tscn" id="2_jym52"] +[ext_resource type="Script" uid="uid://cskgqgkr7pmb0" path="res://systems/weapon_system/dropped_weapon.gd" id="1_jym52"] +[ext_resource type="PackedScene" uid="uid://djwjl8xll53vn" path="res://weapons/gun/sp/starting_pistol.tscn" id="2_jym52"] [ext_resource type="PackedScene" uid="uid://d3sjs6efbshpk" path="res://models/weapons/starting_pistol.glb" id="3_jym52"] [sub_resource type="BoxShape3D" id="BoxShape3D_hsebh"] diff --git a/scenes/weapons/starting_pistol.tscn b/weapons/gun/sp/starting_pistol.tscn similarity index 85% rename from scenes/weapons/starting_pistol.tscn rename to weapons/gun/sp/starting_pistol.tscn index b8b522c..bc9310e 100644 --- a/scenes/weapons/starting_pistol.tscn +++ b/weapons/gun/sp/starting_pistol.tscn @@ -1,10 +1,10 @@ [gd_scene load_steps=8 format=3 uid="uid://djwjl8xll53vn"] -[ext_resource type="Script" uid="uid://e6lqknfl4ngt" path="res://scripts/weapon_system/weapon_substate_machine.gd" id="1_g7s1i"] -[ext_resource type="Script" uid="uid://ofv4e3dsfe8" path="res://scripts/weapon_system/gun/idle_state.gd" id="2_cmn6f"] -[ext_resource type="Script" uid="uid://vj13r83l3xyq" path="res://scripts/weapon_system/gun/semi_auto_shoot_state.gd" id="3_016ti"] -[ext_resource type="Script" uid="uid://hmekwp8444ao" path="res://scripts/weapon_system/gun/reload_state.gd" id="4_hoqxt"] -[ext_resource type="Script" uid="uid://bmj0bwy2tlian" path="res://scripts/weapon_system/gun/intro_state.gd" id="5_ud1dr"] +[ext_resource type="Script" uid="uid://e6lqknfl4ngt" path="res://systems/weapon_system/weapon_substate_machine.gd" id="1_g7s1i"] +[ext_resource type="Script" uid="uid://ofv4e3dsfe8" path="res://weapons/gun/idle_state.gd" id="2_cmn6f"] +[ext_resource type="Script" uid="uid://vj13r83l3xyq" path="res://weapons/gun/semi_auto_shoot_state.gd" id="3_016ti"] +[ext_resource type="Script" uid="uid://hmekwp8444ao" path="res://weapons/gun/reload_state.gd" id="4_hoqxt"] +[ext_resource type="Script" uid="uid://bmj0bwy2tlian" path="res://weapons/gun/intro_state.gd" id="5_ud1dr"] [sub_resource type="Curve" id="Curve_cmn6f"] _limits = [0.0, 0.1, 0.0, 20.0] @@ -21,7 +21,7 @@ point_count = 5 [node name="StartingPistol" type="Node" node_paths=PackedStringArray("enter_state")] script = ExtResource("1_g7s1i") animation_prefix = &"baked_sp_" -index = &"sp" +registry_entry = &"sp" visibility_target = &"sp" max_ammo = 20 speed_modifier = 0.9 diff --git a/scenes/weapons/knife.tscn b/weapons/knife/knife.tscn similarity index 76% rename from scenes/weapons/knife.tscn rename to weapons/knife/knife.tscn index 4310408..b587fc8 100644 --- a/scenes/weapons/knife.tscn +++ b/weapons/knife/knife.tscn @@ -1,10 +1,10 @@ [gd_scene load_steps=6 format=3 uid="uid://ts4xccpkjd3g"] -[ext_resource type="Script" uid="uid://e6lqknfl4ngt" path="res://scripts/weapon_system/weapon_substate_machine.gd" id="1_2xf1r"] -[ext_resource type="Script" uid="uid://dhmgd83rhjtyq" path="res://scripts/weapon_system/knife/knife_intro.gd" id="2_6fi8m"] -[ext_resource type="Script" uid="uid://cn6wyj4v5xeej" path="res://scripts/weapon_system/knife/knife_idle.gd" id="3_7hrnw"] -[ext_resource type="Script" uid="uid://d0r2fu21ei4hy" path="res://scripts/weapon_system/knife/knife_attack.gd" id="4_7hrnw"] -[ext_resource type="Script" uid="uid://ctx2rjjs48nrc" path="res://scripts/weapon_system/knife/knife_attack_heavy.gd" id="5_c20fe"] +[ext_resource type="Script" uid="uid://e6lqknfl4ngt" path="res://systems/weapon_system/weapon_substate_machine.gd" id="1_2xf1r"] +[ext_resource type="Script" uid="uid://dhmgd83rhjtyq" path="res://weapons/knife/knife_intro.gd" id="2_6fi8m"] +[ext_resource type="Script" uid="uid://cn6wyj4v5xeej" path="res://weapons/knife/knife_idle.gd" id="3_7hrnw"] +[ext_resource type="Script" uid="uid://d0r2fu21ei4hy" path="res://weapons/knife/knife_attack.gd" id="4_7hrnw"] +[ext_resource type="Script" uid="uid://ctx2rjjs48nrc" path="res://weapons/knife/knife_attack_heavy.gd" id="5_c20fe"] [node name="Knife" type="Node" node_paths=PackedStringArray("enter_state")] script = ExtResource("1_2xf1r") diff --git a/scripts/weapon_system/knife/knife_attack.gd b/weapons/knife/knife_attack.gd similarity index 100% rename from scripts/weapon_system/knife/knife_attack.gd rename to weapons/knife/knife_attack.gd diff --git a/scripts/weapon_system/knife/knife_attack.gd.uid b/weapons/knife/knife_attack.gd.uid similarity index 100% rename from scripts/weapon_system/knife/knife_attack.gd.uid rename to weapons/knife/knife_attack.gd.uid diff --git a/scripts/weapon_system/knife/knife_attack_heavy.gd b/weapons/knife/knife_attack_heavy.gd similarity index 100% rename from scripts/weapon_system/knife/knife_attack_heavy.gd rename to weapons/knife/knife_attack_heavy.gd diff --git a/scripts/weapon_system/knife/knife_attack_heavy.gd.uid b/weapons/knife/knife_attack_heavy.gd.uid similarity index 100% rename from scripts/weapon_system/knife/knife_attack_heavy.gd.uid rename to weapons/knife/knife_attack_heavy.gd.uid diff --git a/scripts/weapon_system/knife/knife_idle.gd b/weapons/knife/knife_idle.gd similarity index 100% rename from scripts/weapon_system/knife/knife_idle.gd rename to weapons/knife/knife_idle.gd diff --git a/scripts/weapon_system/knife/knife_idle.gd.uid b/weapons/knife/knife_idle.gd.uid similarity index 100% rename from scripts/weapon_system/knife/knife_idle.gd.uid rename to weapons/knife/knife_idle.gd.uid diff --git a/scripts/weapon_system/knife/knife_intro.gd b/weapons/knife/knife_intro.gd similarity index 100% rename from scripts/weapon_system/knife/knife_intro.gd rename to weapons/knife/knife_intro.gd diff --git a/scripts/weapon_system/knife/knife_intro.gd.uid b/weapons/knife/knife_intro.gd.uid similarity index 100% rename from scripts/weapon_system/knife/knife_intro.gd.uid rename to weapons/knife/knife_intro.gd.uid diff --git a/scripts/weapon_system/molikman/molik/idle_state.gd b/weapons/molikman/molik/idle_state.gd similarity index 100% rename from scripts/weapon_system/molikman/molik/idle_state.gd rename to weapons/molikman/molik/idle_state.gd diff --git a/scripts/weapon_system/molikman/molik/idle_state.gd.uid b/weapons/molikman/molik/idle_state.gd.uid similarity index 100% rename from scripts/weapon_system/molikman/molik/idle_state.gd.uid rename to weapons/molikman/molik/idle_state.gd.uid diff --git a/scripts/weapon_system/molikman/molik/intro_state.gd b/weapons/molikman/molik/intro_state.gd similarity index 100% rename from scripts/weapon_system/molikman/molik/intro_state.gd rename to weapons/molikman/molik/intro_state.gd diff --git a/scripts/weapon_system/molikman/molik/intro_state.gd.uid b/weapons/molikman/molik/intro_state.gd.uid similarity index 100% rename from scripts/weapon_system/molikman/molik/intro_state.gd.uid rename to weapons/molikman/molik/intro_state.gd.uid diff --git a/scripts/weapon_system/molikman/molik/molik.gd b/weapons/molikman/molik/molik.gd similarity index 68% rename from scripts/weapon_system/molikman/molik/molik.gd rename to weapons/molikman/molik/molik.gd index 2ebac1c..3129f40 100644 --- a/scripts/weapon_system/molikman/molik/molik.gd +++ b/weapons/molikman/molik/molik.gd @@ -3,10 +3,10 @@ extends RigidBody3D var contacts: int = 0 -func _on_body_entered(body: Node) -> void: +func _on_body_entered(_body: Node) -> void: contacts += 1 if contacts > 2: var grenade = load("res://scenes/projectiles/molikman/molikman_molotov_fire.tscn").instantiate() - Session.dynamic_objects_spawner.get_parent().add_child(grenade) + Session.dynamic_objects_parent.add_child(grenade,true) grenade.global_position = global_position queue_free() diff --git a/scripts/weapon_system/molikman/molik/molik.gd.uid b/weapons/molikman/molik/molik.gd.uid similarity index 100% rename from scripts/weapon_system/molikman/molik/molik.gd.uid rename to weapons/molikman/molik/molik.gd.uid diff --git a/scripts/weapon_system/molikman/molik/throw.gd b/weapons/molikman/molik/throw.gd similarity index 92% rename from scripts/weapon_system/molikman/molik/throw.gd rename to weapons/molikman/molik/throw.gd index 67319da..66b6e0d 100644 --- a/scripts/weapon_system/molikman/molik/throw.gd +++ b/weapons/molikman/molik/throw.gd @@ -23,6 +23,6 @@ func fire() -> void: if is_multiplayer_authority(): var molotov: RigidBody3D = molik.instantiate() - Session.dynamic_objects_spawner.get_parent().add_child(molotov) + Session.dynamic_objects_parent.add_child(molotov,true) molotov.global_transform = machine.player_camera.global_transform molotov.apply_impulse(-molotov.global_basis.z * 10) diff --git a/scripts/weapon_system/molikman/molik/throw.gd.uid b/weapons/molikman/molik/throw.gd.uid similarity index 100% rename from scripts/weapon_system/molikman/molik/throw.gd.uid rename to weapons/molikman/molik/throw.gd.uid diff --git a/weapons/molikman_molotov.tres b/weapons/molikman_molotov.tres index c943c7d..65b897b 100644 --- a/weapons/molikman_molotov.tres +++ b/weapons/molikman_molotov.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="WeaponResource" load_steps=4 format=3 uid="uid://b081hg7uxx1wu"] [ext_resource type="Texture2D" uid="uid://bmnqvop2dy5pm" path="res://textures/prototype_yellow_256x256.png" id="1_hmyxe"] -[ext_resource type="Script" uid="uid://bvnn2eiwqbu7t" path="res://scripts/resources/weapon_resource.gd" id="1_ktfgd"] +[ext_resource type="Script" uid="uid://bvnn2eiwqbu7t" path="res://systems/weapon_system/weapon_resource.gd" id="1_ktfgd"] [ext_resource type="PackedScene" uid="uid://c5q7e5dj86187" path="res://scenes/weapons/molikman_molik.tscn" id="3_6mu31"] [resource] diff --git a/weapons/sp.tres b/weapons/sp.tres index b44c072..ae78851 100644 --- a/weapons/sp.tres +++ b/weapons/sp.tres @@ -1,9 +1,9 @@ [gd_resource type="Resource" script_class="WeaponResource" load_steps=5 format=3 uid="uid://2jxguk5jxlim"] -[ext_resource type="PackedScene" uid="uid://dgfqppi21c2u0" path="res://scenes/weapons/droppable_sp.tscn" id="1_vpohq"] +[ext_resource type="PackedScene" uid="uid://dgfqppi21c2u0" path="res://weapons/gun/sp/droppable_sp.tscn" id="1_vpohq"] [ext_resource type="Texture2D" uid="uid://dnxw4x3cmu7io" path="res://icon.svg" id="2_c0lu7"] -[ext_resource type="Script" uid="uid://bvnn2eiwqbu7t" path="res://scripts/resources/weapon_resource.gd" id="3_eyl1o"] -[ext_resource type="PackedScene" uid="uid://djwjl8xll53vn" path="res://scenes/weapons/starting_pistol.tscn" id="4_vpohq"] +[ext_resource type="Script" uid="uid://bvnn2eiwqbu7t" path="res://systems/weapon_system/weapon_resource.gd" id="3_eyl1o"] +[ext_resource type="PackedScene" uid="uid://djwjl8xll53vn" path="res://weapons/gun/sp/starting_pistol.tscn" id="4_vpohq"] [resource] script = ExtResource("3_eyl1o") From 06c5fea9bd12552492e4fbc6a271808994f6f262 Mon Sep 17 00:00:00 2001 From: Rendo Date: Tue, 9 Dec 2025 11:58:13 +0500 Subject: [PATCH 05/11] why are you here --- levels/prototype_scene.tscn | 2 +- levels/split.tscn | 2 +- team_spawner.gd => multiplayer/team_spawner.gd | 0 team_spawner.gd.uid => multiplayer/team_spawner.gd.uid | 0 4 files changed, 2 insertions(+), 2 deletions(-) rename team_spawner.gd => multiplayer/team_spawner.gd (100%) rename team_spawner.gd.uid => multiplayer/team_spawner.gd.uid (100%) diff --git a/levels/prototype_scene.tscn b/levels/prototype_scene.tscn index a4e3dd2..5445e36 100644 --- a/levels/prototype_scene.tscn +++ b/levels/prototype_scene.tscn @@ -13,7 +13,7 @@ [ext_resource type="Script" uid="uid://dk1gjbuydemmb" path="res://multiplayer/plant_site/plant_site.gd" id="8_oujx2"] [ext_resource type="Script" uid="uid://b4cpux52fmx5o" path="res://multiplayer/plant_site/plant_deadzone.gd" id="9_1wlgq"] [ext_resource type="Material" uid="uid://c6xa4phihtya2" path="res://materials/Redmat.tres" id="9_ysk2e"] -[ext_resource type="Script" uid="uid://ypgm3aplt78m" path="res://team_spawner.gd" id="10_02ic3"] +[ext_resource type="Script" uid="uid://ypgm3aplt78m" path="res://multiplayer/team_spawner.gd" id="10_02ic3"] [ext_resource type="Script" uid="uid://3i00rp8urth7" path="res://systems/object_container.gd" id="11_02ic3"] [ext_resource type="Script" uid="uid://xwiw2g6uc21k" path="res://multiplayer/dynamic_objects_parent.gd" id="11_gcyg7"] [ext_resource type="Script" uid="uid://bala54fa32e35" path="res://gui/hud/player_round_display.gd" id="17_wsuwo"] diff --git a/levels/split.tscn b/levels/split.tscn index dcb525a..57b2224 100644 --- a/levels/split.tscn +++ b/levels/split.tscn @@ -3,7 +3,7 @@ [ext_resource type="Environment" uid="uid://ybeuqwdb504c" path="res://environments/split_environment.tres" id="1_muj2s"] [ext_resource type="Material" uid="uid://bx3f5vx71ynh5" path="res://materials/Graymat.tres" id="4_mj4b4"] [ext_resource type="Script" uid="uid://3i00rp8urth7" path="res://systems/object_container.gd" id="9_klida"] -[ext_resource type="Script" uid="uid://ypgm3aplt78m" path="res://team_spawner.gd" id="10_n3y50"] +[ext_resource type="Script" uid="uid://ypgm3aplt78m" path="res://multiplayer/team_spawner.gd" id="10_n3y50"] [ext_resource type="Script" path="res://multiplayer/spawn_system/dyn_objects_spawner.gd" id="11_ydk8w"] [ext_resource type="Script" uid="uid://dncldab5y4yod" path="res://systems/item_spawner.gd" id="12_kry5j"] [ext_resource type="PackedScene" uid="uid://cxdgk74ln5xpn" path="res://weapons/bomb/droppable_bomb.tscn" id="13_hy0sx"] diff --git a/team_spawner.gd b/multiplayer/team_spawner.gd similarity index 100% rename from team_spawner.gd rename to multiplayer/team_spawner.gd diff --git a/team_spawner.gd.uid b/multiplayer/team_spawner.gd.uid similarity index 100% rename from team_spawner.gd.uid rename to multiplayer/team_spawner.gd.uid From cd20f952ce49a779fb5b39e3ee5fd79fc1e967a0 Mon Sep 17 00:00:00 2001 From: Rendo Date: Tue, 9 Dec 2025 12:27:04 +0500 Subject: [PATCH 06/11] Shop --- gui/buy_menu/buy_button/buy_button.gd | 13 +-- gui/buy_menu/shop.gd | 29 ++++++ gui/buy_menu/shop.gd.uid | 1 + project.godot | 7 ++ scenes/molikman.tscn | 125 +++++++++++++------------ systems/weapon_system/weapon_system.gd | 9 ++ 6 files changed, 116 insertions(+), 68 deletions(-) create mode 100644 gui/buy_menu/shop.gd create mode 100644 gui/buy_menu/shop.gd.uid diff --git a/gui/buy_menu/buy_button/buy_button.gd b/gui/buy_menu/buy_button/buy_button.gd index 02fef47..da09b77 100644 --- a/gui/buy_menu/buy_button/buy_button.gd +++ b/gui/buy_menu/buy_button/buy_button.gd @@ -7,9 +7,10 @@ func _ready() -> void: text = str(weapon.cost) func _pressed() -> void: - var player_data = Session.get_player_data() - if player_data["money"] >= weapon.cost: - var player: Player = Session.player_nodes[multiplayer.get_unique_id()] - - player_data["money"] -= weapon.cost - player.get_node("WeaponSystem").add(weapon.weapon_system_scene.instantiate(),"ability_first") + try_server_buy.rpc_id(1) + +@rpc("any_peer","call_local","reliable") +func try_server_buy() -> void: + if not multiplayer.is_server(): + return + Shop.buy(multiplayer.get_remote_sender_id(),weapon) diff --git a/gui/buy_menu/shop.gd b/gui/buy_menu/shop.gd new file mode 100644 index 0000000..562d147 --- /dev/null +++ b/gui/buy_menu/shop.gd @@ -0,0 +1,29 @@ +extends Node + + +func can_buy(player_id: int,weapon: WeaponResource) -> bool: + return Session.player_data[player_id]["money"] >= weapon.cost + +func buy(player_id: int, weapon: WeaponResource) -> void: + if not multiplayer.is_server() or can_buy(player_id,weapon) == false: + return + + var player: Player = Session.player_nodes[player_id] + if player.hp == 0: + return + + var weapon_system: WeaponSystem = player.get_node("%WeaponSystem") + var slot: StringName = "" + match weapon.slot: + "ability": + slot = weapon_system.get_empty_ability_slot() + var anything: + slot = anything + + if not weapon_system.can_add(slot): + return + + var player_data = Session.player_data[player_id] + player_data["money"] -= weapon.cost + + weapon_system.add(weapon.weapon_system_scene.instantiate(),slot) diff --git a/gui/buy_menu/shop.gd.uid b/gui/buy_menu/shop.gd.uid new file mode 100644 index 0000000..e9a964b --- /dev/null +++ b/gui/buy_menu/shop.gd.uid @@ -0,0 +1 @@ +uid://hyldsai23dh4 diff --git a/project.godot b/project.godot index d35f188..d54e068 100644 --- a/project.godot +++ b/project.godot @@ -26,12 +26,19 @@ Session="*res://multiplayer/session.gd" ClientSettings="*res://gui/client_settings/client_settings.gd" ClientSettingsMenu="res://gui/client_settings/client_settings.tscn" Registry="*res://systems/registry.gd" +Shop="*res://gui/buy_menu/shop.gd" [display] window/size/viewport_width=1280 window/size/viewport_height=720 +[file_customization] + +folder_colors={ +"res://gui/": "green" +} + [input] plr_forward={ diff --git a/scenes/molikman.tscn b/scenes/molikman.tscn index d034709..bbdfb81 100644 --- a/scenes/molikman.tscn +++ b/scenes/molikman.tscn @@ -8140,365 +8140,365 @@ bones/1/name = "Arm.L" bones/1/parent = 0 bones/1/rest = Transform3D(-0.967654, 0.25016752, 0.0325744, -0.25158498, -0.96648616, -0.05108291, 0.018703416, -0.057625845, 0.998163, 0.26421797, 0.773799, 4.559311e-08) bones/1/enabled = true -bones/1/position = Vector3(0.264218, 0.773799, 7.5726156e-08) -bones/1/rotation = Quaternion(-0.11607456, -0.007566696, 0.95669395, -0.26684496) +bones/1/position = Vector3(0.264218, 0.7737991, 8.241175e-08) +bones/1/rotation = Quaternion(0.012689503, -0.12897189, 0.9333643, -0.33471844) bones/1/scale = Vector3(0.9999995, 1, 0.99999994) bones/2/name = "Forearm.L" bones/2/parent = 1 bones/2/rest = Transform3D(0.9995757, 0.013401157, 0.025863314, -0.011816048, 0.9980985, -0.060496498, -0.026624857, 0.060165223, 0.9978333, -1.3533281e-08, 0.4103367, 9.313226e-10) bones/2/enabled = true bones/2/position = Vector3(-1.3533281e-08, 0.4103367, 9.313226e-10) -bones/2/rotation = Quaternion(0.35293797, 0.012252082, -0.073760726, 0.9326543) +bones/2/rotation = Quaternion(0.6806289, 0.009440267, -0.14224508, 0.71862483) bones/2/scale = Vector3(1, 1, 1) bones/3/name = "Wrist.L" bones/3/parent = 2 bones/3/rest = Transform3D(-0.9710889, 0.23862918, 0.0065318705, 0.2375265, 0.96860886, -0.07333562, -0.023826849, -0.069663905, -0.9972859, 1.2121745e-08, 0.40612826, -7.421477e-10) bones/3/enabled = true bones/3/position = Vector3(1.2121745e-08, 0.40612826, -7.421477e-10) -bones/3/rotation = Quaternion(0.1121526, 0.9382349, -0.23010647, 0.23278317) +bones/3/rotation = Quaternion(0.08838514, 0.85444033, -0.45975256, 0.22527176) bones/3/scale = Vector3(1, 1, 1) bones/4/name = "ThumbU.L" bones/4/parent = 3 bones/4/rest = Transform3D(0.9771098, -0.21273556, 7.7299774e-08, 0.2122333, 0.97480285, 0.068675034, -0.014609697, -0.06710303, 0.99763906, -0.0045400136, 0.06477452, -0.046769787) bones/4/enabled = true bones/4/position = Vector3(-0.0045400136, 0.06477452, -0.046769787) -bones/4/rotation = Quaternion(-0.18413022, 0.109042466, -0.01852451, 0.97665894) +bones/4/rotation = Quaternion(-0.18413022, 0.10904248, -0.018524533, 0.97665894) bones/4/scale = Vector3(1, 0.99999994, 1) bones/5/name = "ThumbM.L" bones/5/parent = 4 bones/5/rest = Transform3D(0.96273476, -0.2702871, -0.009302501, 0.270358, 0.96273106, 0.0074529527, 0.0069413693, -0.009690224, 0.9999289, -9.109499e-09, 0.050440647, -1.0863523e-09) bones/5/enabled = true bones/5/position = Vector3(-9.109499e-09, 0.050440647, -1.0863523e-09) -bones/5/rotation = Quaternion(-0.003382863, -0.0049069775, -0.07181848, 0.9973999) +bones/5/rotation = Quaternion(-0.0028532161, -0.0052326904, -0.17534292, 0.98448944) bones/5/scale = Vector3(0.9999999, 1, 0.99999994) bones/6/name = "ThumbD.L" bones/6/parent = 5 bones/6/rest = Transform3D(0.9935268, -0.11359587, 0.00059893046, 0.11359593, 0.99347246, -0.01041187, 0.0005877246, 0.010412509, 0.9999456, -7.9744495e-09, 0.031673077, -2.8667273e-09) bones/6/enabled = true bones/6/position = Vector3(-7.9744495e-09, 0.031673077, -2.8667273e-09) -bones/6/rotation = Quaternion(0.004960197, 0.0016089659, -0.25340638, 0.96734595) +bones/6/rotation = Quaternion(0.0042233877, 0.0030586084, -0.5390605, 0.84225094) bones/6/scale = Vector3(0.99999994, 1, 0.99999994) bones/7/name = "IndexU.L" bones/7/parent = 3 bones/7/rest = Transform3D(0.9800801, -0.19626929, -0.030354138, 0.19836761, 0.95998544, 0.19768214, -0.009659407, -0.19976562, 0.97979605, 0.04529645, 0.07181831, -0.03615555) bones/7/enabled = true bones/7/position = Vector3(0.04529645, 0.07181831, -0.03615555) -bones/7/rotation = Quaternion(-0.100372516, -0.0052263015, 0.09966263, 0.98993206) +bones/7/rotation = Quaternion(-0.1003725, -0.0052263043, 0.09966264, 0.98993206) bones/7/scale = Vector3(1, 1, 0.99999994) bones/8/name = "IndexM.L" bones/8/parent = 7 bones/8/rest = Transform3D(0.9323135, -0.3615566, -0.008257606, 0.36068276, 0.9312451, -0.05187074, 0.026444064, 0.045381427, 0.99861956, 2.4359906e-08, 0.078790486, 4.656613e-10) bones/8/enabled = true bones/8/position = Vector3(2.4359906e-08, 0.078790486, 4.656613e-10) -bones/8/rotation = Quaternion(0.02378056, -0.011164779, 0.27729166, 0.96042657) +bones/8/rotation = Quaternion(0.023780614, -0.011164798, 0.27729172, 0.9604266) bones/8/scale = Vector3(0.9999999, 1, 0.9999999) bones/9/name = "IndexD.L" bones/9/parent = 8 bones/9/rest = Transform3D(0.99988145, 0.015218651, -0.0023559656, -0.015326478, 0.99832255, -0.055830937, 0.001502342, 0.055860423, 0.99843746, -1.967419e-08, 0.060257126, -9.313226e-10) bones/9/enabled = true bones/9/position = Vector3(-1.967419e-08, 0.060257126, -9.313226e-10) -bones/9/rotation = Quaternion(0.024683425, -0.013114907, 0.43138972, 0.9017327) +bones/9/rotation = Quaternion(0.023309475, -0.015425297, 0.5160131, 0.8561246) bones/9/scale = Vector3(1, 0.99999994, 1) bones/10/name = "MiddleU.L" bones/10/parent = 3 bones/10/rest = Transform3D(0.995789, -0.058257025, -0.070783034, 0.065396525, 0.9925152, 0.10313419, 0.064244956, -0.10732886, 0.99214566, 0.0423781, 0.07765784, -0.01126304) bones/10/enabled = true bones/10/position = Vector3(0.0423781, 0.07765784, -0.01126304) -bones/10/rotation = Quaternion(-0.052744843, -0.033839792, 0.030989215, 0.9975533) +bones/10/rotation = Quaternion(-0.05274482, -0.033839792, 0.030989213, 0.9975533) bones/10/scale = Vector3(0.99999994, 0.9999999, 0.99999994) bones/11/name = "MiddleM.L" bones/11/parent = 10 bones/11/rest = Transform3D(0.86401427, -0.5034334, 0.005847616, 0.50168175, 0.85991454, -0.09414042, 0.042364985, 0.0842723, 0.99554175, -6.426126e-08, 0.07325909, 8.731149e-10) bones/11/enabled = true bones/11/position = Vector3(-6.426126e-08, 0.07325909, 8.731149e-10) -bones/11/rotation = Quaternion(0.045131322, -0.013866683, 0.35200542, 0.9348064) +bones/11/rotation = Quaternion(0.045131326, -0.013866695, 0.35200542, 0.9348064) bones/11/scale = Vector3(1, 1, 0.99999994) bones/12/name = "MiddleD.L" bones/12/parent = 11 bones/12/rest = Transform3D(0.9998987, -0.014212552, -0.00084086665, 0.014225133, 0.99974453, 0.017563164, 0.0005910344, -0.017573344, 0.99984545, -3.655441e-08, 0.064242914, -3.259629e-09) bones/12/enabled = true bones/12/position = Vector3(-3.655441e-08, 0.064242914, -3.259629e-09) -bones/12/rotation = Quaternion(-0.008052284, 0.0035297836, 0.44480184, 0.89558583) +bones/12/rotation = Quaternion(-0.007675979, 0.004286906, 0.52877283, 0.8487179) bones/12/scale = Vector3(1, 0.99999994, 1) bones/13/name = "RingU.L" bones/13/parent = 3 bones/13/rest = Transform3D(0.9704054, 0.03888444, -0.23833017, -0.02366867, 0.9975139, 0.06637663, 0.2403187, -0.05877129, 0.9689131, 0.033461113, 0.07149333, 0.017992377) bones/13/enabled = true bones/13/position = Vector3(0.033461113, 0.07149333, 0.017992377) -bones/13/rotation = Quaternion(-0.03153701, -0.12061846, -0.015763242, 0.9920727) +bones/13/rotation = Quaternion(-0.031536993, -0.12061843, -0.015763246, 0.9920727) bones/13/scale = Vector3(0.99999994, 1, 0.9999998) bones/14/name = "RingM.L" bones/14/parent = 13 bones/14/rest = Transform3D(0.8251062, -0.5639382, -0.034260202, 0.5524452, 0.81802005, -0.16014954, 0.11833996, 0.11321349, 0.9864982, 1.6880222e-08, 0.07553467, 6.165976e-09) bones/14/enabled = true bones/14/position = Vector3(1.6880222e-08, 0.07553467, 6.165976e-09) -bones/14/rotation = Quaternion(0.067564145, -0.04675546, 0.38313726, 0.9200298) +bones/14/rotation = Quaternion(0.06756415, -0.04675546, 0.38313717, 0.9200299) bones/14/scale = Vector3(1.0000001, 1.0000001, 1.0000001) bones/15/name = "RingD.L" bones/15/parent = 14 bones/15/rest = Transform3D(0.99991727, -0.012864361, 0.00015441107, 0.012864626, 0.999672, -0.022144126, 0.00013050961, 0.022144279, 0.9997547, 1.8626451e-08, 0.064691424, -4.656613e-09) bones/15/enabled = true bones/15/position = Vector3(1.8626451e-08, 0.064691424, -4.656613e-09) -bones/15/rotation = Quaternion(0.009954605, -0.0048495512, 0.44418532, 0.89586663) +bones/15/rotation = Quaternion(0.009442741, -0.00578338, 0.528186, 0.84905654) bones/15/scale = Vector3(1, 0.99999994, 0.99999994) bones/16/name = "LittleU.L" bones/16/parent = 3 bones/16/rest = Transform3D(0.9178412, -0.18039086, -0.35359105, 0.15868124, 0.98324484, -0.089720085, 0.3638513, 0.026240522, 0.93108726, 0.03628368, 0.082845636, 0.04032454) bones/16/enabled = true bones/16/position = Vector3(0.03628368, 0.082845636, 0.04032454) -bones/16/rotation = Quaternion(0.029618153, -0.18324603, 0.0866043, 0.9787969) +bones/16/rotation = Quaternion(0.029618166, -0.18324599, 0.08660434, 0.9787969) bones/16/scale = Vector3(0.99999994, 0.9999999, 0.9999999) bones/17/name = "LittleM.L" bones/17/parent = 16 bones/17/rest = Transform3D(0.92672586, -0.36745474, -0.07846127, 0.35205162, 0.9221317, -0.16041435, 0.13129665, 0.12103772, 0.9839263, -2.0954758e-09, 0.061574344, -4.1909516e-09) bones/17/enabled = true bones/17/position = Vector3(-2.0954758e-09, 0.061574344, -4.1909516e-09) -bones/17/rotation = Quaternion(0.066403255, -0.06022823, 0.27693692, 0.95669705) +bones/17/rotation = Quaternion(0.06640326, -0.06022825, 0.27693692, 0.95669705) bones/17/scale = Vector3(1, 1, 0.99999994) bones/18/name = "LittleD.L" bones/18/parent = 17 bones/18/rest = Transform3D(0.9951905, -0.09795637, -0.0007189751, 0.09795622, 0.99507964, 0.014866696, -0.00074085005, -0.014865619, 0.9998894, 1.4901161e-08, 0.035935525, -1.7695129e-08) bones/18/enabled = true bones/18/position = Vector3(1.4901161e-08, 0.035935525, -1.7695129e-08) -bones/18/rotation = Quaternion(-0.0073038945, 0.0014285325, 0.2391246, 0.9709604) +bones/18/rotation = Quaternion(-0.0071328855, 0.0021234925, 0.33128664, 0.9435009) bones/18/scale = Vector3(1, 0.99999994, 1.0000001) bones/19/name = "ThumbCtrl.L" bones/19/parent = 3 bones/19/rest = Transform3D(0.9771098, -0.21273556, 9.247858e-08, 0.2122333, 0.97480285, 0.06867504, -0.014609714, -0.06710303, 0.99763906, -0.0045400136, 0.06477452, -0.046769787) bones/19/enabled = true bones/19/position = Vector3(-0.0045400136, 0.06477452, -0.046769787) -bones/19/rotation = Quaternion(-0.18413022, 0.10904248, -0.018524526, 0.97665894) +bones/19/rotation = Quaternion(-0.18413022, 0.109042495, -0.018524526, 0.97665894) bones/19/scale = Vector3(1, 0.99999994, 1) bones/20/name = "IndexCtrl.L" bones/20/parent = 3 bones/20/rest = Transform3D(0.9800801, -0.19626929, -0.030354116, 0.19836757, 0.9599856, 0.19768208, -0.009659403, -0.19976556, 0.9797962, 0.04529645, 0.07181834, -0.036155563) bones/20/enabled = true bones/20/position = Vector3(0.04529645, 0.07181834, -0.036155563) -bones/20/rotation = Quaternion(-0.10037247, -0.0052262973, 0.09966262, 0.98993206) +bones/20/rotation = Quaternion(-0.10037244, -0.0052262982, 0.09966263, 0.98993206) bones/20/scale = Vector3(1, 1.0000001, 1) bones/21/name = "MiddleCtrl.L" bones/21/parent = 3 bones/21/rest = Transform3D(0.995789, -0.058257017, -0.07078303, 0.06539652, 0.9925152, 0.1031342, 0.06424495, -0.10732886, 0.99214566, 0.0423781, 0.07765784, -0.011263036) bones/21/enabled = true bones/21/position = Vector3(0.0423781, 0.07765784, -0.011263036) -bones/21/rotation = Quaternion(-0.052744843, -0.033839785, 0.030989211, 0.9975533) +bones/21/rotation = Quaternion(-0.05274482, -0.033839785, 0.03098921, 0.9975533) bones/21/scale = Vector3(0.99999994, 0.9999999, 0.99999994) bones/22/name = "RingCtrl.L" bones/22/parent = 3 bones/22/rest = Transform3D(0.9704054, 0.03888438, -0.23833017, -0.023668619, 0.9975138, 0.0663766, 0.2403187, -0.05877127, 0.9689131, 0.033461053, 0.07149334, 0.017992355) bones/22/enabled = true bones/22/position = Vector3(0.033461053, 0.07149334, 0.017992355) -bones/22/rotation = Quaternion(-0.031537004, -0.12061846, -0.015763216, 0.9920727) +bones/22/rotation = Quaternion(-0.03153699, -0.12061845, -0.01576322, 0.9920727) bones/22/scale = Vector3(0.99999994, 0.9999999, 0.9999998) bones/23/name = "LittleCtrl.L" bones/23/parent = 3 bones/23/rest = Transform3D(0.91784114, -0.18039091, -0.35359108, 0.15868126, 0.9832449, -0.08972012, 0.3638513, 0.026240537, 0.9310873, 0.03628368, 0.08284565, 0.04032453) bones/23/enabled = true bones/23/position = Vector3(0.03628368, 0.08284565, 0.04032453) -bones/23/rotation = Quaternion(0.029618153, -0.18324603, 0.08660434, 0.9787969) +bones/23/rotation = Quaternion(0.029618178, -0.183246, 0.08660434, 0.9787969) bones/23/scale = Vector3(0.99999994, 0.99999994, 0.99999994) bones/24/name = "ArmPole.L" bones/24/parent = 0 bones/24/rest = Transform3D(-1, 0, 1.509958e-07, 0, 1, 0, -1.509958e-07, 0, -1, 0.35926056, 0.3746208, -0.29998538) bones/24/enabled = true -bones/24/position = Vector3(0.6056142, 0.20785579, -0.19235319) +bones/24/position = Vector3(0.6056142, 0.20785579, -0.19235316) bones/24/rotation = Quaternion(0, 1, 0, 7.54979e-08) bones/24/scale = Vector3(1, 1, 1) bones/25/name = "ArmCtrl.L" bones/25/parent = 0 bones/25/rest = Transform3D(0.94635725, 0.23162141, 0.22532214, 0.22532395, -0.97280645, 0.0536483, 0.23162217, 1.747915e-08, -0.9728062, 0.26421803, 0.77379894, 5.6864977e-08) bones/25/enabled = true -bones/25/position = Vector3(0.26421806, 0.773799, 8.248862e-08) -bones/25/rotation = Quaternion(0.98640305, 0.115810655, 0.1158104, -0.013596949) +bones/25/position = Vector3(0.26421806, 0.77379906, 8.9564054e-08) +bones/25/rotation = Quaternion(0.98640305, 0.115810655, 0.11581039, -0.013596952) bones/25/scale = Vector3(1.0000058, 1.0000005, 1) bones/26/name = "WristCtrl.L" bones/26/parent = 0 bones/26/rest = Transform3D(0.99986863, 1.6880067e-09, -0.016210483, 0.0011133, -0.9976389, 0.06866942, -0.016172118, -0.06867806, -0.9975134, 0.4638072, -0.017174125, -0.022513157) bones/26/enabled = true -bones/26/position = Vector3(0.5209434, 0.11365941, 0.27973163) -bones/26/rotation = Quaternion(0.99525756, 0.0013011391, -0.008000332, 0.096937135) +bones/26/position = Vector3(0.5027311, 0.31168783, 0.27170432) +bones/26/rotation = Quaternion(0.9950302, 0.0014013369, -0.008027737, 0.09923961) bones/26/scale = Vector3(1, 1, 1.0000056) bones/27/name = "Arm.R" bones/27/parent = 0 bones/27/rest = Transform3D(-0.9676544, -0.25016746, -0.032574747, 0.25158504, -0.96648616, -0.051082943, -0.018703751, -0.057625957, 0.99816304, -0.26421797, 0.773799, -8.039582e-08) bones/27/enabled = true -bones/27/position = Vector3(-0.2642181, 0.773799, -7.244679e-08) -bones/27/rotation = Quaternion(-0.004606466, 0.043080933, 0.98210853, 0.18326412) +bones/27/position = Vector3(-0.2642181, 0.77379906, -6.238784e-08) +bones/27/rotation = Quaternion(-0.13862602, -0.08580463, 0.9588067, 0.23261577) bones/27/scale = Vector3(0.99999994, 1, 1) bones/28/name = "Forearm.R" bones/28/parent = 27 bones/28/rest = Transform3D(0.99957556, -0.013401167, -0.025863245, 0.011816061, 0.9980984, -0.060496498, 0.026624788, 0.060165223, 0.99783325, 1.17579475e-08, 0.4103366, 3.7252903e-09) bones/28/enabled = true bones/28/position = Vector3(1.17579475e-08, 0.4103366, 3.7252903e-09) -bones/28/rotation = Quaternion(0.24371684, -0.012721976, 0.050934598, 0.96842444) +bones/28/rotation = Quaternion(0.5881924, -0.010499675, 0.12292688, 0.799255) bones/28/scale = Vector3(0.9999999, 0.9999999, 0.99999994) bones/29/name = "Wrist.R" bones/29/parent = 28 bones/29/rest = Transform3D(-0.9710889, -0.23862909, -0.0065321154, -0.23752637, 0.968609, -0.073335625, 0.02382708, -0.06966387, -0.9972859, -2.158049e-08, 0.4061282, -2.1100277e-09) bones/29/enabled = true bones/29/position = Vector3(-2.158049e-08, 0.4061282, -2.1100277e-09) -bones/29/rotation = Quaternion(-0.105007105, 0.9899002, -0.015528794, -0.09396898) +bones/29/rotation = Quaternion(-0.13033676, 0.95264983, -0.26576123, -0.06958225) bones/29/scale = Vector3(1, 1.0000001, 1) bones/30/name = "ThumbU.R" bones/30/parent = 29 bones/30/rest = Transform3D(0.97710997, 0.21273556, -2.9711325e-07, -0.21223329, 0.9748031, 0.06867511, 0.014609926, -0.067103066, 0.9976392, 0.0045400467, 0.06477455, -0.046769787) bones/30/enabled = true bones/30/position = Vector3(0.0045400467, 0.06477455, -0.046769787) -bones/30/rotation = Quaternion(-0.03416064, -0.0036758184, -0.10691859, 0.993674) +bones/30/rotation = Quaternion(-0.03416064, -0.0036758096, -0.1069186, 0.993674) bones/30/scale = Vector3(1.0000001, 1.0000001, 1.0000001) bones/31/name = "ThumbM.R" bones/31/parent = 30 bones/31/rest = Transform3D(0.9627348, 0.270287, 0.009302534, -0.27035788, 0.9627312, 0.0074529545, -0.006941402, -0.009690234, 0.99992895, 1.0739313e-08, 0.05044063, 6.8161654e-10) bones/31/enabled = true bones/31/position = Vector3(1.0739313e-08, 0.05044063, 6.8161654e-10) -bones/31/rotation = Quaternion(-0.0043263347, 0.0040993956, -0.13643965, 0.9906305) +bones/31/rotation = Quaternion(-0.004326243, 0.0040993905, -0.13643962, 0.9906305) bones/31/scale = Vector3(0.99999994, 1.0000001, 1) bones/32/name = "ThumbD.R" bones/32/parent = 31 bones/32/rest = Transform3D(0.99352676, 0.113595836, -0.0005989222, -0.113595866, 0.99347264, -0.010411862, -0.00058773125, 0.010412501, 0.99994564, 1.717126e-08, 0.031673037, 2.6193447e-09) bones/32/enabled = true bones/32/position = Vector3(1.717126e-08, 0.031673037, 2.6193447e-09) -bones/32/rotation = Quaternion(0.0052146167, -2.8286527e-06, -0.056890868, 0.99836683) +bones/32/rotation = Quaternion(0.005214617, -2.822548e-06, -0.056890875, 0.99836683) bones/32/scale = Vector3(0.9999999, 1.0000001, 1) bones/33/name = "IndexU.R" bones/33/parent = 29 bones/33/rest = Transform3D(0.9800801, 0.19626924, 0.030353922, -0.1983675, 0.95998544, 0.19768226, 0.00965963, -0.19976568, 0.97979605, -0.04529639, 0.07181834, -0.03615556) bones/33/enabled = true bones/33/position = Vector3(-0.04529639, 0.07181834, -0.03615556) -bones/33/rotation = Quaternion(-0.100372545, 0.005226185, -0.0996626, 0.98993206) +bones/33/rotation = Quaternion(-0.10037253, 0.0052261916, -0.0996626, 0.98993206) bones/33/scale = Vector3(1, 0.99999994, 0.99999994) bones/34/name = "IndexM.R" bones/34/parent = 33 bones/34/rest = Transform3D(0.9323134, 0.3615565, 0.008257622, -0.3606826, 0.9312451, -0.051870808, -0.026444094, 0.04538148, 0.9986197, 1.2980308e-08, 0.07879048, -2.3283064e-09) bones/34/enabled = true bones/34/position = Vector3(1.2980308e-08, 0.07879048, -2.3283064e-09) -bones/34/rotation = Quaternion(0.024743041, 0.008828865, -0.18375322, 0.9826214) +bones/34/rotation = Quaternion(0.024743002, 0.008828901, -0.1837532, 0.9826214) bones/34/scale = Vector3(0.9999997, 1, 1) bones/35/name = "IndexD.R" bones/35/parent = 34 bones/35/rest = Transform3D(0.99988145, -0.015218617, 0.0023559635, 0.015326444, 0.99832255, -0.05583094, -0.0015023419, 0.05586043, 0.9984374, -9.895302e-09, 0.060257077, 1.3969839e-09) bones/35/enabled = true bones/35/position = Vector3(-9.895302e-09, 0.060257077, 1.3969839e-09) -bones/35/rotation = Quaternion(0.023770574, 0.014704669, -0.48956946, 0.8715162) +bones/35/rotation = Quaternion(0.023770606, 0.014704762, -0.48956946, 0.8715162) bones/35/scale = Vector3(1, 0.99999994, 0.99999994) bones/36/name = "MiddleU.R" bones/36/parent = 29 bones/36/rest = Transform3D(0.9957891, 0.05825713, 0.07078279, -0.06539661, 0.9925152, 0.103134215, -0.064244695, -0.10732887, 0.9921457, -0.04237805, 0.07765788, -0.011263045) bones/36/enabled = true bones/36/position = Vector3(-0.04237805, 0.07765788, -0.011263045) -bones/36/rotation = Quaternion(-0.05274485, 0.03383966, -0.03098926, 0.9975533) +bones/36/rotation = Quaternion(-0.052744858, 0.03383967, -0.030989254, 0.9975533) bones/36/scale = Vector3(1, 0.9999999, 1) bones/37/name = "MiddleM.R" bones/37/parent = 36 bones/37/rest = Transform3D(0.8640145, 0.50343317, -0.0058475533, -0.5016816, 0.8599146, -0.09414036, -0.04236499, 0.08427222, 0.99554175, 3.4226105e-08, 0.073259085, -2.910383e-10) bones/37/enabled = true bones/37/position = Vector3(3.4226105e-08, 0.073259085, -2.910383e-10) -bones/37/rotation = Quaternion(0.044503566, 0.015765553, -0.39127773, 0.9190607) +bones/37/rotation = Quaternion(0.044503525, 0.01576555, -0.3912778, 0.91906077) bones/37/scale = Vector3(1.0000001, 0.99999994, 0.99999994) bones/38/name = "MiddleD.R" bones/38/parent = 37 bones/38/rest = Transform3D(0.9998987, 0.01421252, 0.00084087194, -0.014225099, 0.9997446, 0.017563174, -0.0005910403, -0.017573357, 0.9998453, 6.9849193e-09, 0.06424289, 3.259629e-09) bones/38/enabled = true bones/38/position = Vector3(6.9849193e-09, 0.06424289, 3.259629e-09) -bones/38/rotation = Quaternion(-0.0068607684, -0.0054980787, -0.661929, 0.749515) +bones/38/rotation = Quaternion(-0.006035667, -0.0063930084, -0.7591109, 0.650902) bones/38/scale = Vector3(1, 1, 0.9999999) bones/39/name = "RingU.R" bones/39/parent = 29 bones/39/rest = Transform3D(0.97040546, -0.03888434, 0.23833002, 0.023668591, 0.9975139, 0.0663766, -0.24031854, -0.05877128, 0.9689132, -0.033461094, 0.07149336, 0.017992368) bones/39/enabled = true bones/39/position = Vector3(-0.033461094, 0.07149336, 0.017992368) -bones/39/rotation = Quaternion(-0.031536996, 0.12061837, 0.015763192, 0.99207276) +bones/39/rotation = Quaternion(-0.03153701, 0.120618366, 0.015763192, 0.99207276) bones/39/scale = Vector3(1, 1, 0.9999999) bones/40/name = "RingM.R" bones/40/parent = 39 bones/40/rest = Transform3D(0.8251063, 0.56393784, 0.034260213, -0.55244493, 0.81802005, -0.16014935, -0.11833983, 0.11321335, 0.98649806, -1.9383151e-08, 0.07553466, 5.743118e-09) bones/40/enabled = true bones/40/position = Vector3(-1.9383151e-08, 0.07553466, 5.743118e-09) -bones/40/rotation = Quaternion(0.055570774, 0.06052161, -0.5768524, 0.81270564) +bones/40/rotation = Quaternion(0.055570778, 0.060521662, -0.57685244, 0.8127056) bones/40/scale = Vector3(1, 0.99999994, 1) bones/41/name = "RingD.R" bones/41/parent = 40 bones/41/rest = Transform3D(0.99991727, 0.012864309, -0.00015439918, -0.012864574, 0.999672, -0.022144107, -0.00013052007, 0.02214426, 0.9997548, 6.519258e-09, 0.06469142, 1.8626451e-08) bones/41/enabled = true bones/41/position = Vector3(6.519258e-09, 0.06469142, 1.8626451e-08) -bones/41/rotation = Quaternion(0.008899972, 0.0065879845, -0.6005104, 0.7995404) +bones/41/rotation = Quaternion(0.006386018, 0.009045998, -0.8208931, 0.57097465) bones/41/scale = Vector3(1, 0.99999994, 1) bones/42/name = "LittleU.R" bones/42/parent = 29 bones/42/rest = Transform3D(0.91784126, 0.18039082, 0.35359094, -0.15868118, 0.9832451, -0.08972006, -0.36385116, 0.026240546, 0.93108743, -0.036283698, 0.08284566, 0.04032454) bones/42/enabled = true bones/42/position = Vector3(-0.036283698, 0.08284566, 0.04032454) -bones/42/rotation = Quaternion(0.029618138, 0.18324591, -0.08660426, 0.978797) +bones/42/rotation = Quaternion(0.029618185, 0.18324591, -0.08660428, 0.978797) bones/42/scale = Vector3(1, 1.0000001, 1) bones/43/name = "LittleM.R" bones/43/parent = 42 bones/43/rest = Transform3D(0.9267258, 0.3674547, 0.078461215, -0.35205156, 0.9221319, -0.16041426, -0.13129655, 0.12103769, 0.9839263, 4.5401976e-09, 0.061574332, 1.4901161e-08) bones/43/enabled = true bones/43/position = Vector3(4.5401976e-09, 0.061574332, 1.4901161e-08) -bones/43/rotation = Quaternion(0.04652544, 0.07663028, -0.5376598, 0.83838236) +bones/43/rotation = Quaternion(0.046525456, 0.076630265, -0.5376598, 0.83838236) bones/43/scale = Vector3(0.9999999, 1.0000001, 0.99999994) bones/44/name = "LittleD.R" bones/44/parent = 43 bones/44/rest = Transform3D(0.99519044, 0.09795644, 0.00071900914, -0.097956285, 0.99507964, 0.014866768, 0.0007408244, -0.014865696, 0.99988925, -2.6077032e-08, 0.035935488, 2.0489097e-08) bones/44/enabled = true bones/44/position = Vector3(-2.6077032e-08, 0.035935488, 2.0489097e-08) -bones/44/rotation = Quaternion(-0.005342348, -0.00518124, -0.7300394, 0.68336457) +bones/44/rotation = Quaternion(-0.0030077088, -0.006807417, -0.9331264, 0.35947162) bones/44/scale = Vector3(1, 0.99999994, 1) bones/45/name = "ThumbCtrl.R" bones/45/parent = 29 bones/45/rest = Transform3D(0.97710997, 0.21273556, -3.141077e-07, -0.21223329, 0.9748031, 0.06867511, 0.014609943, -0.06710306, 0.9976392, 0.0045400467, 0.06477455, -0.046769787) bones/45/enabled = true bones/45/position = Vector3(0.0045400467, 0.06477455, -0.046769787) -bones/45/rotation = Quaternion(-0.03416064, -0.0036758187, -0.10691858, 0.993674) +bones/45/rotation = Quaternion(-0.034160633, -0.003675816, -0.10691861, 0.993674) bones/45/scale = Vector3(1.0000001, 1.0000001, 1.0000001) bones/46/name = "IndexCtrl.R" bones/46/parent = 29 bones/46/rest = Transform3D(0.9800801, 0.1962692, 0.030353911, -0.19836746, 0.9599855, 0.1976822, 0.009659619, -0.19976562, 0.9797961, -0.04529639, 0.07181837, -0.036155567) bones/46/enabled = true bones/46/position = Vector3(-0.04529639, 0.07181837, -0.036155567) -bones/46/rotation = Quaternion(-0.100372516, 0.0052261977, -0.09966259, 0.98993206) +bones/46/rotation = Quaternion(-0.10037252, 0.0052261893, -0.09966258, 0.98993206) bones/46/scale = Vector3(1, 1, 1) bones/47/name = "MiddleCtrl.R" bones/47/parent = 29 bones/47/rest = Transform3D(0.9957891, 0.05825713, 0.07078278, -0.06539661, 0.9925152, 0.103134215, -0.06424469, -0.10732887, 0.9921457, -0.04237805, 0.07765788, -0.011263043) bones/47/enabled = true bones/47/position = Vector3(-0.04237805, 0.07765788, -0.011263043) -bones/47/rotation = Quaternion(-0.052744865, 0.033839665, -0.030989254, 0.9975533) +bones/47/rotation = Quaternion(-0.052744843, 0.033839665, -0.03098925, 0.9975533) bones/47/scale = Vector3(1, 0.9999999, 1) bones/48/name = "RingCtrl.R" bones/48/parent = 29 bones/48/rest = Transform3D(0.97040546, -0.038884338, 0.23833002, 0.023668593, 0.9975139, 0.06637658, -0.24031854, -0.058771256, 0.9689132, -0.033461034, 0.07149337, 0.017992346) bones/48/enabled = true bones/48/position = Vector3(-0.033461034, 0.07149337, 0.017992346) -bones/48/rotation = Quaternion(-0.031536963, 0.120618366, 0.015763193, 0.99207276) +bones/48/rotation = Quaternion(-0.031537, 0.12061836, 0.015763195, 0.99207276) bones/48/scale = Vector3(1, 1, 0.9999999) bones/49/name = "LittleCtrl.R" bones/49/parent = 29 bones/49/rest = Transform3D(0.91784126, 0.18039085, 0.353591, -0.15868121, 0.9832451, -0.08972009, -0.36385122, 0.026240563, 0.93108743, -0.036283698, 0.08284567, 0.04032453) bones/49/enabled = true bones/49/position = Vector3(-0.036283698, 0.08284567, 0.04032453) -bones/49/rotation = Quaternion(0.029618144, 0.1832459, -0.0866043, 0.9787969) +bones/49/rotation = Quaternion(0.029618159, 0.18324593, -0.0866043, 0.9787969) bones/49/scale = Vector3(1, 1.0000001, 1) bones/50/name = "ArmPole.R" bones/50/parent = 0 bones/50/rest = Transform3D(-1, 0, 3.8941437e-07, 0, 1, 0, -3.8941437e-07, 0, -1, -0.35926044, 0.3746208, -0.29998556) bones/50/enabled = true -bones/50/position = Vector3(-0.50106835, 0.038118243, -0.18320106) +bones/50/position = Vector3(-0.5010683, 0.038118243, -0.18320103) bones/50/rotation = Quaternion(0, 1, 0, 1.9470718e-07) bones/50/scale = Vector3(1, 1, 1) bones/51/name = "ArmCtrl.R" bones/51/parent = 0 bones/51/rest = Transform3D(0.94635737, -0.23162138, -0.2253216, -0.22532392, -0.9728065, 0.05364829, -0.23162167, -1.0385237e-07, -0.9728063, -0.26421803, 0.77379894, -6.9123985e-08) bones/51/enabled = true -bones/51/position = Vector3(-0.26421806, 0.77379906, -5.8168844e-08) +bones/51/position = Vector3(-0.26421806, 0.7737991, -5.143851e-08) bones/51/rotation = Quaternion(0.9864031, -0.11581065, -0.115810156, -0.013596978) bones/51/scale = Vector3(1.0000058, 1.0000005, 1) bones/52/name = "WristCtrl.R" bones/52/parent = 0 bones/52/rest = Transform3D(0.9998686, -1.920822e-09, 0.016210958, -0.0011133328, -0.9976389, 0.068669416, 0.016172592, -0.06867806, -0.9975133, -0.4638072, -0.017174125, -0.022513377) bones/52/enabled = true -bones/52/position = Vector3(-0.4992833, 0.063198194, 0.25505123) -bones/52/rotation = Quaternion(0.9634464, -0.0027018473, 0.0076421746, 0.26777864) +bones/52/position = Vector3(-0.5291817, 0.23701736, 0.25988343) +bones/52/rotation = Quaternion(0.96344376, -0.0025806255, 0.007638432, 0.26778945) bones/52/scale = Vector3(0.99999994, 1, 1.0000055) bones/53/name = "neutral_bone" bones/53/parent = -1 @@ -8559,29 +8559,29 @@ bones/0/name = "DownCasing" bones/0/parent = -1 bones/0/rest = Transform3D(1, -3.1337524e-16, -6.436688e-14, -6.436689e-14, -0.009737134, -0.99995255, -3.1338864e-16, 0.99995255, -0.009737134, -1.376031e-17, -0.061970927, -0.35584867) bones/0/enabled = true -bones/0/position = Vector3(-1.1928003e-07, 0.12658781, 1.0104566) -bones/0/rotation = Quaternion(4.2351576e-08, 0.71054107, -0.7036557, 4.1941128e-08) +bones/0/position = Vector3(-1.19209275e-07, 0.33656913, 1.0125012) +bones/0/rotation = Quaternion(0.00010756433, -0.7105326, 0.7036643, -5.5809916e-05) bones/0/scale = Vector3(1, 0.99999994, 0.99999994) bones/1/name = "UpCasing" bones/1/parent = 0 bones/1/rest = Transform3D(1, 3.0177497e-16, 2.1433547e-14, -2.0314211e-16, 0.99998933, -0.0046016485, -2.143471e-14, 0.0046016485, 0.99998933, -4.4210334e-15, -0.0037285234, -0.06914721) bones/1/enabled = true bones/1/position = Vector3(-4.4210334e-15, -0.0037285234, -0.06914721) -bones/1/rotation = Quaternion(0.0023008303, 1.0703215e-14, -1.261531e-16, 0.9999974) +bones/1/rotation = Quaternion(0.0023008306, 2.9309312e-14, -1.904343e-12, 0.9999974) bones/1/scale = Vector3(1, 0.9999999, 0.9999999) bones/2/name = "Lock.L" bones/2/parent = 1 bones/2/rest = Transform3D(1, -2.2826183e-13, 4.7683716e-06, 4.768358e-06, -0.0023846624, -0.99999714, 1.1371185e-08, 0.99999714, -0.0023846624, 0.40466008, 0.74391246, -0.04321898) bones/2/enabled = true bones/2/position = Vector3(0.40466008, 0.74391246, -0.04321898) -bones/2/rotation = Quaternion(0.7079494, 1.6838625e-06, 1.6878829e-06, 0.7062632) +bones/2/rotation = Quaternion(0.7079494, 1.6838635e-06, 1.6878844e-06, 0.7062632) bones/2/scale = Vector3(1, 0.99999994, 0.99999994) bones/3/name = "Lock.R" bones/3/parent = 1 bones/3/rest = Transform3D(1, -2.2826183e-13, 4.7683716e-06, 4.768358e-06, -0.0023846624, -0.99999714, 1.1371185e-08, 0.99999714, -0.0023846624, -0.4074956, 0.74391246, -0.04321898) bones/3/enabled = true bones/3/position = Vector3(-0.4074956, 0.74391246, -0.04321898) -bones/3/rotation = Quaternion(0.7079494, 1.6838625e-06, 1.6878829e-06, 0.7062632) +bones/3/rotation = Quaternion(0.7079494, 1.6838635e-06, 1.6878844e-06, 0.7062632) bones/3/scale = Vector3(1, 0.99999994, 0.99999994) [node name="Case" type="MeshInstance3D" parent="Camera3D/molikman_hands/Armature/Skeleton3D"] @@ -8807,6 +8807,7 @@ player_input = NodePath("../PlayerInput") jump_velocity = 12.0 [node name="WeaponSystem" type="Node" parent="." node_paths=PackedStringArray("animation_player", "camera", "player", "player_input")] +unique_name_in_owner = true script = ExtResource("4_qlg0r") animation_player = NodePath("../Camera3D/molikman_hands/AnimationPlayer") camera = NodePath("../Camera3D") diff --git a/systems/weapon_system/weapon_system.gd b/systems/weapon_system/weapon_system.gd index 259b16d..d91a830 100644 --- a/systems/weapon_system/weapon_system.gd +++ b/systems/weapon_system/weapon_system.gd @@ -71,6 +71,15 @@ func add(state: WeaponSubStateMachine, slot: StringName,ignore_parent: bool = fa ammo_updated.emit(current_state.ammo,current_state.remaining_ammo) state.enter.call_deferred() +func get_empty_ability_slot() -> StringName: + if slots["ability_first"] == null: + return "ability_first" + elif slots["ability_second"] == null: + return "ability_second" + elif slots["ability_third"] == null: + return "ability_third" + return "ability_first" + @rpc("authority","call_remote","reliable") func switch(to: StringName, exit: bool = true): if slots.has(to) == false or slots[to] == null or slots[to] == current_state or (multiplayer.get_remote_sender_id() != 1 and is_multiplayer_authority() == false): From 3f99f1b8dde2a5fdb0e85db60a2f6464a5102a25 Mon Sep 17 00:00:00 2001 From: Rendo Date: Tue, 9 Dec 2025 21:02:29 +0500 Subject: [PATCH 07/11] Refactor Part II --- scenes/game.tscn => game.tscn | 0 gui/hud/player_ammo_display.gd | 1 - levels/prototype_scene.tscn | 2 +- multiplayer/team_spawner.gd | 2 +- {scenes => players}/molikman.tscn | 192 +++++++++--------- .../player/collision_team_updater.gd | 0 .../player/collision_team_updater.gd.uid | 0 .../player/dead_player_spectator.gd | 0 .../player/dead_player_spectator.gd.uid | 0 {systems => players}/player/player.gd | 0 {systems => players}/player/player.gd.uid | 0 {systems => players}/player/player_camera.gd | 0 .../player/player_camera.gd.uid | 0 {systems => players}/player/player_global.gd | 0 .../player/player_global.gd.uid | 0 {systems => players}/player/player_input.gd | 0 .../player/player_input.gd.uid | 0 .../player/player_interaction.gd | 0 .../player/player_interaction.gd.uid | 0 .../player/player_movement.gd | 0 .../player/player_movement.gd.uid | 0 {systems => players}/player/player_pickup.gd | 9 +- .../player/player_pickup.gd.uid | 0 {systems => players}/player/player_raycast.gd | 0 .../player/player_raycast.gd.uid | 0 .../player/states/crouching.gd | 0 .../player/states/crouching.gd.uid | 0 {systems => players}/player/states/death.gd | 0 .../player/states/death.gd.uid | 0 {systems => players}/player/states/falling.gd | 0 .../player/states/falling.gd.uid | 0 .../player/states/standing.gd | 0 .../player/states/standing.gd.uid | 0 {systems => players}/player/states/walk.gd | 0 .../player/states/walk.gd.uid | 0 .../player/team_color_switcher.gd | 0 .../player/team_color_switcher.gd.uid | 0 {scenes => players}/spectator.tscn | 2 +- players/weapon_spawner.tscn | 5 + project.godot | 2 +- systems/player/spectator.gd => spectator.gd | 0 .../spectator.gd.uid => spectator.gd.uid | 0 .../weapon_system/starting_weapon_spawner.gd | 10 +- .../weapon_system/weapon_substate_machine.gd | 11 + systems/weapon_system/weapon_system.gd | 61 ++---- weapons/bomb/bomb.tscn | 4 +- weapons/gun/reload_state.gd | 2 +- weapons/gun/sp/starting_pistol.tscn | 13 +- weapons/molikman/molik/molik.gd | 6 +- .../molikman/molik}/molik.tscn | 10 +- .../molikman/molik}/molikman_molik.tscn | 13 +- .../molikman/molik}/molikman_molotov_fire.gd | 0 .../molik}/molikman_molotov_fire.gd.uid | 0 .../molik}/molikman_molotov_fire.tscn | 12 +- weapons/molikman/molik/throw.gd | 2 +- weapons/molikman_molotov.tres | 2 +- 56 files changed, 193 insertions(+), 168 deletions(-) rename scenes/game.tscn => game.tscn (100%) rename {scenes => players}/molikman.tscn (99%) rename {systems => players}/player/collision_team_updater.gd (100%) rename {systems => players}/player/collision_team_updater.gd.uid (100%) rename {systems => players}/player/dead_player_spectator.gd (100%) rename {systems => players}/player/dead_player_spectator.gd.uid (100%) rename {systems => players}/player/player.gd (100%) rename {systems => players}/player/player.gd.uid (100%) rename {systems => players}/player/player_camera.gd (100%) rename {systems => players}/player/player_camera.gd.uid (100%) rename {systems => players}/player/player_global.gd (100%) rename {systems => players}/player/player_global.gd.uid (100%) rename {systems => players}/player/player_input.gd (100%) rename {systems => players}/player/player_input.gd.uid (100%) rename {systems => players}/player/player_interaction.gd (100%) rename {systems => players}/player/player_interaction.gd.uid (100%) rename {systems => players}/player/player_movement.gd (100%) rename {systems => players}/player/player_movement.gd.uid (100%) rename {systems => players}/player/player_pickup.gd (77%) rename {systems => players}/player/player_pickup.gd.uid (100%) rename {systems => players}/player/player_raycast.gd (100%) rename {systems => players}/player/player_raycast.gd.uid (100%) rename {systems => players}/player/states/crouching.gd (100%) rename {systems => players}/player/states/crouching.gd.uid (100%) rename {systems => players}/player/states/death.gd (100%) rename {systems => players}/player/states/death.gd.uid (100%) rename {systems => players}/player/states/falling.gd (100%) rename {systems => players}/player/states/falling.gd.uid (100%) rename {systems => players}/player/states/standing.gd (100%) rename {systems => players}/player/states/standing.gd.uid (100%) rename {systems => players}/player/states/walk.gd (100%) rename {systems => players}/player/states/walk.gd.uid (100%) rename {systems => players}/player/team_color_switcher.gd (100%) rename {systems => players}/player/team_color_switcher.gd.uid (100%) rename {scenes => players}/spectator.tscn (86%) create mode 100644 players/weapon_spawner.tscn rename systems/player/spectator.gd => spectator.gd (100%) rename systems/player/spectator.gd.uid => spectator.gd.uid (100%) rename {scenes/weapons => weapons/molikman/molik}/molik.tscn (69%) rename {scenes/weapons => weapons/molikman/molik}/molikman_molik.tscn (66%) rename {scenes/projectiles/molikman => weapons/molikman/molik}/molikman_molotov_fire.gd (100%) rename {scenes/projectiles/molikman => weapons/molikman/molik}/molikman_molotov_fire.gd.uid (100%) rename {scenes/projectiles/molikman => weapons/molikman/molik}/molikman_molotov_fire.tscn (83%) diff --git a/scenes/game.tscn b/game.tscn similarity index 100% rename from scenes/game.tscn rename to game.tscn diff --git a/gui/hud/player_ammo_display.gd b/gui/hud/player_ammo_display.gd index 20b6b1a..d88c5fc 100644 --- a/gui/hud/player_ammo_display.gd +++ b/gui/hud/player_ammo_display.gd @@ -1,5 +1,4 @@ extends Label - func on_ammo_updated(ammo: int, remaining_ammo: int): text = str(ammo)+"/"+str(remaining_ammo) diff --git a/levels/prototype_scene.tscn b/levels/prototype_scene.tscn index 5445e36..60c19e9 100644 --- a/levels/prototype_scene.tscn +++ b/levels/prototype_scene.tscn @@ -292,7 +292,7 @@ script = ExtResource("11_02ic3") exlusion_list = [NodePath("MultiplayerSpawner"), NodePath("Bomb"), NodePath("Parenter")] [node name="MultiplayerSpawner" type="MultiplayerSpawner" parent="DynamicObjectsContainer"] -_spawnable_scenes = PackedStringArray("uid://cxdgk74ln5xpn", "uid://l4t1mflutm3t", "uid://b6qahd6q60js7") +_spawnable_scenes = PackedStringArray("uid://cxdgk74ln5xpn", "uid://dtbpyfdawb02b", "uid://dgfqppi21c2u0", "uid://b6qahd6q60js7", "uid://l4t1mflutm3t") spawn_path = NodePath("..") [node name="Parenter" type="Node" parent="DynamicObjectsContainer"] diff --git a/multiplayer/team_spawner.gd b/multiplayer/team_spawner.gd index 93c177a..56fa840 100644 --- a/multiplayer/team_spawner.gd +++ b/multiplayer/team_spawner.gd @@ -32,7 +32,7 @@ func spawn(): spawn_spectator(specator) func spawn_player(id: int) -> void: - var player: PackedScene = load("res://scenes/molikman.tscn") + var player: PackedScene = preload("uid://dpsr6ug3pkb40") var inst: Player = player.instantiate() Session.player_nodes[id] = inst inst.name = str(id) diff --git a/scenes/molikman.tscn b/players/molikman.tscn similarity index 99% rename from scenes/molikman.tscn rename to players/molikman.tscn index bbdfb81..8c64cba 100644 --- a/scenes/molikman.tscn +++ b/players/molikman.tscn @@ -1,41 +1,43 @@ -[gd_scene load_steps=82 format=4 uid="uid://dpsr6ug3pkb40"] +[gd_scene load_steps=84 format=4 uid="uid://dpsr6ug3pkb40"] -[ext_resource type="Script" uid="uid://3dphlay25fih" path="res://systems/player/player.gd" id="1_g2els"] -[ext_resource type="Script" uid="uid://dalwlndejfdhm" path="res://gui/crosshair.gd" id="3_dqkch"] -[ext_resource type="Script" uid="uid://bjhbdh6xsjgnn" path="res://systems/player/player_camera.gd" id="3_qhqgy"] -[ext_resource type="Script" uid="uid://bmecgup3kcua7" path="res://systems/weapon_system/weapon_system.gd" id="4_qlg0r"] -[ext_resource type="Script" uid="uid://dd5mp72dq43v6" path="res://multiplayer/own_visibility_toggle.gd" id="4_smehm"] -[ext_resource type="Texture2D" uid="uid://pdepam77xqnq" path="res://models/characters/viewmodels/molikman_hands_tex_knife.png" id="5_4whvg"] -[ext_resource type="Texture2D" uid="uid://mjmyeeb7m7yy" path="res://models/characters/viewmodels/molikman_hands_tex_sp_albedo.png" id="5_j3w78"] -[ext_resource type="Texture2D" uid="uid://cmpn3gco5t5p2" path="res://models/characters/viewmodels/molikman_hands_tex_sp_roughness.png" id="6_gifnh"] -[ext_resource type="Script" uid="uid://5gwpjiswnegn" path="res://systems/player/collision_team_updater.gd" id="7_a8ls1"] -[ext_resource type="Script" uid="uid://7gmgcaxfh8sb" path="res://systems/debug/property_shower.gd" id="7_oprun"] -[ext_resource type="Texture2D" uid="uid://twxsiwqgu1dy" path="res://models/characters/viewmodels/molikman_hands_tex_bomb.png" id="7_pa2rf"] -[ext_resource type="Script" uid="uid://3777rkbebgjm" path="res://systems/state_machine/machine.gd" id="8_f1ej7"] -[ext_resource type="Script" uid="uid://bl8gfrrc512q2" path="res://systems/player/dead_player_spectator.gd" id="8_rwwcc"] -[ext_resource type="Animation" uid="uid://bd7i1oux2k74q" path="res://animations/baked_bomb_plant.res" id="9_b2eak"] -[ext_resource type="Script" uid="uid://bv8sgx78s8hwn" path="res://systems/player/states/crouching.gd" id="9_oprun"] -[ext_resource type="Script" uid="uid://dmy6ahci16los" path="res://systems/debug/inventory_preview.gd" id="9_ownlk"] -[ext_resource type="Script" uid="uid://u0e2b2mvij1k" path="res://systems/player/states/standing.gd" id="10_a8ls1"] -[ext_resource type="Script" uid="uid://vmhlmhd6gjx6" path="res://gui/hud/player_healthbar.gd" id="11_42l2h"] -[ext_resource type="Script" uid="uid://cwasvwhm5yg0o" path="res://systems/player/states/walk.gd" id="11_qfm1y"] -[ext_resource type="Script" uid="uid://cq4i0afwesdm3" path="res://systems/player/states/falling.gd" id="12_fulsm"] -[ext_resource type="Script" uid="uid://gan0amqbhi4i" path="res://gui/hud/player_ammo_display.gd" id="12_iortg"] -[ext_resource type="AudioStream" uid="uid://bd4iofirvmiu6" path="res://audio/step_wood.ogg" id="16_fbysy"] -[ext_resource type="Script" uid="uid://da0xv360va3b3" path="res://audio/audio_system/multiplayer_audio_3d.gd" id="17_0cqlf"] -[ext_resource type="Script" uid="uid://xsgfbuyje35p" path="res://systems/player/player_pickup.gd" id="17_fjvrb"] -[ext_resource type="Script" uid="uid://doevvmbvhlig8" path="res://systems/weapon_system/starting_weapon_spawner.gd" id="17_ownlk"] -[ext_resource type="AudioStream" uid="uid://cdf76gyi58rrd" path="res://audio/land_wood.ogg" id="18_0cqlf"] -[ext_resource type="Script" uid="uid://bs4y647h5rdfr" path="res://systems/player/player_movement.gd" id="19_70eug"] -[ext_resource type="AudioStream" uid="uid://cc2mp4y3bkpgp" path="res://audio/plant.ogg" id="19_nquoi"] -[ext_resource type="Script" uid="uid://tb140f8fweug" path="res://systems/player/states/death.gd" id="19_rwwcc"] -[ext_resource type="AudioStream" uid="uid://c2y8wd427mmdw" path="res://audio/shoot.ogg" id="20_moxwy"] -[ext_resource type="AudioStream" uid="uid://bixhakxpo8epv" path="res://audio/test_damaged.ogg" id="23_b2eak"] -[ext_resource type="Script" uid="uid://b2djbdh05pbcn" path="res://systems/player/team_color_switcher.gd" id="25_1mtds"] -[ext_resource type="Material" uid="uid://cjb0h3of85nc2" path="res://materials/players/molikman/mat_Molikman.tres" id="26_r2jxp"] -[ext_resource type="Texture2D" uid="uid://15mf4452fse0" path="res://textures/players/molikman/molikman_ingame_Molikman_blue.png" id="27_j3w78"] -[ext_resource type="Script" uid="uid://dsp1sq46c5i3y" path="res://systems/player/player_interaction.gd" id="37_5amik"] -[ext_resource type="Script" uid="uid://dfvnx8f1v6m5g" path="res://systems/player/player_input.gd" id="37_b2eak"] +[ext_resource type="Script" uid="uid://3dphlay25fih" path="res://players/player/player.gd" id="1_l07l8"] +[ext_resource type="Material" uid="uid://cjb0h3of85nc2" path="res://materials/players/molikman/mat_Molikman.tres" id="2_330gv"] +[ext_resource type="Script" uid="uid://dd5mp72dq43v6" path="res://multiplayer/own_visibility_toggle.gd" id="3_og1ui"] +[ext_resource type="Script" uid="uid://bjhbdh6xsjgnn" path="res://players/player/player_camera.gd" id="4_x16f1"] +[ext_resource type="Texture2D" uid="uid://pdepam77xqnq" path="res://models/characters/viewmodels/molikman_hands_tex_knife.png" id="5_5684k"] +[ext_resource type="Texture2D" uid="uid://mjmyeeb7m7yy" path="res://models/characters/viewmodels/molikman_hands_tex_sp_albedo.png" id="6_8sbfk"] +[ext_resource type="Texture2D" uid="uid://cmpn3gco5t5p2" path="res://models/characters/viewmodels/molikman_hands_tex_sp_roughness.png" id="7_mfvjl"] +[ext_resource type="Texture2D" uid="uid://twxsiwqgu1dy" path="res://models/characters/viewmodels/molikman_hands_tex_bomb.png" id="8_vfta6"] +[ext_resource type="Animation" uid="uid://bd7i1oux2k74q" path="res://animations/baked_bomb_plant.res" id="9_jkjl5"] +[ext_resource type="Script" uid="uid://bl8gfrrc512q2" path="res://players/player/dead_player_spectator.gd" id="10_nar88"] +[ext_resource type="Script" uid="uid://7gmgcaxfh8sb" path="res://systems/debug/property_shower.gd" id="11_o7yy1"] +[ext_resource type="Script" uid="uid://dmy6ahci16los" path="res://systems/debug/inventory_preview.gd" id="12_lmgvl"] +[ext_resource type="Script" uid="uid://dalwlndejfdhm" path="res://gui/crosshair.gd" id="13_a8vk2"] +[ext_resource type="Script" uid="uid://vmhlmhd6gjx6" path="res://gui/hud/player_healthbar.gd" id="14_dy7an"] +[ext_resource type="Script" uid="uid://gan0amqbhi4i" path="res://gui/hud/player_ammo_display.gd" id="15_8nx10"] +[ext_resource type="AudioStream" uid="uid://bd4iofirvmiu6" path="res://audio/step_wood.ogg" id="16_0i367"] +[ext_resource type="Script" uid="uid://da0xv360va3b3" path="res://audio/audio_system/multiplayer_audio_3d.gd" id="17_rgc8v"] +[ext_resource type="AudioStream" uid="uid://cdf76gyi58rrd" path="res://audio/land_wood.ogg" id="18_cp35a"] +[ext_resource type="AudioStream" uid="uid://cc2mp4y3bkpgp" path="res://audio/plant.ogg" id="19_vndcj"] +[ext_resource type="AudioStream" uid="uid://bixhakxpo8epv" path="res://audio/test_damaged.ogg" id="20_lojvk"] +[ext_resource type="AudioStream" uid="uid://c2y8wd427mmdw" path="res://audio/shoot.ogg" id="21_sa026"] +[ext_resource type="Script" uid="uid://3777rkbebgjm" path="res://systems/state_machine/machine.gd" id="22_du54r"] +[ext_resource type="Script" uid="uid://bv8sgx78s8hwn" path="res://players/player/states/crouching.gd" id="23_8n3v3"] +[ext_resource type="Script" uid="uid://u0e2b2mvij1k" path="res://players/player/states/standing.gd" id="24_xwsfc"] +[ext_resource type="Script" uid="uid://cwasvwhm5yg0o" path="res://players/player/states/walk.gd" id="25_63k6k"] +[ext_resource type="Script" uid="uid://cq4i0afwesdm3" path="res://players/player/states/falling.gd" id="26_1o7qb"] +[ext_resource type="Script" uid="uid://tb140f8fweug" path="res://players/player/states/death.gd" id="27_mu2ck"] +[ext_resource type="Script" uid="uid://bs4y647h5rdfr" path="res://players/player/player_movement.gd" id="28_xqgvn"] +[ext_resource type="Script" uid="uid://bmecgup3kcua7" path="res://systems/weapon_system/weapon_system.gd" id="29_eipt1"] +[ext_resource type="Script" uid="uid://doevvmbvhlig8" path="res://systems/weapon_system/starting_weapon_spawner.gd" id="30_qlehe"] +[ext_resource type="PackedScene" uid="uid://djwjl8xll53vn" path="res://weapons/gun/sp/starting_pistol.tscn" id="31_iphn3"] +[ext_resource type="PackedScene" uid="uid://ts4xccpkjd3g" path="res://weapons/knife/knife.tscn" id="32_q3u2a"] +[ext_resource type="Script" uid="uid://5gwpjiswnegn" path="res://players/player/collision_team_updater.gd" id="33_wsuxd"] +[ext_resource type="Script" uid="uid://xsgfbuyje35p" path="res://players/player/player_pickup.gd" id="34_anida"] +[ext_resource type="Script" uid="uid://b2djbdh05pbcn" path="res://players/player/team_color_switcher.gd" id="35_1u3gl"] +[ext_resource type="Texture2D" uid="uid://15mf4452fse0" path="res://textures/players/molikman/molikman_ingame_Molikman_blue.png" id="36_tt20t"] +[ext_resource type="Script" uid="uid://dsp1sq46c5i3y" path="res://players/player/player_interaction.gd" id="37_3lpnn"] +[ext_resource type="Script" uid="uid://dfvnx8f1v6m5g" path="res://players/player/player_input.gd" id="38_2cl6u"] [sub_resource type="ArrayMesh" id="ArrayMesh_lot4n"] _surfaces = [{ @@ -61,7 +63,7 @@ _surfaces = [{ "index_count": 738, "index_data": PackedByteArray("cABxAHIAcwBxAHAAcwA/AHEAcwBwAHQAcAByAHQAcwB0AFEAUQB0AHUAdAByAHUAPwBPAHEAcQBPAHIAPwB2AE8AdwB2AD8AdgB4AE8ATwB4AHIAdwB5AHYATQB5AHcATQB6AHkAeQB7AHYAdgB7AHgAegB8AHkAeQB8AHsAegBMAHwAfQBMAHoAfQAWAEwATABOAHwATAB+AE4AfwBOAH4AfABOAIAAfACAAHsAfwCBAE4AgQCAAE4APgCBAH8AewCAAIIAewCCAHgAgQCDAIAAgwCCAIAAPgCEAIEAhACDAIEAFACEAD4AFABSAIQAeACCAHIAgwCFAIIAhQByAIIAhACGAIMAhgCFAIMAUgCGAIQAhgCHAIUAhwByAIUAUgBQAIYAUACHAIYAFQBQAFIAUACIAIcAiAByAIcAFQCJAFAAiQCIAFAAiQCKAIgAigByAIgAFQCLAIkAiQCMAIoAiQCLAIwAigCMAHIAFQBUAIsAiwCNAIwAjACNAHIAVABTAIsAiwBTAI0AVACOAFMAGACOAFQAGABCAI4AUwCPAI0AjQCPAHIAjgCQAFMAUwCQAI8AQgCRAI4AjgCRAJAAQgCSAJEAjwBAAHIAkABAAI8AkwByAEAAdQByAJMAkACUAEAAkQCUAJAAkgBVAJEAkQBVAJQAkgCVAFUAVgBVAJUAlgBWABcAlgCXAFYAVgCYAFUAmACUAFUAlwCYAFYAmQBAAJQAmACZAJQAmQCTAEAAlwCaAJgAmgCZAJgAQQCaAJcAQQCbAJoAmgCcAJkAnACTAJkAmwCcAJoAnAB1AJMAmwBRAJwAUQB1AJwAAAAsAC0ALQAsAJ0ALQCdAC4ALQAuAEUALQBFAC8AAAAtAC8AAACeACwAAAAvAJ8AngACAKAAngChAAIAAAChAJ4AoQADAAIAoQABAAMAAAABAKEAAACfAKIAAACiAAUAogAGAAUAogAEAAYAnwAEAKIAnwCjAAQAMABGADIAMACkAEYApAClAEYARgClAKYARgCmAEcAMgBGAEcApACnAKUApwAjAKUApwAgACMAMQCnAKQAMQCoAKcAMgBHAEoASgBHAKkAMgBKADQASgCqADQAMgA0AEgAMAAyAEgASAA0AKsAMABIAEkASACrAKwASQBIAKwASgCtAKoASgCpAK0ArQBLAKoArQCpADMArQCuAEsArQAzAK4ASQCsAK8ArwCsACEArwAhACIANQBJAK8ANQCvALAABwCxAAkABwAIALEACQCxALIACQCyAFkAVwCxAAgAswCyALEAVwCzALEAswC0ALIAtQBXALYAtQC3AFcAtwCzAFcANwC3ALUANwAKALcAtwBYALMAWAC0ALMACgBYALcAWAA2ALQACgBaAFgAWgA2AFgAWgALADYAGQA4ADkAOAAaADkAOAC4ABoAGQA5ALkAGQC5ALoAugBbABwAugAcABsAGQC6ABsAGQC7ADoAGQC8ALsAGQA6ADsAOwA6AB4AOwAeAL0AGQAdALwAvAAdAB8AvAAfAFwAvgBdAA8AvgBeAF0AXgAOAF0AXgAMAA4ADABeAL4ADABfAA4ADAANAF8ADAC+AGAAPABgAL4ADABgAGEAEABgADwAYgBhAGAAEABiAGAAYgC/AGEAYgBjAL8AEABkAGIAYgBkAGMAEAA9AGQAPQDAAGQAEQBjAGQAEQBkAMAAEQBlAA0AEQASAGUAZgASABEAEQDAAGYAZgBnABIAwABnAGYAwAATAGcAKwDBACoAKQAqAMEAbwDCAMMAbwBtAMIAbADDAMIAbADCAG4AJADEACYAJAAlAMQAaAAmAMQAJQDFAMQAJQBqAMUAxgDEAMUAaADEAMYAxgDFAMcAyADJAGgAyABoAMoAygBoAMYARADIAMoARADKACcAygDGAGkAaQDGAMcAJwDKAGkAaQDHAEMAJwBpAGsAawBpAEMAawBDACgA"), "lods": [0.30303898, PackedByteArray("AAAsAC0ALQAsAC4ALQAuAEUALQBFAC8AAAAtAC8AAAABACwALAABAAIAAQADAAIAAAAvAAUALwAEAAUABQAEAAYAMABGADIAMAAxAEYAMQAjAEYAMQAgACMARgAjAEcAMgBGAEcAMAAyAEgAMABIAEkAMgA0AEgASQBIACEASAA0ACEASQAhACIANQBJACIAMgBHAEoAMgBKADQASgBHADMASgBLADQASgAzAEsAFgBMAE0ATQBMAE4APgBOAEwATQBOAD8APwBOAE8APgBQAE4AUABPAE4APwBPAEAAUABAAE8APwBAAFEAUgBQAD4AFABSAD4AFQBQAFIAFQBTAFAAUABTAEAAFQBUAFMAVABCAFMAGABCAFQAUwBVAEAAQgBVAFMAUQBAAFUAQgBWAFUAQQBRAFUAQQBVAFYAFwBBAFYABwAIAAkAVwAJAAgAVwBYAAkAWABZAAkAWAA2AFkACgBYAFcANwAKAFcACgBaAFgAWgA2AFgAWgALADYAGQA4ADkAOAAaADkAGQA5ABsAOQAcABsAOQBbABwAGQAdADoAOgAdAB8AOgAfAFwAGQA6ADsAOwA6AB4APABdAA8APABeAF0AXgAOAF0AXgAMAA4ADABeADwADABfAA4ADAANAF8ADAA8AGAADABgAGEAEABgADwAYgBhAGAAEABiAGAAYgBjAGEAEABkAGIAYgBkAGMAEAA9AGQAEQBjAGQAEQBkAD0AEQBlAA0AEQASAGUAZgASABEAEQA9AGYAZgBnABIAPQBnAGYAPQATAGcAJAAlACYAaAAmACUAaAAlAGkAaQAlAGoAaQBqAEMAJwBoAGkARABoACcAJwBpAGsAawBpAEMAawBDACgAKQAqACsAbABtAG4AbABvAG0A"), 0.7054393, PackedByteArray("AAAsAC0ALQAsAC4ALQAuAC8AAAAtAC8AAAABACwALAABAAIAAQADAAIAAAAvAAUALwAEAAUABQAEAAYAMAAxADIAMQAjADIAMQAgACMAMgAjADMAMgAzADQAMAAyADQAMAA0ADUANQA0ACEANQAhACIABwAIAAkACAA2AAkACgA2AAgACgALADYANwAKAAgAGQA4ADkAOAAaADkAGQA5ABsAOQAcABsAGQAdADoAOgAdAB8AGQA6ADsAOwA6AB4APAAOAA8ADAAOADwADAANAA4AEAAMADwAEAARAAwAEQASAA0AEAA9ABEAEQA9ABIAPQATABIAFAAVAD4APgAVABYAFQA/ABYAFQBAAD8APwBAAEEAQQBAABcAQgAXAEAAFQBCAEAAGABCABUAJAAlACYAJgAlAEMAJwAmAEMARAAmACcAJwBDACgAKQAqACsA"), 2.5920038, PackedByteArray("AAABAAIAAQADAAIAAAACAAQAAAAEAAUABQAEAAYABwAIAAkACgAJAAgACgALAAkADAANAA4ADAAOAA8AEAAMAA8AEAARAAwAEQASAA0AEAATABEAEQATABIAFAAVABYAFQAXABYAGAAXABUAGQAaABsAGgAcABsAGQAdAB4AHgAdAB8AIAAhACIAIAAjACEAJAAlACYAJwAmACUAJwAlACgAKQAqACsA")], -"material": ExtResource("26_r2jxp"), +"material": ExtResource("2_330gv"), "name": "mat_Molikman", "primitive": 3, "uv_scale": Vector4(0, 0, 0, 0), @@ -81,7 +83,7 @@ _surfaces = [{ "index_count": 2109, "index_data": PackedByteArray("/QEFADUB/QE0AQUANAE2AQUANAE3ATYBOQE3ATQBOQE6ATcBOwE0Af0BOwE5ATQBNQH+Af0BQwE5ATsBQwEBADkB/QH/ATsB/QH+Af8BOwFAAUMBOwH/AUABQwFAAUQBQwFEAUUBRQEBAEMBRQFGAQEARQEDAEYBRQFHAQMARwFIAQMARwFJAUgBPQFAAf8BPQFBAUABQgFBAT0BQgECAEEBOAE9Af8BOAH/Af4B/gE8ATgBCQAHADwBCQA8AQgA/gEAAjwBNQEAAv4BPgEAAjUBPAEAAgECPgEBAgACPAEBAggAPgECAgECPgE/AQICTgEIAAECTgEBAgICCgAIAE4BCwAIAAoACgBOAQYAAwJOAQICPwEDAgICAwIAAE4BAAADAgQCAAAEAk0BPwEFAgMCBQIEAgMCBQI/AQYCBQJJAQQCBQIGAksBSQEFAksBSwEGAkwBSQFLAUgBSwFMAUoBSAFLAUoBSAFKAQQATwFQAVEBTwHvAFABUgFRAVABUgFQAQcCBwJQAQgCBwIIAlMBUwEIAgkCUwEJAgoCCgIJAu4AVgFTAQoCCgLuAFQBVgEKAlUBVQEKAlQBVQFUAewA6wBWAVUB6wBVAe0AVwFYAQsCVwHqAFgBVwFaAeoAVwEMAloBWQFXAQsCWQEMAlcBWQELAugAWQHpAAwCWwENAl0BDABbAV4BDAAOAlsBDgJcAVsBWwFcAQ0CDgJfAVwBEQASAF8BXwESAGUBXwFlAWQBXwFkAVwBXAFgAQ0CXAFkAWABZAEPAGABZAEQAA8ADQJgAWEBDQJhAQ8CXQENAg8CDwJhAQ0AXQEPAmIBDwINABACYgEPAhACYgEQAhECDgBiARECDgARAmMBZgEVAGcBZgEUABUAEwAUAGYBEwAWABQAEwBoARcAEwAXABgAaQFqARoAawEaAGoBaQFsAWoBbQFsAWkBbQEbAGwBawFqAW8BIABrAW8BIABvAR8AHgBvAWoBHgBqARwAGQAcAGoBGQBqAWwBbwEeAHABbwFwARICHgATAnABHgAiABMCEgJwARQCEgIUAhUCcAETAhYCcAEWAhQCdgETAiIAdgEiADIAEwIXAhYCEwJ2ARcCFgIXAhgCMwB2ATIAMwA0AHYBMwAyADAAMAAxADIAMAAvADEALAAvADAALAAuAC8ALAArAC0ALAApACsAKQAqACsAKQAnACoAKAApACcAKAAnAHUBKAB1ASYAdQEnAB0AdQEdABkCGQAZAh0AGQIaAnUBGQBuARkCbAFuARkAbAEbAm4BGQIcAhoCbgEcAhkCHAIdAhoCGwIeAm4BbgEeAhwCGwIfAh4CHAIgAh0CHgIgAhwCIAIjAB0CIAJ0ASMAHgIhAiACHwIhAh4CIQJ0ASACHwJxASECIQJyAXQBcQFyASECcgEiAnQBcQEjAnIBcgFzASICIwJzAXIBIwIkAnMBJAIlAnMBJAImAiUCJgInAiUCJgIoAicCKAIkACcCKAIlACQAOQA6ADsAPAA9AD4APAA/AD0AKQJ6AXsBKQJ5AXoBWAB8AXsBfAEpAnsBfgF/AXkBfgF5ASoCKQIqAnkBggF+ASoCggEqAisCgQErAioCKQIsAioCgQEqAiwCgAEsAikCLQIpAnwBLQKAASkCLQJ8AS4ChQEsAoABLQIvAoABWQAtAi4CgwEvAi0CWQB9AS0CgwEtAn0BMAKDAX0BiQGDATACMAJ9AVQAiQEwAowBVgCJAYwBiAEwAlQAVgCMAY0BjAEwAogBMQKNAYwBiAFUADICigGIATICigEyAjMCigE0AogBigEzAjUCNgKIATQCjAGIATYCMQKMATYCNgI0AosBMQI2AosBMQKLAVMANwI1AjMCNwJRADUCUAA3AjMCUAAzAlIASgCOAY8BSgA4Ao4BkQGOATgCkQE4ApIBSgCQATgCOAKTAZIBOAKQAZMBRACSAZMBRACTAZQBSgBLAJABlQGTAZABSwA5ApABlQGQATkCSwCXATkClQFGAJgBlQGZAUYAmQGVATkCOgJGAJkBOgI7AkYAmQE5ApYBlgE5ApcBOgKZAZYBOgJHADsCOgKaAUcAOgKWATwCmgE6AjwClgGXAT0CPQKXAUwAPQJMAD4CPQI+ApsBlgE9Aj8ClgE/AjwCPQKbAT8CmgE8AkACQAI8Aj8CSACaAUACSABBApoBSABFAEECSABJAEUAQAI/AkICQwI/ApsBQwJCAj8CQwKbAUQCQwJEAk8ATgBCAkMCTgBNAEICQABFApwBQACdAUUCnQFCAEUCnQGeAUIAngFDAEIAngFBAEMAnwGeAZ0BnwGgAZ4BuQFGAlwAuQFHAkYCXABGArgBXAC4AUgCRgJdALgBXgBIArgBRgJbAF0ARwJbAEYCRwJaAFsAXgC6AUgCXgBJAroBXgC8AUkCuwFJArwBuwG8AUoCSgK8AWAAXwC7AUoCSgJgAGEAXwBKAksCSwJKAmEASwJhAGIAvQFLAmIAvQFiAGMAZABlAGYAZgBlAKEBTAJNArQATAJOAk0CtAC3ALUAtAC1ALYAZwBoAGkAaQBPAmcAZwBPAqIBZwCiAVACagBnAFACagCjAWcAawCjAWoAbABnAKMBbACjAVECawCkAVECUQJSAmwApAFSAlECpQF5AFMCUwJ5AFQCeQCmAVQCeQBVAqYBVgKmAVUCVgJVAqcBpwFXAlYCpwFYAlcCdwBYAqcBWAJZAlcCdwBaAlgCWAJbAlkCWgJbAlgCWwJcAlkCWgJ6AFsCWwJdAlwCegBdAlsCegBeAl0CXQJ8AFwCXgKoAV0CXQKoAXwAXgJfAqgBXwJ4AKgBeAB8AKgBXwJ7AHgAfAB4AH0AfAB9AH4AqQFgAm0AqQFhAmACYQKqAWACYQJiAqoBYgJjAqoBYwJkAqoBYgJuAGMCYwJvAGQCbgBlAmMCbgBmAmUCYwJnAm8AYwJlAmcCbwBnAmgCbwBoAnEAZwJwAGgCZwKrAXAAZQKrAWcCZQJyAKsBcgBpAqsBcgBzAGkCcwBqAmkCcwB0AGoCdAB1AGoCdAB2AHUAfwBrAmwCfwCtAWsCbAKBAG0CbAJuAoEAawJuAmwCawJvAm4CbwJrAq8BbwKvAXACbwKsAW4CcQJvAnACbwJxAqwBcQJwAnICrgFxAnICrgFyAoIAcQKuAbABcQKwAawBrAGwAYMArAGDAIAAcwKyAbMBcwKxAbIBtAF0AoQAtAF1AnQCdQJ2AnQCdQJ3AnYCdwKGAHYCdwKFAIYAtQGIALYBtgGIAIoAtgGKAIkAtQGLAIgAhwCLALUBhwCMAIsAjQCOAI8AjQCQAI4AeAJ5AnoCkQC3AZMAkQCSALcBewJ8An0CewJ+AnwClACVAJYAlACXAJUAmACaAL4BmACZAJoAfwLAAYACfwKbAMABvwF/AoACvwGAAoECggKAAsABggLAAckByQHAAZwAwQGAAoICwQGBAoACgwLBAYICgwKCAskByQGcAMoBygGcAJ8AygGfAJ4AygHHAckBhAKBAsEBhAKdAIECgwKFAsEBhALBAYUCgwLJAYYCyQHHAYYCxAGDAoYCxAGFAoMCwgGdAIQCwgGnAJ0ApwCoAKkApwDCAagAwgGjAKgAhAKFAocCwgGEAocCwgGIAqMAwgGHAogCiAKhAKMAiALDAaEAwwGIAocCiQKHAoUCwwGHAokCwwGJAqQAwwGkAIoCiQKFAosCpACJAosCpACLAowCxAGLAoUCjAKLAsQBjALEAcUBxQHEAY0CxAGGAo0CxQGNAqUAxwGNAoYCpQCNAsYBxwHGAY0CpQDGAaYAoADGAccBoACOAsYBoACiAI4CoADIAaIAqgCrAKwAqgCPAqsAywGuAK8AywGtAK4AsACxALIAsACzALEAuAC5ALoAuAC7ALkAxADMAcgAyADMAc0ByADNAcwAxADOAcwBwQDOAcQAygDNAcwBygDMAcYAxgDMAc4BzgDNAcoAxgDOAcAAzgDPAc0BzADNAc8BzADPAdAA0gDPAc4A0gDTAM8B0gDQAdMA0gDPANABzwDRAdABzwDLANEBzQDQAdEBzQDRANAByQDNANEBywDSAdEByQDRAdIBywDHANIBxQDJANIBxwDTAdIBxQDSAdMBxwDDANMBwQDFANMBwwDUAdMBwQDTAdQBwwDCANQBwQDUAc4BwADUAcIAwADOAdQBvAC9AL4AvADVAb0AvwC+AL0AvwC9ANYB1ADVANYA1wDWANUA1ADYANUA1wDVANkA2gDYANQA2wDXANkA2gDcANgA2wDZAN0A3gDcANoA3wDbAN0A3gDgANwA3wDdAOEA4gDgAN4A4wDfAOEA4gDkAOAA4wDhAOUA5gDkAOIA5gDjAOUA5gDnAOQA5gDlAOcA8ADzAJAC8ADXAfMAkALzAPEAkALxANgB2AHxANkB2QH0APUA2QH1APYA2AHZAdoB2gHZAfYA2gH2APgA8gDYAdoB8gDaAfcA9wD5APIA+gD3APIA2wHcAd0B2wHeAdwB3wHgAeEB3wHiAeABhAEsAoUBhAGBASwChQFVAIQBhQGHAVUAgQGEAZECkQKEAVUAgQGRAlcAkQJVAIYB4wGSAuUB4wHmAZIC5QGSAuQB5QHkAecB6AHlAecB6AHnAekB+wD8AP0A/AD7AJMC+wDqAZMC+wCUAuoBlQLqAZQC6wGUAvsAlQKUAusB6wH7AJYC/wDrAZYClQLrAf4AlQL+AJcC7AGYAhMBmAKZAhMBEwGZAhQBEwEUARUB7QGaApsC7QEAAZoCmwKaAu4BmwLuAZwCnALuAZ0CnAKdAgIBAgGdAp4CngIBAQMBngIDAe8BAgGeAp8CnwKeAu8BAgGfAqACAgGgAvEBnwLvAaECoAKfAqECoQLvAaICoAKhAgUBoQKiAqMCBQGhAqMCowKiAqQCBQGjAqUCowKkAvABpQKjAvAB8AGkAgQB8AEEAQcBpQLwAfIB8gHwAQcB8gEHAQgB8gGmAqUC8gEGAaYCFgIYAqcCpwIYAjUAFAIWAqcCpwI1AHcBFAKnAqgCqAKnAncBFQIUAqgCFQKoAiEAqAJ3ATYAIQCoAjYAIQA2ADgANgB3AakCNgCpAqoCNwCqAqkCNwB4AaoCCQEKAQsBCQEMAQoBDAEJAasCDAGrAqwCrAKrAq0CDgEMAawCrAKtAq4CDgGsAq8CrwKsAq4C9gEOAa8CrgKtArAC9gGvAhEBEQGvArECrwKuArECEQGxAhABrgKwArICsQKuArICsgKwAvMBsgLzAfQBsQKyAvUBEAGxAvUB9QGyAvQBEAH1AbMC9QH0AbQCswL1AbQCtAL0AQ0BswK0ArUCtAINAQ8BtQK0Ag8BtQIPARIBFgG2ArcCFgEXAbYCtwK2AvcBtwL3AbgCuAL3AbkCuAK5AroCuwK5AvcBuwL3ARgBugK5AhkBugIZAfgB+AEZARoB+AEaARsBHAH4ARsBHQH4ARwB+AEdAfkB+wG8Ar0C+wEiAbwCvQK8Ar4CvQK+Ar8CvwK+AiMBvwIjASEBHgEfASABHgH6AR8BJAElASYBJgEnASgBKAEnASkBwAIrASwBLQErAcACLQHAAioB/AEwAS4B/AEvATABMQEyATMB"), "lods": [0.050884023, PackedByteArray("NAEFADUBNAE2AQUANAE3ATYBNQE4ATQBOQE3ATQBOQE6ATcBNAE4ATsBOwE5ATQBOAE1ATwBOAE9ATsBPAE1AQgAPgEIADUBCQAHADwBCQA8AQgAPgE/AQgAPQFAATsBPQFBAUABQgFBAT0BQgECAEEBOwFAAUMBQwE5ATsBQwFAAUQBQwEBADkBQwFEAUUBRQEBAEMBRQFGAQEARQEDAEYBRQFHAQMARwFIAQMARwFJAUgBSAFKAQQASAFLAUoBSQFLAUgBSwFMAUoBSwE/AUwBSwFJAQAAPwFLAQAAAABJAU0BAABOAT8BTgEIAD8BCgAIAE4BCwAIAAoACgBOAQYATwFQAVEBTwHvAFABUgFRAVABUgFQAVMBUwFQAe4AUwHuAFQBVQFTAVQBVQFUAewAVgFTAVUB6wBWAVUB6wBVAe0AVwFYAegAVwHqAFgBWQFXAegAVwFaAeoAWQHpAFcBVwHpAFoBWwFcAV0BDABbAV4BDABcAVsBDABfAVwBXAFgAV0BXQFgAWEBXQFhAWIBYgFhAQ0AYgENAGMBDgBiAWMBXAFkAWABXwFkAVwBZAEPAGABZAEQAA8AXwFlAWQBXwESAGUBEQASAF8BZgEVAGcBZgEUABUAEwAUAGYBEwAWABQAEwBoARcAEwAXABgAaQFqARoAawEaAGoBaQFsAWoBbQFsAWkBbQEbAGwBGQBqAWwBGQAcAGoBHgBqARwAbAFuARkAawFqAW8BHgBvAWoBIABrAW8BIABvAR8AbwEeAHABbAFxAW4BbwFwASEAHgAiAHABcQFyAW4BcQFzAXIBcQElAHMBJQAkAHMBcgFzAXQBbgFyAXQBbgF0AR0AGQBuAR0AHQB0ASMAHQAjAHUBdQEnAB0AKAAnAHUBKAB1ASYAKAApACcAKQAnACoAKQAqACsALAApACsALAArAC0ALAAuAC8ALAAvADAAMAAvADEAMAAxADIAMwAyADAAMwB2ATIAMwA0AHYBdgEiADIAIgB2ATUAIgA1AHcBcAEiAHcBcAF3ATYANwA2AHcBNwB4ATYAIQBwATYAIQA2ADgAOQA6ADsAPAA9AD4APAA/AD0AeQF6AXsBWAB8AXsBfAF5AXsBfQF5AXwBfQF8AVkAfgF/AXkBfQGAAXkBeQGAAX4BgQF+AYABgQGCAX4BfQGDAYABhAGBAYABgQGEAVcAhAGAAYUBVwCEAVUAhQFVAIQBVwBVAIYBhQGHAVUAiAGDAX0BiQGDAYgBiAF9AVQAigGIAVQAigFUAFIAigFSAFEAUABRAFIAigGLAYgBiQGIAYwBjAGIAYsBVgCJAYwBUwCMAYsBVgCMAY0BUwCNAYwBSgCOAY8BSgCQAY4BSgBLAJABkQGOAZIBjgGTAZIBjgGQAZMBRACSAZMBRACTAZQBlQGTAZABSwCWAZABlQGQAZYBSwCXAZYBlQFGAJgBlQGZAUYAmQGVAZYBmgFGAJkBmgGZAZYBmgFHAEYAlgGXAZsBmwGXAUwAmgGWAUgASACWAZsBSABFAJoBSABJAEUASACbAU0ATgBNAJsBTgCbAU8AQABCAJwBQACdAUIAnQGeAUIAngFDAEIAngFBAEMAnwGeAZ0BnwGgAZ4BZABlAGYAZgBlAKEBZwBoAGkAZwBpAKIBZwCiAWoAagCjAWcAbABnAKMBawCjAWoAowGkAWwAawCkAaMBpQF5AKYBeQCnAaYBpwGoAaYBdwCoAacBqAF8AKYBdwB6AKgBegB4AKgBeAB8AKgBegB7AHgAfAB4AH0AfAB9AH4AqQGqAW0AqQFuAKoBbgByAKoBqgFyAG8AbwBwAHEAbwCrAXAAcgCrAW8AcgBzAKsBcwB0AKsBdAB1AKsBdAB2AHUAfwCsAYEArQGsAX8ArQGuAawBrgGtAa8BrgGvAYIArgGwAawBrAGwAYMArAGDAIAAsQGyAbMBtAGGAIQAtAGFAIYAtQGIALYBtgGIAIoAtgGKAIkAtQGLAIgAhwCLALUBhwCMAIsAjQCOAI8AjQCQAI4AkQC3AZMAkQCSALcBXgBcALgBXABdALgBXABbAF0AuQFbAFwAuQFaAFsAXgC6AVwAXgC7AboBXgC8AbsBuwG8AWAAuwFgAGEAXwC7AWEAXwBhAGIAvQFfAGIAvQFiAGMAlACVAJYAlACXAJUAmACaAL4BmACZAJoAvwHAAZ0AvwGbAMABwQGdAMABwgGdAMEBwgGnAJ0ApwCoAKkApwDCAagAwgGjAKgAwgGhAKMAwgHDAaEAwwHCAcEBwwHBAcQBpADDAcQBpADEAcUBxQHEAaUApQDEAcYBpQDGAaYAxAHBAccBxwHGAcQBoADGAccBoACiAMYBoADIAaIAwQHJAccBwQHAAckBygHHAckByQHAAZwAyQGcAMoBygGcAJ8AygGfAJ4AqgCrAKwAywGuAK8AywGtAK4AsACxALIAsACzALEAtAC1ALYAtAC3ALUAuAC5ALoAuAC7ALkAxADMAcgAyADMAc0ByADNAcwAxADOAcwBwQDOAcQAygDNAcwBygDMAcYAxgDMAc4BzgDNAcoAxgDOAcAAzgDPAc0BzADNAc8BzADPAdAA0gDPAc4A0gDTAM8B0gDQAdMA0gDPANABzwDRAdABzwDLANEBzQDQAdEBzQDRANAByQDNANEBywDSAdEByQDRAdIBywDHANIBxQDJANIBxwDTAdIBxQDSAdMBxwDDANMBwQDFANMBwwDUAdMBwQDTAdQBwwDCANQBwQDUAc4BwADUAcIAwADOAdQBvAC9AL4AvADVAb0AvwC+AL0AvwC9ANYB1ADVANYA1wDWANUA1ADYANUA1wDVANkA2gDYANQA2wDXANkA2gDcANgA2wDZAN0A3gDcANoA3wDbAN0A3gDgANwA3wDdAOEA4gDgAN4A4wDfAOEA4gDkAOAA4wDhAOUA5gDkAOIA5gDjAOUA5gDnAOQA5gDlAOcA8ADXAfMA8ADzAPEA8ADxANgB2AHxANkB2QH0APUA2QH1APYA2AHZAdoB2gHZAfYA2gH2APgA8gDYAdoB8gDaAfcA9wD5APIA+gD3APIA2wHcAd0B2wHeAdwB3wHgAeEB3wHiAeAB4wHkAeUB4wHmAeQB5QHkAecB6AHlAecB6AHnAekB+wD8AP0A+wDqAfwA+wDrAeoB6gHrAf4A/wDrAfsA7AEUARMBEwEUARUB7QHuAQIB7QEAAe4BAgHuAe8B7gEDAe8B7gEBAQMBAgHvAfAB8AHvAQQB8QECAfAB8AEEAQcB8QHwAQUB8gHwAQcBBQHwAfIB8gEHAQgB8gEGAQUBCQEKAQsBCQEMAQoBDAEJAfMBDAHzAfQB9QEMAfQB9QH0AQ0BDgEMAfUB9QENAQ8BEQEOAfUB9gEOAREBEQH1ARABEAH1AQ8BEAEPARIBFgH3AfgBFgEXAfcBGAEZAfcB+AH3ARkB+AEZARoB+AEaARsBHAH4ARsBHQH4ARwB+AEdAfkBHgEfASABHgH6AR8B+wEjASEB+wEiASMBJAElASYBJgEnASgBKAEnASkBKgErASwBLQErASoB/AEwAS4B/AEvATABMQEyATMB"), 1.0669019, PackedByteArray("AAABAAIAAAADAAEAAAAEAAMABQACAAEABAAAAAYABQAEAAYAAgAFAAcABQAGAAgABwAFAAgACQAHAAgACgAIAAYACwAIAAoADAANAA4ADAAPAA0ADAAQAA8AEQAQAAwAEQASABAAEwAUABUAEwAWABQAEwAXABgAGQAaABsAGQAcABoAGQAbAB0AHgAaABwAHgAfABoAIAAaAB8AHwAeACEAHgAiACEAGwAjAB0AGwAkACMAGwAlACQAHQAjACYAJgAnAB0AKAAnACYAKAApACcAKQAnACoAKQAqACsALAApACsALAArAC0ALAAuAC8ALAAvADAAMAAvADEAMAAxADIAMwAyADAAMwA0ADIANAAiADIAIgA0ADUAIQAiADUAIQA1ADYANwA2ADUAIQA2ADgAOQA6ADsAPAA9AD4APAA/AD0AQABBAEIAQQBDAEIARABFAEYARQBHAEYARQBEAEgASABJAEUASgBLAEQASwBMAEQASABEAEwASABMAE0ATgBNAEwATgBMAE8AUABRAFIAUwBSAFEAUwBUAFIAVQBUAFMAVgBVAFMAVABVAFcAVABXAFgAVABYAFkAWgBbAFwAXABbAF0AXgBcAF0AXgBfAFwAXgBgAF8AXwBgAGEAXwBhAGIAYwBfAGIAZABlAGYAZwBoAGkAZwBpAGoAagBrAGcAbABnAGsAbQBuAG8AbgBwAG8AbwBwAHEAbgByAHAAcgBzAHAAcwB0AHAAdAB1AHAAdAB2AHUAdwB4AHkAdwB6AHgAegB7AHgAeAB8AHkAfAB4AH0AfAB9AH4AfwCAAIEAfwCCAIAAggCDAIAAhACFAIYAhwCIAIkAiQCIAIoAhwCLAIgAhwCMAIsAjQCOAI8AjQCQAI4AkQCSAJMAlACVAJYAlACXAJUAmACZAJoAmwCcAJ0AngCcAJ8AngCgAJwAoQCcAKAAnQCcAKEAoQCgAKIAowCdAKEApAChAKIApACiAKUApQCiAKYAowCnAJ0ApwCjAKgApwCoAKkAqgCrAKwArQCuAK8AsACxALIAsACzALEAtAC1ALYAtAC3ALUAuAC5ALoAuAC7ALkAvAC9AL4AvwC+AL0AwADBAMIAwwDCAMEAwADEAMEAwwDBAMUAxgDEAMAAxwDDAMUAxgDIAMQAxwDFAMkAygDIAMYAywDHAMkAygDMAMgAywDJAM0AzgDMAMoAzwDLAM0AzgDQAMwAzwDNANEA0gDQAM4A0gDPANEA0gDTANAA0gDRANMA1ADVANYA1wDWANUA1ADYANUA1wDVANkA2gDYANQA2wDXANkA2gDcANgA2wDZAN0A3gDcANoA3wDbAN0A3gDgANwA3wDdAOEA4gDgAN4A4wDfAOEA4gDkAOAA4wDhAOUA5gDkAOIA5gDjAOUA5gDnAOQA5gDlAOcA6ADpAOoA6wDsAO0A7ADrAO4A6wDvAO4A8ADxAPIA8ADzAPEA8gDxAPQA9AD1APYA9wD0APYA8gD0APcA9wD2APgA9wD5APIA+gD3APIA+wD8AP0A+wD+APwA+wD/AP4AAAEBAQIBAgEBAQMBAgEDAQQBBQECAQQBBQEEAQYBBgEEAQcBBgEHAQgBCQEKAQsBCQEMAQoBDAEJAQ0BDgEMAQ0BDgENAQ8BEAEOAQ8BEQEOARABEAEPARIBEwEUARUBFgEXARgBFgEYARkBFgEZARoBFgEaARsBHAEWARsBHQEWARwBHgEfASABIQEiASMBJAElASYBJgEnASgBKAEnASkBKgErASwBLQErASoBLgEvATABMQEyATMB")], -"material": ExtResource("26_r2jxp"), +"material": ExtResource("2_330gv"), "name": "mat_Molikman", "primitive": 3, "skin_data": PackedByteArray("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"), @@ -294,7 +296,7 @@ _surfaces = [{ "index_count": 5508, "index_data": PackedByteArray("AACwAgIABgACALACAAABALACBgCwAgUAAwCwAgEABAAFALACAwCxArACBACwArECFAAVAAMAFAAPABUADAAPABQADAANAA8ABwAEAAgABwAIAAkACgAHAAkACgAJAAsAsgINAAwAsgIKAAsAsgKzAg0AsgILALMCDgAKALICEgCyAgwAEAAOALICEACyAhIAEAARAA4AEAASABMAtAIXALUCtAIZABcAGgAZALQCGAC0ArUCGAAWALQCGgC0AhsAGwAcABoAGwC2AhwAtgIeABwAtgIfAB4AtwIfALYCtwIdAB8AuAK1AhcAIQC1ArgCIQC4AiIAuAIXACMAJAC4AiMAJAAgALgCIAAkACUAIAAlALkCuQIlACcAuQInACgAugK5AigAugIoACYAuwK8Ar0CuwK9Ar4CKQAqACsAKQC/AioAKQArAMACKQDAAsECwAIrAMICwALCAsMCWwTAAsMCxQLDAsICxQLCAjAALQDFAjAALQDGAsUCLQAwADEALQAxAMcCXATDAsUCWwTDAl0EXARdBMMCxAJbBF0EyAJdBFwExAJdBMkCyALJAl0ELADEAskCLwDJAsgCLADJAi4ALwAuAMkCMgAzADQAMgA1ADMAMgA2ADUAMgA3ADYAXABeAMoCXADLAl4AXADMAssCXADNAswCzQJdAMwCzQLOAl0AzQLPAs4CXwDPAs0CYADOAs8CYADPAtACYADQAl4EYABeBF8EYQBfBF4EYQBiAF8EOAA5ADoAOAA7ADwA0QLSAtMC0QJEANIC0gLUAtMC0gLVAtQCPQDTAtQCPQA/ANYCPQDXAj8APQDUAtcC1ALYAtcC2QLUAtUC1ALZAtgC2QLVAkMA2QI+ANgC2QLaAj4AYAQ+ANoCYATaAtwCPgDdAkEAPgBhBN0CYARhBD4AYQRAAN0CYQTeAkAAYATeAmEEYATbAt4C2wJiBN4CYATcAmME2wJgBGME3AJkBGME3AJHAGQE2wJjBGUEZQRjBGQEZQRkBEkA2wJmBGIERQBlBEkARQBJAEsAYgTgAkIAYgThAuACZgThAmIE4QJGAOAC4QLiAkYAZgTjAuEC4wLiAuECRQDjAmYE4wLkAuICRQBnBOMCZwTkAuMCSwBnBEUASwDfAmcEZwTlAuQC3wLlAmcE5QJIAOQC3wJoBOUC5QJpBEgAaARpBOUCaARqBGkESgBpBGoESgBqBEwATQDmAk8A5gJQAE8A5wJQAOYC5wLmAk4A6ALnAk4A6AJOAOkCUQDoAukCUQDpAlIAUwBRAFIAUwBSAOoC6gJVAFMA6gJUAFUA6wLsAlgA6wLtAuwC7QJXAOwC7QJWAFcAWQBrBFsAWQBaAGsE7gJaAFkA7gJsBFoA7wLwAvEC7wLyAvAC8QLwAvMC8QLzAvQCbQRuBG8EbQRwBG4EYwBkAGUAYwBmAGQAcQT2AvUCZwD1AvYCZwD3AvUCcQRyBPYC9wJzBPUC9wL5AnME+QL4AnME+QJoAPgCcwT4AvoC9QJzBHQEcwT6AnQE9QJ0BHEEdAT6AnUE+wJyBHEE+wL8AnIEcQR0BHYEcQR2BPsCdAR1BHYE/gL7AnYE/gJpAPsC/wL+AnYE/wJ2BHUEdwT/AnUEdwR1BP0CagB3BP0CagD9AngEeQR4BP0CawBqAHgEeQQCA3gEBAMCA3kEawB4BAADAAMBA2sABAMGAwIDbQAGAwQDbQBsAAYDAgMGAwcDeAQCA3oEeAR6BAADAgMHA3oEAAMDAwEDegQDAwADAwMFAwEDBwMIA3oEegQIAwMDBwMJAwgDAwNuAAUDCANuAAMDCQNwAAgDCANwAG4ACQNzAHAABQNuAHEABQNxAHsEewRxAHwEewR8BH0EfgRxAHIACgN+BHMAfgQLA3EACgMLA34EfARxAAsDfwQLAwoDfQR8BIAEfwSBBAsDfAQLA4EEgAR8BIEEfQSABIIEDAOBBH8EgASBBBADDAMQA4EEggSABIMEgwSABBADggSDBIQEhASDBIUEhASFBG8AhQSDBA0DgwQQAw0DhQQNAw4DDwMOAw0DEQMNAxADDwMNAxEDEQMQAwwDdQAPAxEDdQARA3QAdAARAwwDdAAMAxIDEwMVA4YEEwOHBBUDFgOHBBMDFgMUA4cEFwMUAxYDFwMYAxQDeAAZAxoDeACIBBkDiAQbAxkDiAQcAxsDHAN3ABsDdgAcA4gEHAMdA3cAdgAeAxwDHgMdAxwDHgN5AB0DegAfA3wAegAgAx8DIAOJBB8DIAMhA4kEiQQhA4oEiQSKBIsEiwSKBIwEiwSMBHsAewCMBI0EewCNBI4EjgSNBI8EjgSPBH4AfgCPBH0AfgB9AH8AgACQBCMDggAjA5AEggCQBCIDgAAkA5AEJgMiA5AEJAMmA5AEJgORBCIDJQMkA4AAKAORBCYDKAMnA5EEJAMpAyYDKQMoAyYDJQMqAyQDKgMpAyQDgQAqAyUDgQAlAysDLAMqA4EAKgMsAykDLAOBAC0DKQMuAygDLAMuAykDLgODACgDLgOFAIMALAMvAy4DLwOFAC4DLwMsAy0DLwOEAIUALwMtAzADhAAvAzADhgAwAy0DhAAwAzEDhgAyAzADMgMxAzADMgOGAIgAMgMzAzEDMgOIAJIEMwMyA5IEMwOSBIcAiQCKAIsAiQA0A4oAjAA1A44AjAA2AzUDNgM3AzUDNgM4AzcDNgOTBDgDOQM4A5MEOQM8AzgDNwM4AzwDPAM5A48APAOPAJAAPAOQAJQENwM8A5QElASQAJUENQM3AzoDOgM3A5QENQM6A40AOgM7A40AOgOUBD0DPQM7AzoDlASVBD0DPQM+AzsDlQQ+Az0DlgRAA0EDlgQ/A0ADQgOXBEQDRQNEA5cERQORAEQDQgNDA5cEkgBDA0IDkgCTAEMDlACVAJYAlACYBJUAlwBGA5kAlwBHA0YDmQBGA5oAmQCaAJwAmgBGA5gAmgCYAJsAnQBIA58AnQBJA0gDnwBIA54AnwCeAKAAoQCiAKMAogChAJkEogCZBKQApQBKA6cApQCmAEoDqABLA6oAqABMA0sDTANNA0sDSwNNA64ATAOsAE0DqwCsAEwDqwCtAKwASwOuAE4DrgCvAE4DTgOvALAATgOwAKkAsQBPA7MAsQC0AE8DtACaBE8DtAC2AJoETwOaBLIATwOyAFADtgBRA5oEtgCbBFEDmwScBFEDmwSdBJwEnQS1AJwEnQS3ALUAuABSA7oAuQC6AFIDUgO4ALsAuwC4AJ4EuAC8AJ4EuACfBLwAnwS/ALwAnwS+AL8AvQC6ALkAugBTA7gAUwPBALgAUwPAAMEAugDCAFMDvQDDALoAvQDEAMMAwwBUA7oAwwCgBFQDoQSgBMMAoQSiBKAEogTFAKAEogTGAMUAowTGAKIEowSkBMYApQSkBKMEpQSmBKQEpwSmBKUEpwSoBKYEqQSoBKcEqQSqBKgEqwSqBKkEqwTHAKoEyADJAMoAyQCsBMoArATLAMoArATMAMsAzACtBMsAzADNAK0E0gCuBNAA0gCvBK4ErwTSANQArwSwBK4ErwTUANMArwSxBLAEsQSvBNMAsQSyBLAEsQTTALMEsQS0BLIEtASxBLMEtAS1BLIEtASzBLYEtAS3BLUEtwS0BLYEtwS2BLgEtwS5BLUEVQO3BLgEtwRVA7kEVQO4BM4AVQO6BLkEzgC7BFUDVQO7BLoEzgC8BLsEuQS6BL0EuwS9BLoEvQS7BLwEuQS9BM8AvQS8BL4EzwC9BL4EzwC+BNEAdgG/BHADvwR4AXADdgHABL8EvwTBBHgBwATCBL8EwgTBBL8EwATDBMIEwgTEBMEEwwTFBMIExQTEBMIEwwTGBMUExQTHBMQExgTIBMUEyATHBMUExgTJBMgEyATKBMcEyQTLBMgEywTKBMgEyQTMBMsEywTNBMoEzARvA8sEbwPNBMsEzARxA28DbwPOBM0EcQPPBG8DbwPQBM4EbwPPBNAEzgTQBNEEzgTRBHcB0ATSBNEEcQPTBM8E0wTQBM8E0ATTBNIEeQHTBHED0gTTBNQEeQHUBNME1QDVBNcA1QDWANUE1gDWBNUE1gTXBNUE1gDYANYE1gTYBNcE2ADZBNYE2QTYBNYE2ADaBNkE2QTbBNgE2gTcBNkE3ATbBNkE2gTdBNwE3ATeBNsE3QTfBNwE3wTeBNwE3QTgBN8E3wThBN4E4ARWA98EVgPhBN8E4ATiBFYDVgPjBOEE4gTkBFYDVgPlBOMEVgPkBOUE4wTlBOYE4wTmBNkA5QTaAOYE4gTnBOQE5wTlBOQE5QTnBNoA2wDnBOIE2gDnBOgE2wDoBOcE3ADpBOoE3ADfAOkE6QTrBOoE6gRYA94A6gTrBFgD6wTsBFgD6wTgAOwEWAPsBO0EWAPtBFkD7gTgAOsE6QTuBOsE7gTvBOAA7gTwBO8E6QTxBO4E7gTxBPAE6QTyBPEE8QTzBPAE8gT0BPEE8QT0BPME8gT1BPQE9AT2BPME9QT3BPQE9AT3BPYE9QT4BPcE9wThAPYE+AT5BPcE9wT5BOEA+ARXA/kE+QT6BOEAVwP7BPkE+QT7BPoEVwP8BPsE3QD8BFcD3QD9BPwE/QT7BPwE/QT6BPsE+gT9BOIA/gT/BP4A/gRhA/8E/gD/BAAF/gAABQAB/wT/AAAFYQMBBf8E/wQBBf8AYQMCBQEFAQUDBf8AAgViAwEFAQViAwMFAgUBAWIDYgMEBQMFYgMFBQQFBQUGBQQFBQUHBQYFBwUIBQYFBwUJBQgFCQVjAwgFCQUCAWMDCgV9AQsFCgUMBX0BDQUMBQoFDQV7AQwFDgUNBQoFDwUKBQsFDgUKBQ8FDwULBRAFEQUOBQ8FEgUPBRAFEQUPBRIFegERBRIFEgUQBRMFegESBXwBfAESBRMFfAETBZsD8gAUBRUFFgUVBRQFFgUUBWQD9AAWBWQD9ABkAxcFGAX0ABcFGAUXBRkFGgUYBRkFGgUZBRsFHAUaBRsFHAUbBR0F9QAcBR0F9QAdBR4FHwVkAxQFHwXzAGQDZQMfBRQFZQP2AB8F8gBlAxQF8gD3AGUD9wD4AGUD8gAgBfcA9wAgBfkA+gAhBSIF+gD9ACEFIQX8ACIFIQX7APwAfgEjBYEBfgEkBSMFgQEjBSUFgQElBWgDIwUmBSUFJAUnBSMFIwUnBSYFJAUoBScFJwUpBSYFKAUqBScFJwUqBSkFKAUrBSoFKgUsBSkFKwUtBSoFKgUtBSwFKwUuBS0FLQUvBSwFLgVnAy0FLQVnAy8FLgVmA2cDZwMwBS8FMAWAAS8FZgMxBWcDZwMxBTAFZgMyBTEFZgN/ATIFMwUwBTEFgAEwBTMFMwUxBTIFMwUyBX8BgAEzBTQFfwE0BTMFNQU2BZcDNQU3BTYFOAU3BTUFOAWWAzcFOQWWAzgFOQU6BZYDOwU6BTkFOwU8BToFPQU8BTsFPQWVAzwFAwFpAz4FBQE+BWkDBQFpAwcBaQMIAQcBAwE/BWkDPwUEAWkDPwUGAQQBCQFABQsBCQFBBUAFQQUKAUAFQQVrAwoBawMNAQoBawMMAQ0BQgVrA0EFQgVDBWsDagNDBUIFagNEBUMFRAUPAUMFRQVEBWoDRAVGBQ8BRQVHBUQFRwVGBUQFSAVHBUUFRwVJBUYFSAVKBUcFSgVJBUcFDgFKBUgFSgVLBUkFDgEQAUoFEAFLBUoFEAERAUsFTAVuA2wDTAVtA24DEgETARQBEgEVARMBFgEXARgBFgFNBRcBTQUZARcBTQUaARkBTgVPBVAFTgVRBU8FUgVTBVQFVAVTBR4BUgVVBVMFVAUeARsBGwEeARwBGwEcAR0BVgVVBVIFVgVXBVUFWAVXBVYFWAVZBVcFWgVZBVgFWgVbBVkFXAVbBVoFXAUfAVsFXQVeBV8FXwV0AycBXwVeBXQDXgUmAXQDXgVgBSYBXQVhBV4FYQVgBV4FYgVhBV0FYQVjBWAFYgVkBWEFZAVjBWEFZQVkBWIFZAVmBWMFZQVnBWQFZwVmBWQFaAVnBWUFZwVpBWYFaAVqBWcFagVpBWcFJQFqBWgFagVrBWkFJQF1A2oFdQNrBWoFdQMoAWsFIAFsBSIBIAFyA2wFcgNzA2wFcgMhAXMDIQEjAXMDIQEkASMBbQVuBW8FbwVuBXAFbQVxBW4FbwVwBXIFcgVwBSsBcgUrASkBcwVxBW0FcwV0BXEFdQV0BXMFdQV2BXQFKgF2BXUFKgF2A3YFeAN3BXcDeAN4BXcFdwN3BXkFdwN5BXkDegV7BVwDegXoAHsF6QBcA10DfAVdA1wDfAVcA3sF6gB8BXsF6gB7BX0F8ADqAO8A7wDxAPAA7wDqAF4DXgPqAH0F7wBeA+sAXgNgA+sAXgPuAGAD7ADuAF4D7ABfA+4A7ABeA34FXgN9BX4FfwXtAOwAfwXsAIAF7AB+BYAFgAXmAH8FfgWBBYAFgAWBBeYAfgWCBYEF5gCBBYIFfgWDBYIFfgV9BYMF5gCCBYQFgwWEBYIF5gCEBYUFgwWFBYQF5gCFBYYFhQXnAIYFhwWFBYMFhQWHBecAhwWDBVsD5wCHBVsDfQVbA4MF5wBbA4gFiAWJBecAfQWKBVsDigWIBVsDewWKBX0FiAWLBYkFigWLBYgFiwXjAIkFewXlAIoF5QCLBYoFiwXtBOMA5QDtBIsF5QBZA+0E5QBaA1kD5ABZA1oDjAWNBY4FjgUtAS4BjgWNBS0BjQWPBS0BjQWQBY8FkAUyAY8FkAUxATIBkQWQBY0FjAWRBY0FkQWSBZAFkwWRBYwFlAWSBZEFkwWUBZEFlAWVBZIFlgWUBZMFlwWVBZQFlgWXBZQFLAGXBZYFlwWYBZUFLAEwAZcFMAGYBZcFMAEvAZgFMwGZBTUBMwE0AZkFNQGZBTYBNQE2AZoFNwGbBZwFNwGdBZsFnAWbBXoDnAV6AzoBmwU7AXoDmwU5ATsBnQU5AZsFnQU4ATkBngWfBaAFngWhBZ8FogWhBZ4FogWjBaEFpAWjBaIFpAWlBaMFpgWlBaQFpgWnBaUFPAE9AT4BPAGoBT0BPwGpBUEBPwFAAakFewN8A30DewN+A3wDQgFDAUQBQgGqBUMBqwVGAawFqwVFAUYBrAVGAUcBrQWrBawFrAVHAa4FrQWsBa8FrwWsBa4FsAWtBa8FrwWuBbEFsAWvBbIFsgWvBbEFswWwBbIFsgWxBbQFtQWyBbQFswWyBbUFtQW0BUgBtQVIAUsBswW1BbYFtQVLAbYFswW2BUoBtgVLAUwBtgVMAUkBtwVPAbgFtwVOAU8BTQFOAbcFTQG5BU4BUAG6BVIBUAFRAboFUwG7BVUBUwFXAbsFvAVVAbsFvAW7BVQBVAFWAbwFvQWaA5gDvQW+BZoDvwW+Bb0FvwXABb4FwQXABb8FwQXCBcAFwwXCBcEFwwWZA8IFxAXFBcYFWAFZAVoBxwXIBckFWwFdAX8DWwFcAV0BXgF/A10BXgFdAV8BgANhAWIBgAOBA2EBgANjAYEDgANgAWMBggODA4QDcAGEA4MDcAGFA4QDcwGEA4UDhgNwAYMDhgNvAXABbgFvAYYDbgFxAW8BhwOGA4MDbgGGA4cDhwODA4IDbgGHA4gDygWIA4cDygWHA4kDcgGJA4cDggOEA4oDhwOCA4oDcwGKA4QDhwOKA4sDiwOKA3MBcgGHA4sDiwNzAXQBcgGLA3QBcgF0AXUBjAONA8sFjAPLBY4DjANkAY0DZAFmAY0DjAOOA5ADZAFlAWYBkAOOA2cBjwNlAWQBkANnAWgBjwNpAWUBzAWQA2gBzAVoAWoBawFpAY8DawHMBWoBawFsAWkBawFqAW0BawHNBcwFawGPA80FzgWSA5MDzgWRA5IDzgWTA5QDzgWUA88FoQGiAZwDoQGdA6IBoQGcA54DoQGeA58DnwOeA6MBnwOjAaADoQOfA6ADpAGfA6EDpQGhA6ADpQGiA6EDpQHQBaIDpQHRBdAFpgHQBdEFpgHRBacBowOkA4kBowOlA6QDpAOlA6YDpAOmA6cDggGmA6UDggGoA4MBggGDAakDggGpA6YDpgOpA6oDqwOnA6YDpgOqA6sDqwOIAacDqwOqA4QBqwOEAawD0gWsA4QB0gWtA6wDhAGFAa4DhAGuA9MF0gWEAdMF0wWuA4YB0wWGAa8D0gXTBa8D0gWvA4oBigGvA9QF0gXVBa0DigHVBdIFrQPVBdYFrQPWBY8BigHXBdUF1wXWBdUF1wWOAdYFigHUBdgFsAOOAdcFsAOQAY4BkAGwA9kFkAHZBbEDsAPYBbUDsAO1A9kF2AXUBbMD2AWzA7UD1AWyA7MD1AWHAbIDswOyA4sBswOLAbQDtQOzA7QDtQO0A7YD2QW1A7YD2QW2A7cDsQPZBbcDtwO2A4wBsQO3A9oFtwOMAdsF2gW3A9sF2gXbBdwFjQHcBdsFjQGRAdwFkgGTAbgDuAOTAZUBuQO4A5UBuQOUAbgDugOUAbkDugO7A5QBlgG7A7oDlgGXAbsDmAGXAZYBmAG8A5cBvAOYAZoBvAOaAZkBvQO+A78DvQOcAb4DvwO+A50BvwOdAZsBngHdBaABngGfAd0FwAOeAaABwAOgAd4FwQPCA8MDwQPEA8IDxAPFA8IDxAPGA8UD3wXgBeEF3wXiBeAFqAGpAaoBqAGrAakB4wXJA+QFzQPkBc4DzQPjBeQF4wXHA8kDrwHJA8cDrwHHA8gDyAPHA+UFyAPlBcsDywPlBcoDywPKA60B5QXMA8oDxwPmBeUF5QXmBcwDxwPjBeYF5gXQA8wD4wXPA+YF5gXPA9AD4wXNA88D0QPPA80D0QPNA7AB0gPPA9ED0gPQA88D5wXQA9ID5wXTA9ADsQHTA+cFsQHoBdMD6QXTA+gFsgHoBbEB6QXoBdYD1wPpBdYDsgHUA+gF1AOyAdUD1wPWA+oFrAHXA+oFrAHqBa4B1gPaA+oF6AXrBdYD1gPrBdoD6AXUA+sF1APVA9gD6wXUA9gD2APVA9kD2gPrBdsD6wXYA9sD2gPbA9wD2APZA7MB2wPYA7MB2wOzAbUB3APbA7UB3AO1AbgB2QO2AbMB2QPsBbYB7AXtBbYB7AXuBe0F7wW3AbYB3QO4Ae8F7wW2Ad4D3QPvBd4D7QXeA7YB8AXdA94D7gXxBe0F8AXeA/IF7QXyBd4D8QXyBe0F7gXzBfEF3wPwBfIF8wX0BfEF8wX1BfQF8QXkA/IF3wPyBeQD9AXkA/EF9QXhA/QF9QW0AeED4QPgA/QF9AXgA+QD4QPiA+AD4wPgA+ID5QPkA+AD4wPlA+AD5QPfA+QDugHlA+MDugG5AeUDuQHfA+UDuQHmA98D5wPoA/YF5wPqA+gD6wPnA/YF6wP2BekD7APrA+kD7APpA+0DvgHwA/cFvgH4BfAD9wXwA+4D9wXuA+8D7wPuA7wBuwH3Be8D7wO8AfEDuwHvA/ID8gPvA/ED8gPxA70BvwHzA/QDvwHCAfMD9APzA/kF9AP5BfUD+QX6BfUD+QX7BfoF+wX8BfoF+wXAAfwFwAH9BfwFwAH+Bf0F/gX/Bf0F/gXDAf8FwwHBAf8FwwHEAcEBxQEABvcDxQH4AwAGxgEABvgDxgH2AwAG+QPFAfcD+gMABvYD9wMABvoD+gP2AwEG/AP6AwEG/AMBBvsD9wP6A/0D/QP6A/wD+QP3A/4D/gP3A/0DxwH5A/4DxwH/A/kDAATHAf4D/gP9AwAEAAQBBMcB/QP8AwIEAAT9AwIEAgT8A8gBAgTIAckBAAQCBAMEAwQCBMkBAwQBBAAEAwTJAcoBAwQEBAEEygEEBAMEzAEBBAQEygEFBAQEzAEEBAYEBgQEBAUEBgTNAcwBBgQFBAcEBgQCBs0BBwQCBgYEBwTLAQIGzgHQAQgEzgHPAdAB0QEJBAoE0QHVAQkECgQJBAsECgQLBAwECgQMBAMGDQQDBgwEDQQMBBAECwQQBAwEEATTAQ0EEATUAdMBEAQEBtQBCwQEBhAEBAYSBNQBCQQOBAsEDgQEBgsECQTSAQ4EDgTSAQ8EDgQRBAQGBAYRBBIEEQQOBA8EEgQRBBMEEQQPBBMEBQYWBBQEBQYVBBYEFwQGBhkE2AEXBBkE2AEZBNcBFwQYBAYGGgQGBhgEGgQYBNYB2QHbAQcG2QHaAdsB3AEbBBwE3AHdARsE3QHfARsE3QHhAd8B3wHeARsE3wHgAd4B4gEdBB4E4gHjAR0E4wHkAR0E4wHlAeQB5gHnAegB5wHmAekB5wHpAQgG6gEfBOwB6gHrAR8E7QEgBCEE7QHwASAEIQQgBCIEIATzASIEIQQiBPEB7wEhBPEB7wHxAfIBIAQjBPMB8wEjBPQBIwT1AfQBIwTuAfUB9gEkBPgB9gH5ASQE+AEkBCUE+AElBPoBJAT3ASUEJAQmBPcB+gElBAkG+gEJBgoGCgYJBgsGCgYLBgwGDAYLBvwBDAb8AfsB/QH+AScE/wEnBP4BJwQAAv0BAAINBv0B/QENBgEC/QEBAg4GDgYBAgQCDgYEAgMCAgL/Af4B/gH9ASgEKAT9AQYCKAQGAgUC/gEoBAcCAgL+AQgCAgIIAgkCCAL+ASkECAIpBA8GEAYIAg8GEAYPBhEGEQYPBgoCEQYKAgsCEgYRBgsCEgYLAhMGFAYSBhMGFAYTBhUGFgYUBhUGFgYVBhcGGAYWBhcGGAYXBhkGGgYYBhkGGgYZBgwCDQIOAg8CDwIOAhsGGwYOAhACGwYQAhECEQIQAhwGEQIcBhICGAIdBh4GGAIUAh0GHgYZAhgCHgYdBh8GHgYXAhkCHgYfBiAGIAYXAh4GIAYfBiEGIAYiBhcCIAYhBiMGIwYiBiAGIwYhBiQGIwYlBiIGIwYkBiYGJgYlBiMGJgYnBiUGJgYkBigGKgQnBiYGJgYoBioEKgQTAicGKgQoBikGEwIqBCoGKgQpBioGEwIqBisGKgYsBisGLQYqBikGKAYtBikGKgYtBiwGKAYVAi0GFQIsBi0GFQIWAiwGHQIuBi8GHQItBC4GLgYtBBsCLgYbAjAGLwYuBjEGMQYuBjAGLwYxBjIGMQYwBjMGMgYxBjQGNAYxBjMGMgY0BjUGNAYzBjYGNQY0BjcGNwY0BjYGNQY3BisENwY2BjgGKwQ3BjkGOQY3BjgGKwQ5BjoGOQY4BjsGOgY5BiwELAQ5BjsGOgYsBDwGLAQ7Bj0GPAYsBD4GLAQ9Bj8GLAQ/Bj4GPQZABj8GPQYcAkAGQQY/BkAGPAY+BkIGPwZCBj4GQgY/BkEGGgI8BkIGQgZBBkMGGgJCBkMGHgJEBiACHgIfAkQGIAJEBkUGRQZEBkYGIAJFBiECRQZGBkcGIQJFBkgGSAZFBkcGIQJIBkkGSAZHBkoGSQZIBksGSwZIBkoGSQZLBkwGSwZKBk0GTAZLBk4GTgZLBk0GTAZOBk8GTgZNBlAGTwZOBi4ELgROBlAGTwYuBFEGLgRQBlIGUQYuBFMGLgRSBlQGLgRUBlMGUgZVBlQGUgYiAlUGIwJUBlUGUQZTBlYGVAZWBlMGVgZUBiMCJAJRBlYGVgYjAlcGJAJWBlcGJQJYBicCJQJZBlgGWAZZBloGWQYoAjAEWQYwBFoGWgYwBFsGWgZbBisCMARcBlsGMAQxBFwGXQZaBisCWAZaBl0GXQYrAl4GXQZeBl8GWAZdBmAGXQZfBmAGWAZgBmEGYAZfBmIGYQZgBmMGYAZiBmMGYQZjBmQGYwZiBmUGZAZjBmYGYwZlBmYGZAZmBmcGZgZlBikCZwZmBmgGZgYpAmgGZwZoBi8EaAYpAmkGLwRoBmoGaAZpBmoGLwRqBmsGaQZrBmoGJgIvBGsGJgJrBmwGaQZsBmsGbAZpBioCOQRtBm4GOQRLAm0GSwJvBm0GSwJMAm8GbQZvBk0CbgZtBnAGbQZNAnAGbgZwBnEGcAZNAnIGcQZwBjoEcAZyBjoEcQY6BE4COgRyBnMGOgRzBnQGdAZzBnUGdAZ1BnYGdgZ1BncGdgZ3BngGeAZ3BjsEeAY7BE8CeQY8AnoGeQZ7BjwCfAZ5BnoGfAZ6Bj0CfQZ5BnwGfgZ7BnkGfQZ+BnkGfgZ/BnsGgAZ+Bn0GgQZ/Bn4GgAaBBn4GPgKBBoAGgQaCBn8GPgI7AoEGOwKCBoEGOwI8BIIGPwKDBj4EPwI+BEQCRAI+BEUCPwJEAoQGRAJGAoQGPwKFBoMGhgaDBoUGPgSDBocGPgSHBkEChgY9BIMGhwaDBj0EhwY9BEACQgI9BIYGQgKIBj0EiQaIBkICiQaKBogGiwaKBokGiwaMBooGjQaMBosGjQaOBowGQwKOBo0GQwKPBo4GRwKQBkkCRwKRBpAGkAaRBkoCkAZKAkgCUwKSBpMGUwJQApIGUAKUBpIGUAJABJQGkgaUBpUGkwaSBpYGkgaVBpYGkwaWBpcGlgaVBpgGlwaWBpkGlgaYBpkGlwaZBpoGmQaYBpsGmgaZBpwGmQabBpwGmgacBp0GnAabBp4GnQacBj8EnAaeBj8EnQY/BEEEPwSeBp8GnwaeBlECQQQ/BKAGPwSfBqAGQQSgBqEGQQShBlICogagBp8GUQKiBp8GogahBqAGogZSAqEGUQKjBqIGUgKiBqMGpAalBqYGpAZSBKUGpwakBqYGpwamBlMEqAanBlMEqAZTBKkGqgaoBqkGqgapBqsGrAaqBqsGrAarBlQEVAJCBK0GVAKuBkIEVwJCBK4GVwJYAkIEQgRYAlkCrQZCBFUCrQZVAlYCWgKvBrAGWgJdAq8GsAavBlsCsAZbAl4CXgJbAl8CXgJfAmACsQawBl4CsQZeArIGQwSxBrIGQwSyBrMGswayBmECtAZDBLMGswZhArUGtAazBrYGtgazBrUGtwa0BrYGtga1BrgGtwa2BrkGuQa2BrgGXAK3BrkGuQa4BroGXAK5BmICYgK5BroGYgK6BmMCuwZlAmYCuwZkAmUCZwJoAmkCZwJqAmgCawJtArwGawJsAm0CvAZtAm4CvAZuAm8CvQa+Br8GvQbABr4GwQbCBsMGwQbEBsIGxQbBBsMGxAZyAsIGxQbDBsYGxAZwAnICcAJxAnICcAJzAnECxwbFBsYGxwbGBsgGyQbHBsgGyQbIBsoGywbJBsoGywbKBnQCzAbNBs4GzAbPBs0G0AbMBs4GzwZGBM0GzwZ7AkYEzQZGBHwCzQZ8AtEGzgbNBtEGzgbRBtIG0AbOBtMG0wbOBtIG1AbQBtMG0wbSBtUG1AbTBtYG1gbTBtUG1wbUBtYG1gbVBtgG1wbWBtkG2QbWBtgGegLXBtkG2QbYBtoGegLZBkcERwTZBtoGRwTaBn0CdQLbBkQEdQJ2AtsGRATbBkUERARFBHcCdwJFBHgCdwJ4AnkC3AbdBt4G3AbfBt0G4AbcBt4G3wbhBt0G4AbeBkgE3wbiBuEG4gZ/AuEG4gZ+An8C4wbgBkgE4wZIBOQGgALjBuQGgALkBuUGSwTmBucGSwRJBOYGSQToBuYGSQRKBOgG6QbqBjEC6QY0BOoGMgI1BDQE6wY0BDUE6wbqBjQEMwLqBusGMwLsBuoGOQI4AjMCOAI5AjoCOAI2BDMCNgTsBjMCOAI0AjYENgQ0AjgENgQ4BDcCNQI2BDcCNQI3AjcENQLtBjYENgTtBuwG7gY1AjYC7gbvBjUCNQLvBu0G7wbuBjAC7QbvBvAG7wYwAvAG7QbwBvEGMALxBvAG7QbxBvIG7QbyBuwGMALzBvEG8gbxBvMGMAL0BvMG8gbzBvQGMAL1BvQG9Ab1Bi8C9gbyBvQG9AYvAvYG9gYzBPIGLwIzBPYG7AbyBjMELwL3BjME9wYvAvgG7AYzBPkG+QYzBPcG6gbsBvkG9wb4BvoG+Qb3BvoG+gb4BiwC6gb5Bi4CLgL5BvoG+gYsAlwGLgL6BlwGLgJcBjEELgIxBDIELQIyBDEE+wb8Bv0G+wb+BvwG/wb7Bv0G/gaCAvwG/gaFAoIC/AaCAgAH/AYABwEH/Qb8BgEHAQcAB4cCAQeHAoYC/QYBBwIH/wb9BgMHAwf9BgIHBAf/BgMHAwcCBwUHBAcDBwYHBgcDBwUHgQIEBwYHBgcFB0wEgQIGB4QChAIGB0wEhAJMBIMCiAIHB4oCiAKJAgcHiQKLAgcHiQIIB4sCjAIJBwoHjAILBwkHCgcJB40CCgeNAo4CCQeQAo0CCQdNBJACCwdNBAkHCwePAk0EDAdXBA0HDAcOB1cEDwcMBw0HDwcNBxAHVgQPBxAHVgQQBxEHVQRWBBEHVQQRBxIHkQKTAhMHkQKSApMClAIUB5YClAKVAhQHTgRPBFAETgRRBE8ElwKZAhUHlwKYApkCFgecApoCFgcXB5wCFwebApwCGAcXBxYHFwcZB5sCGAcaBxcHGgcZBxcHGwcaBxgHGgccBxkHGwcdBxoHHQccBxoHHgcdBxsHHQcfBxwHIAcfBx0HHgcgBx0HIAedAh8HIAegAp0CHgchByAHIAchB6ACHgefAiEHIQehAqACIQeeAqECIgejAqQCIgcjB6MCogIiB6QCogKkAiQHpQIlB6cCpQKmAiUHqAImB6oCqAKrAiYHJwcmB6sCJwepAiYHqQInB6wCKAdZBCkHKAdYBFkEKgcoBykHKgcpBysHLAcqBysHLAcrBy0HLgcsBy0HLgctB1oELwcwBzEHrQKuAq8CMgczBzQH"), "lods": [0.028636025, PackedByteArray("AACwAgIABgACALACAAABALACBgCwAgUAAwCwAgEABAAFALACAwCxArACBACwArECFAAVAAMAFAAPABUADAAPABQADAANAA8ABwAEAAgABwAIAAkACgAHAAkACgAJAAsAsgINAAwAsgIKAAsAsgKzAg0AsgILALMCDgAKALICEgCyAgwAEAAOALICEACyAhIAEAARAA4AEAASABMAtAIXALUCtAIZABcAGgAZALQCGAC0ArUCGAAWALQCGgC0AhsAGwAcABoAGwC2AhwAtgIeABwAtgIfAB4AtwIfALYCtwIdAB8AuAK1AhcAIQC1ArgCIQC4AiIAuAIXACMAJAC4AiMAJAAgALgCIAAkACUAIAAlALkCuQIlACcAuQInACgAugK5AigAugIoACYAuwK8Ar0CuwK9Ar4CKQAqACsAKQC/AioAKQArAMACKQDAAsECwAIrAMICwALCAsMCxALAAsMCxQLDAsICxQLCAjAALQDFAjAALQDGAsUCLQAwADEALQAxAMcCyALDAsUCxALDAskCyALJAsMCLADEAskCLwDJAsgCLADJAi4ALwAuAMkCMgAzADQAMgA1ADMAMgA2ADUAMgA3ADYAXABeAMoCXADLAl4AXADMAssCXADNAswCzQJdAMwCzQLOAl0AzQLPAs4CXwDPAs0CYADOAs8CYADPAtACYADQAmIAYQBiANACOAA5ADoAOAA7ADwA0QLSAtMC0QJEANIC0gLUAtMC0gLVAtQCPQDTAtQCPQA/ANYCPQDXAj8APQDUAtcC1ALYAtcC2QLUAtUC1ALZAtgC2QLVAkMA2QI+ANgC2QLaAj4A2wI+ANoC2wLaAtwCPgDdAkEAPgDeAt0C2wLeAj4A3gJAAN0C3AJHAEkARQDcAkkA2wLcAkUARQBJAEsASwDfAkUA3gLgAkIA3gLhAuAC2wLhAt4C4QJGAOAC4QLiAkYA2wLjAuEC4wLiAuECRQDjAtsC4wLkAuICRQDkAuMCRQDlAuQC3wLlAkUA5QJIAOQC3wJMAOUC5QJKAEgATABKAOUCTQDmAk8A5gJQAE8A5wJQAOYC5wLmAk4A6ALnAk4A6AJOAOkCUQDoAukCUQDpAlIAUwBRAFIAUwBSAOoC6gJVAFMA6gJUAFUA6wLsAlgA6wLtAuwC7QJXAOwC7QJWAFcAWQBaAFsA7gJaAFkA7wLwAvEC7wLyAvAC8QLwAvMC8QLzAvQCYwBkAGUAYwBmAGQAZwD1AvYCZwD3AvUC9wL4AvUC9wL5AvgC+QJoAPgC9QL4AvoC+wL2AvUC9QL6AvsC+wL8AvYC+gL9AvsC/gJpAPsC/wL+AvsC/wL7Av0CagD/Av0CawBqAP0CawD9AgADAAMBA2sA/QICAwADAAMDAwEDAgMDAwADBAMCA/0CAwMFAwEDBAMGAwIDbQAGAwQDbQBsAAYDAgMGAwcDBwMIAwIDAgMIAwMDBwMJAwgDAwNuAAUDCANuAAMDCQNwAAgDCANwAG4ACQNzAHAACgNwAHMABQNuAHEAcABxAHIACgMLA3AAcAALA3EADAMLAwoDBQNxAA0DBQMNA28AbwANAw4DDwMOAw0DcQALAxADDAMQAwsDDQNxABADDwMNAxEDEQMNAxADEQMQAwwDdQAPAxEDdQARA3QAdAARAwwDdAAMAxIDEwMUAxUDFgMUAxMDFwMUAxYDFwMYAxQDeAAZAxoDeAAbAxkDeAAcAxsDHAN3ABsDdgAcA3gAHAMdA3cAdgAeAxwDHgMdAxwDHgN5AB0DegAfA3wAegAgAx8DIAN7AB8DIAMhA3sAewAhA30AewB9AH4AfgB9AH8AgAAiAyMDggAjAyIDgAAkAyIDJQMkA4AAJAMmAyIDJgMnAyIDKAMnAyYDJAMpAyYDKQMoAyYDJQMqAyQDKgMpAyQDgQAqAyUDgQAlAysDLAMqA4EAKgMsAykDLAOBAC0DKQMuAygDLAMuAykDLgODACgDLgOFAIMALAMvAy4DLwOFAC4DLwMsAy0DLwOEAIUALwMtAzADhAAvAzADhgAwAy0DhAAwAzEDhgAyAzADMgMxAzADMgOGAIgAMgMzAzEDMgOIAIcAMwMyA4cAiQCKAIsAiQA0A4oAjAA1A44AjAA2AzUDNgM3AzUDNgM4AzcDNgM5AzgDNQM3AzoDNQM6A40AOgM7A40AOQM8AzgDNwM4AzwDPAM5A48APAOPAJAANwM8Az0DOgM3Az0DPAOQAD0DPQM7AzoDkAA+Az0DPQM+AzsDPwNAA0EDQgNDA0QDkgBDA0IDkgCTAEMDRQNEA0MDRQORAEQDlACVAJYAlwBGA5kAlwBHA0YDmQBGA5oAmQCaAJwAmgBGA5gAmgCYAJsAnQBIA58AnQBJA0gDnwBIA54AnwCeAKAAoQCiAKMAogChAKQApQBKA6cApQCmAEoDqABLA6oAqABMA0sDTANNA0sDSwNNA64ATAOsAE0DqwCsAEwDqwCtAKwASwOuAE4DrgCvAE4DTgOvALAATgOwAKkAsQBPA7MAsQC0AE8DTwOyAFADTwNRA7IAtABRA08DtAC2AFEDtgC3AFEDtwC1AFEDuABSA7oAUgO4ALsAuQC6AFIDuAC8ALsAuAC+ALwAvgC/ALwAvQC6ALkAugBTA7gAUwPBALgAUwPAAMEAugDCAFMDvQDDALoAvQDEAMMAwwBUA7oAwwDFAFQDwwDGAMUAxwDGAMMAyADJAMoAyQDLAMoAyQDMAMsAzADNAMsAVQPPANAA0gBVA9AAzwBVA84AzwDOANEAVQPTAM4AVQPSANMA0gDUANMA1QDWANcA1gDYANcA2ABWA9cAVgPZANcA2ADbAFYDVgPaANkA2gBWA9sA3ABXA94A3ADfAFcDVwNYA94A3QDiAFcD4gDhAFcDVwPhAFgDWAPhAOAAWAPgAOMAWAPjAFkD5ABZA1oD5QBaA1kD5QBZA+MA5QDjAFsDWwPjAOcA5gBbA+cA6ADlAFwD6QBcA10D6gBdA1wD6gBcA+UA6gDlAFsD5gBeA1sDXgPqAFsD5gDtAOwA7ABeA+YA7ABfA+4A7ADuAF4DXgPuAGADXgNgA+sA7wBeA+sA7wDqAF4D8ADqAO8A7wDxAPAAYQNiA/4AYQMBAWID/gBiA/8A/gD/AAABYgNjA/8AYgMCAWMD8gBkA/QA9QD0AGQD8gBlA2QDZQPzAGQDZQP2APMA8gD3AGUD9wD4AGUD9wDyAPkA+gD7APwA+gD9APsAZgN/AWcDgAFnA38BfgFmA2cDZwOAAWgDfgFnA4EBgQFnA2gDAwFpAwUBBQFpAwcBaQMIAQcBAwEGAWkDBgEEAWkDCQEKAQsBCQFqAwoBagNrAwoBawMNAQoBawMMAQ0BagMQAWsDDgEQAWoDEAEPAWsDEAERAQ8BbANtA24DEgETARQBEgEVARMBFgEXARgBFgEZARcBFgEaARkBbwN4AXADbwN3AXgBdgFvA3ADeQF3AW8DdgFxA28DcQN5AW8DGwEcAR0BGwEeARwBGwEfAR4BIAFyAyIBcgNzAyIBcgMhAXMDIQEjAXMDIQEkASMBJQF0AycBJQF1A3QDdQMmAXQDdQMoASYBKgErASkBKgF2AysBdwN4A3kDLAEtAS4BLAEwAS0BMAEvAS0BLQEvATEBLQExATIBMwE0ATUBNQE0ATYBNwF6AzoBNwE4AXoDOAE7AXoDOAE5ATsBPAE9AT4BPwFAAUEBewN8A30DewN+A3wDQgFDAUQBTQFOAU8BUAFRAVIBSQFIAUsBSQFLAUwBSQFGAUgBRgFHAUgBSgFGAUkBSgFFAUYBUwFUAVUBVAFWAVUBUwFXAVQBWAFZAVoBWwFdAX8DWwFcAV0BXgF/A10BXgFdAV8BgANhAWIBgAOBA2EBgANjAYEDgANgAWMBggODA4QDcAGEA4MDcAGFA4QDcwGEA4UDhgNwAYMDhgNvAXABbgFvAYYDbgFxAW8BhwOGA4MDbgGGA4cDhwODA4IDbgGHA4gDiQOIA4cDcgGJA4cDggOEA4oDhwOCA4oDcwGKA4QDhwOKA4sDiwOKA3MBcgGHA4sDiwNzAXQBcgGLA3QBcgF0AXUBjAONA44DjANkAY0DZAFmAY0DZAFlAWYBjwNlAWQBjwNpAWUBjAOOA5ADkAOOA2cBkANnAWgBkANoAWoBawFpAY8DawGPA5ADawGQA2oBawFsAWkBawFqAW0BkQOSA5MDkQOTA5QDlQOWA5cDmAOZA5oDegF7AXwBfAF7AX0BfAF9AZsDoQGiAZwDoQGdA6IBoQGcA54DoQGeA58DnwOeA6MBnwOjAaADoQOfA6ADpAGfA6EDpQGhA6ADpQGiA6EDpQGnAaIDpgGiA6cBowOkA4kBowOlA6QDpAOlA6YDpAOmA6cDggGmA6UDggGoA4MBggGDAakDggGpA6YDpgOpA6oDqwOnA6YDpgOqA6sDqwOIAacDqwOqA4QBqwOEAawDigGsA4QBigGtA6wDhAGFAa4DhAGuA68DigGEAa8DrwOuA4YBrQOOAY8BrQOwA44BigGwA60DsAOQAY4BkAGwA7EDrwOHAbIDrwOyA7MDigGvA7MDswOyA4sBswOLAbQDigGzA7UDtQOzA7QDsAOKAbUDtQO0A7YDsAO1A7YDsAO2A7cDsQOwA7cDtwO2A4wBsQO3A5EBtwOMAY0BkQG3A40BkgGTAbgDuAOTAZUBuQO4A5UBuQOUAbgDugOUAbkDugO7A5QBlgG7A7oDlgGXAbsDmAGXAZYBmAG8A5cBvAOYAZoBvAOaAZkBvQO+A78DvQOcAb4DvwO+A50BvwOdAZsBngGfAaABwAOeAaABwQPCA8MDwQPEA8IDxAPFA8IDxAPGA8UDqAGpAaoBqAGrAakBrwHHA8gDrwHJA8cDyAPHA8oDyAPKA8sDywPKA60BxwPMA8oDzQPHA8kDzQPJA84DxwPPA8wDxwPNA88DzAPPA9AD0QPPA80D0QPNA7AB0gPPA9ED0gPQA88D0gPTA9ADsQHTA9IDsgHTA7EBsgHUA9MD1AOyAdUD0wPUA9YD1wPTA9YD1APVA9gD1gPUA9gD2APVA9kD1wPWA9oDrAHXA9oDrAHaA64B2gPWA9sD1gPYA9sD2gPbA9wD2APZA7MB2wPYA7MB2wOzAbUB3APbA7UB3AO1AbgB3QO4AbUB2QO2AbMBtQG3AbYB3QO1Ad4DtQG2Ad4D3wPdA94D2QPgA7YB2QO0AeADtAHhA+AD4QPiA+AD4wPgA+IDtgHkA94D3wPeA+QD4APkA7YB4wPlA+AD5QPkA+AD5QPfA+QDugHlA+MDugG5AeUDuQHfA+UDuQHmA98D5wPoA+kD5wPqA+gD6wPnA+kD7APrA+kD7APpA+0DvgHuA+8DvgHwA+4D7wPuA7wBuwG+Ae8D7wO8AfEDuwHvA/ID8gPvA/ED8gPxA70BvwHzA/QDvwHCAfMD9APzA8AB9APAAfUDwAHBAfUDwAHDAcEBwwHEAcEBxQH2A/cDxQH4A/YDxgH2A/gD+QPFAfcD9wP2A/oD+gP2A/sD/AP6A/sD9wP6A/0D/QP6A/wD+QP3A/4D/gP3A/0DxwH5A/4DxwH/A/kDAATHAf4D/gP9AwAEAAQBBMcB/QP8AwIEAAT9AwIEAgT8A8gBAgTIAckBAAQCBAMEAwQCBMkBAwQBBAAEAwTJAcoBAwQEBAEEygEEBAMEzAEBBAQEygEFBAQEzAEEBAYEBgQEBAUEBgTNAcwBBgQFBAcEBgTLAc0BBwTLAQYEzgHQAQgEzgHPAdAB0QEJBAoE0QHVAQkECgQJBAsECgQLBAwECgQMBA0ECQQOBAsECQTSAQ4EDgTSAQ8EDQQMBBAECwQQBAwEEATTAQ0EEATUAdMBCwQRBBAEEAQRBNQBDgQRBAsEEQQOBA8EEQQSBNQBEQQPBBMEEgQRBBMEFAQVBBYEFwQYBBkE2AEXBBkE2AEZBNcBGgQZBBgEGgQYBNYB2QHaAdsB3AEbBBwE3AHdARsE3QHfARsE3QHhAd8B3wHeARsE3wHgAd4B4gEdBB4E4gHjAR0E4wHkAR0E4wHlAeQB5gHnAegB5wHmAekB6gEfBOwB6gHrAR8E7QEgBCEE7QHwASAEIQQgBCIEIATzASIEIQQiBPEB7wEhBPEB7wHxAfIBIAQjBPMB8wEjBPQBIwT1AfQBIwTuAfUB9gEkBPgB9gH5ASQE+AEkBCUE+AElBPoB+gElBPsB+wElBPwBJAT3ASUEJAQmBPcB/QH+AScEJwQAAv0B/wEnBP4B/QEAAgEC/QEBAgMCAwIBAgQCAgL/Af4B/gH9ASgEKAT9AQYCKAQGAgUC/gEoBAcCAgL+AQgCAgIIAgkCCAL+ASkECAIpBAoCCAIKAgsCDAIIAgsCDQIOAg8CDwIOAhACDwIQAhECEQIQAhICKgQUAhUCKgQVAhYCKgQWAhMCGAIUAioEKgQTAhcCKgQXAhgCGAIXAhkCKwQsBBoCHAIaAiwEHQIsBCsELAQbAhwCHQItBCwELAQtBBsCHgIfAiACIAIfAiECIQIfAi4ELgQfAiICIQIuBCQCIwIuBCICJAIuBCMCJQIvBCcCJQIoAi8ELwQoAjAEJgIvBCoCKQIqAi8ELwQwBCkCMAQrAikCMAQsAisCMAQxBCwCLQIyBDEELgIxBDIELgIsAjEELgIzBCwCMwQvAiwCMwQwAi8CMQI0BC4CMgI1BDQEMwI0BDUEMwIuAjQEMwIzBC4CMAIzBDYENgQzBDMCMAI1AjYCNQIwAjYENQI3AjcENQI2BDcCNgQ4BDcCNgQ0AjgEOAI0AjYEOAI2BDMCOQI4AjMCOAI5AjoCOQQ6BE4COQRLAjoESwJNAjoESwJMAk0COgRNAjsEOgQ7BE8COwI8Aj0COwI8BDwCPgI7Aj0CPwI9BD4EPwJCAj0EQwI9BEICPgQ9BEACPgRAAkECPwI+BEQCRAI+BEUCRAJGAj8CRwJIAkkCRwJKAkgCUgI/BFECPwRABFECQQQ/BFICUAJABD8EUwI/BEEEUwJQAj8EVAJCBFYCVgJCBFUCVAJXAkIEVwJYAkIEQgRYAlkCWgJbAkMEWgJdAlsCQwRbAl4CXgJbAl8CXgJfAmACQwReAmICXAJDBGICYgJeAmECYgJhAmMCZAJlAmYCZwJoAmkCZwJqAmgCawJsAm0CawJtAm4CawJuAm8CcAJxAnICcAJzAnECcAJyAnQCdQJ2AkQERAR2AkUERARFBHcCdwJFBHgCdwJ4AnkCegJGBEcEegJ7AkYERwRGBHwCRwR8An0CgAJ/AkgEgAJ+An8CSQRKBEsEgQKCAoQCgQKFAoIChAKCAkwEhAJMBIMCggKHAkwETASHAoYCiAKJAooCiQKLAooCjAJNBI4CjAKPAk0EjgJNBJACjgKQAo0CkQKSApMClAKVApYCTgRPBFAETgRRBE8ElwKYApkCogKjAqQCpQKmAqcCngKgAp0CngKhAqACngKdApwCnAKdApsCnwKeApwCnwKcApoCqAKpAqoCqAKrAqkCqQKrAqwCrQKuAq8CUgRTBFQEVQRWBFcEWARZBFoE"), 0.60212475, PackedByteArray("AAABAAIAAwACAAEABAACAAMABAAFAAIABgACAAUABwAEAAgABwAIAAkACgAHAAkACgAJAAsADAAKAAsADAALAA0ADgAKAAwADAANAA8AEAAOAAwAEAARAA4AEAAMABIAEAASABMADAAPABQAFAAPABUAFAAVAAMAFgAXABgAFgAZABcAGgAZABYAGgAWABsAGwAcABoAGwAdABwAHQAeABwAHQAfAB4AIAAYABcAIQAYACAAIQAgACIAIAAXACMAJAAgACMAIAAkACUAIAAlACYAJgAlACcAJgAnACgAKQAqACsAKQArACwALQAsACsALQAuACwALwAuAC0ALQArADAALQAwADEAMgAzADQAMgA1ADMAMgA2ADUAMgA3ADYAOAA5ADoAOAA7ADwAPQA+AD8APgBAAEEAPgBCAEAAPQBDAD4AQwBCAD4ARABDAD0AQwBFAEIARQBGAEIARQBDAEcARQBIAEYARQBHAEkARQBKAEgARQBJAEsASwBKAEUASwBMAEoATQBOAE8ATgBQAE8AUQBQAE4AUQBOAFIAUwBRAFIAUwBSAFQAVABVAFMAVgBXAFgAWQBaAFsAXABdAF4AXABfAF0AYABdAF8AYABfAGEAYABhAGIAYwBkAGUAYwBmAGQAZwBoAGkAagBpAGgAawBqAGgAaABsAGsAbQBsAGgAbABuAGsAawBuAG8AbABwAG4AbwBuAHEAbwBxAHAAcABxAHIAbABzAHAAdABwAHMAdABvAHAAdQBvAHQAdgB3AHgAdgB5AHcAegB7AHwAegB9AHsAewB9AH4AfgB9AH8AgACBAIIAgQCDAIIAgQCEAIMAhACFAIMAhACBAIYAhACGAIcAhwCGAIgAiQCKAIsAjACNAI4AjQCMAI8AjQCPAJAAkQCSAJMAlACVAJYAlwCYAJkAmQCYAJoAmgCYAJsAmQCaAJwAnQCeAJ8AnwCeAKAAoQCiAKMAogChAKQApQCmAKcAqACpAKoAqACrAKkAqwCsAKkAqwCtAKwAqQCsAK4ArgCvAKkAqQCvALAAsQCyALMAsQC0ALIAtAC1ALIAtAC2ALUAtgC3ALUAuAC5ALoAuQC4ALsAuAC8ALsAvQC6ALkAuAC+ALwAvgC/ALwAugDAALgAwADBALgAugDCAMAAvQDDALoAvQDEAMMAwwDFALoAwwDGAMUAxwDGAMMAyADJAMoAyQDLAMoAyQDMAMsAzADNAMsAzgDPANAAzwDOANEA0gDOANAAzgDSANMA0gDUANMA1QDWANcA1gDYANcA2ADZANcA2ADaANkA2wDaANgA3ADdAN4A3ADfAN0A3QDgAN4A3QDhAOAA4gDhAN0A3gDgAOMA3gDjAOQA5QDkAOMA5gDjAOcA5gDlAOMA6ADlAOkA6gDpAOUA6wDlAOYA6wDqAOUA6wDmAOwA5gDtAOwA7ADuAOsA7wDqAOsA8ADqAO8A7wDxAPAA8gDzAPQA9QD0APMA8gD2APMA8gD3APYA9wD4APYA9wDyAPkA+gD7APwA+gD9APsA/gD/AAAB/gABAf8AAQECAf8AAwEEAQUBAwEGAQQBBQEEAQcBBAEIAQcBCQEKAQsBCQEMAQoBDAENAQoBDgEMAQkBDgEPAQwBDgEQAQ8BEAERAQ8BEgETARQBEgEVARMBFgEXARgBFgEZARcBFgEaARkBGwEcAR0BGwEeARwBGwEfAR4BIAEhASIBIQEjASIBIQEkASMBJQEmAScBJQEoASYBKQEqASsBLAEtAS4BLAEvAS0BLAEwAS8BLwExAS0BLQExATIBMwE0ATUBNQE0ATYBNwE4ATkBNwE5AToBOQE7AToBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBRQFHAUgBSQFFAUgBSgFFAUkBSQFIAUsBSQFLAUwBTQFOAU8BUAFRAVIBUwFUAVUBVAFWAVUBUwFXAVQBWAFZAVoBWwFcAV0BXgFbAV0BXgFdAV8BYAFhAWIBYAFjAWEBZAFlAWYBZAFmAWcBZAFnAWgBZAFpAWUBZAFoAWoBawFpAWQBawFkAWoBawFsAWkBawFqAW0BbgFvAXABbgFxAW8BbgFwAXIBcgFwAXMBcgFzAXQBcgF0AXUBdgF3AXgBdgF5AXcBegF7AXwBfAF7AX0BfgF/AYABfgGAAYEBggGDAYQBhAGFAYYBhAGGAYcBggGEAYgBiQGCAYgBigGEAYcBigGIAYQBigGHAYsBigGLAYwBigGMAY0BiAGKAY4BiAGOAY8BigGQAY4BkAGKAY0BkAGNAZEBkgGTAZQBlAGTAZUBlgGUAZUBlgGXAZQBmAGXAZYBmAGZAZcBmQGYAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGhAaMBpQGkAaMBpQGmAaQBpQGnAaYBqAGpAaoBqAGrAakBrAGtAa4BrwGwAa0BsQGtAbABsgGtAbEBrQGyAa4BrgGyAbMBsgG0AbMBrgGzAbUBtAG2AbMBtAG1AbYBtQG3AbYBrgG1AbgBuQG4AbUBuQG1AbQBugG5AbQBuwG8Ab0BuwG+AbwBvwHAAcEBvwHCAcABwAHDAcEBwwHEAcEBxQHGAccBxwHGAcgBxwHIAckBxwHJAcoBygHLAccBxwHLAcwBywHNAcwBzgHPAdAB0QHSAdMB0gHUAdMB0QHVAdIB1gHXAdgB2QHaAdsB3AHdAd4B3QHfAd4B3wHgAd4B3QHhAd8B4gHjAeQB4wHlAeQB5gHnAegB5wHmAekB6gHrAewB7QHuAe8B7QHwAe4B7wHuAfEB7wHxAfIB7gHzAfEB8wHuAfQB7gH1AfQB9gH3AfgB9gH5AfcB+AH3AfoB+gH3AfsB+wH3AfwB/QH+Af8B/wEAAv0B/QEAAgECAgL/Af4B/QEBAgMCAwIBAgQC/gH9AQUCBQL9AQYC/gEFAgcCAgL+AQgCAgIIAgkCCAL+AQoCCAIKAgsCDAIIAgsCDQIOAg8CDwIOAhACDwIQAhECEQIQAhICEwIUAhUCEwIVAhYCFwIUAhMCGAIUAhcCGAIXAhkCGgIbAhwCHQIbAhoCHgIfAiACIAIfAiECIQIfAiICIQIiAiMCJAIhAiMCJQImAicCJQIoAiYCKQIqAiYCJgIrAikCJgIoAisCKAIsAisCKAItAiwCLgIsAi0CLwIsAi4CLgIwAi8CMQIyAi4CMwIuAjICNAIwAi4CNAIuAjMCNAI1AjACMAI1AjYCNQI0AjcCOAI0AjMCOQI4AjMCOAI5AjoCOwI8Aj0CPgI7Aj0CPwJAAkECPwJCAkACQwJAAkICPwJBAkQCRAJBAkUCRAJGAj8CRwJIAkkCRwJKAkgCSwJMAk0CSwJNAk4CTgJNAk8CUAJRAlICUwJQAlICVAJVAlYCVAJXAlUCVwJYAlUCVQJYAlkCWgJbAlwCWgJdAlsCXAJbAl4CXgJbAl8CXgJfAmACXAJeAmECXAJhAmICYgJhAmMCZAJlAmYCZwJoAmkCZwJqAmgCawJsAm0CawJtAm4CawJuAm8CcAJxAnICcAJzAnECdAJwAnICdQJ2AncCdwJ2AngCdwJ4AnkCegJ7AnwCegJ8An0CfgJ/AoACgQKCAoMCgQKDAoQCgQKFAoICgwKCAoYCggKHAoYCiAKJAooCiQKLAooCjAKNAo4CjAKPAo0CjQKPApACkQKSApMClAKVApYClwKYApkCmgKbApwCmgKdApsCngKdApoCnwKeApoCngKgAp0CngKhAqACogKjAqQCpQKmAqcCqAKpAqoCqAKrAqkCqQKrAqwCrQKuAq8C")], -"material": ExtResource("26_r2jxp"), +"material": ExtResource("2_330gv"), "name": "mat_Molikman", "primitive": 3, "skin_data": PackedByteArray("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"), @@ -314,7 +316,7 @@ _surfaces = [{ "index_count": 240, "index_data": PackedByteArray("AABEAAIARAAEAAUARAAGAAQAAABFAEQARQAGAEQAAwBFAAAARQAHAAYAAwABAEUAAQAHAEUAAQAIAAcARgAIAAEARgAJAAgAIABHABwAIABIAEcAHABHAEkAHABJAB4ARwAdAEkARwAfAB0ASAAfAEcASAAhAB8ACgBKAAwACgALAEoADABKAEsADABLABAASgAPAEsASgANAA8ACwANAEoACwAOAA0AEQBMABMAEwBMABIAEwASABQAEQBNAEwATQAVAEwAFwBNABEATQAWABUAFwBOAE0ATgAWAE0ATgAYABYAGQAaABsAGQBPABoAIgBQAFEAIgAjAFAAJQAiAFEAJQBRACQAUQBQACgAUAAnACgAUAAmACcAUQAoACkAJABRACkAJAApACoAUgAkACoAUgAqACsAQgBTAFQAQgA+AFMAVABTAEAAVABAAEMAUwA/AEAAUwBVAD8APgBVAFMAPgBBAFUALABWAC4ALAAtAFYALgBWAC8ALgAvADAAVgAxAC8AVgBXADEALQBXAFYALQAyAFcAMwBYAFkAMwA0AFgANAA1AFgANAA2ADUAWQBYADcAOQAzAFkAWQA3ADgAOQBZAFoAWgBZADgAWgA4ADoAOwA9AFsAOwA8AD0A"), "lods": [0.074464336, PackedByteArray("AAABAAIAAwABAAAAAgAEAAUAAgAGAAQAAQAGAAIAAQAHAAYAAQAIAAcAAQAJAAgACgALAAwACwANAAwACwAOAA0ADAANAA8ADAAPABAAEQASABMAEwASABQAEQAVABIAEQAWABUAFwAWABEAFwAYABYAGQAaABsAHAAdAB4AHAAfAB0AIAAfABwAIAAhAB8AIgAjACQAJQAiACQAIwAmACcAIwAnACgAJAAjACgAJAAoACkAJAApACoAJAAqACsALAAtAC4ALgAtAC8ALgAvADAALQAxAC8ALQAyADEAMwA0ADUANAA2ADUAMwA1ADcAMwA3ADgAOQAzADgAOQA4ADoAOwA8AD0APgA/AEAAPgBBAD8AQgA+AEAAQgBAAEMA")], -"material": ExtResource("26_r2jxp"), +"material": ExtResource("2_330gv"), "name": "mat_Molikman", "primitive": 3, "skin_data": PackedByteArray("OgAAAAAAAAD//wAAAAAAADoAAAAAAAAA//8AAAAAAAA6AAAAAAAAAP//AAAAAAAAOgAAAAAAAAD//wAAAAAAADoAAAAAAAAA//8AAAAAAAA6AAAAAAAAAP//AAAAAAAAOgAAAAAAAAD//wAAAAAAADoAAAAAAAAA//8AAAAAAAA6AAAAAAAAAP//AAAAAAAAOgAAAAAAAAD//wAAAAAAADoAAAAAAAAA//8AAAAAAAA6AAAAAAAAAP//AAAAAAAAOgAAAAAAAAD//wAAAAAAADoAAAAAAAAA//8AAAAAAAA6AAAAAAAAAP//AAAAAAAAOgAAAAAAAAD//wAAAAAAADoAAAAAAAAA//8AAAAAAAA6AAAAAAAAAP//AAAAAAAAOgAAAAAAAAD//wAAAAAAADoAAAAAAAAA//8AAAAAAAA6AAAAAAAAAP//AAAAAAAAOgAAAAAAAAD//wAAAAAAADoAAAAAAAAA//8AAAAAAAA6AAAAAAAAAP//AAAAAAAAOgAAAAAAAAD//wAAAAAAADoAAAAAAAAA//8AAAAAAAA6AAAAAAAAAP//AAAAAAAAOgAAAAAAAAD//wAAAAAAADoAAAAAAAAA//8AAAAAAAA6AAAAAAAAAP//AAAAAAAAOgAAAAAAAAD//wAAAAAAADoAAAAAAAAA//8AAAAAAAA6AAAAAAAAAP//AAAAAAAAOgAAAAAAAAD//wAAAAAAAD0AAAAAAAAA//8AAAAAAAA9AAAAAAAAAP//AAAAAAAAPQAAAAAAAAD//wAAAAAAAD0AAAAAAAAA//8AAAAAAAA9AAAAAAAAAP//AAAAAAAAPQAAAAAAAAD//wAAAAAAAD0AAAAAAAAA//8AAAAAAAA9AAAAAAAAAP//AAAAAAAAPQAAAAAAAAD//wAAAAAAAD0AAAAAAAAA//8AAAAAAAA9AAAAAAAAAP//AAAAAAAAPQAAAAAAAAD//wAAAAAAAD0AAAAAAAAA//8AAAAAAAA9AAAAAAAAAP//AAAAAAAAPQAAAAAAAAD//wAAAAAAAD0AAAAAAAAA//8AAAAAAAA9AAAAAAAAAP//AAAAAAAAPQAAAAAAAAD//wAAAAAAAD0AAAAAAAAA//8AAAAAAAA9AAAAAAAAAP//AAAAAAAAPQAAAAAAAAD//wAAAAAAAD0AAAAAAAAA//8AAAAAAAA9AAAAAAAAAP//AAAAAAAAPQAAAAAAAAD//wAAAAAAAD0AAAAAAAAA//8AAAAAAAA9AAAAAAAAAP//AAAAAAAAPQAAAAAAAAD//wAAAAAAAD0AAAAAAAAA//8AAAAAAAA9AAAAAAAAAP//AAAAAAAAPQAAAAAAAAD//wAAAAAAAD0AAAAAAAAA//8AAAAAAAA9AAAAAAAAAP//AAAAAAAAPQAAAAAAAAD//wAAAAAAAD0AAAAAAAAA//8AAAAAAAA6AAAAAAAAAP//AAAAAAAAOgAAAAAAAAD//wAAAAAAADoAAAAAAAAA//8AAAAAAAA6AAAAAAAAAP//AAAAAAAAOgAAAAAAAAD//wAAAAAAADoAAAAAAAAA//8AAAAAAAA6AAAAAAAAAP//AAAAAAAAOgAAAAAAAAD//wAAAAAAADoAAAAAAAAA//8AAAAAAAA6AAAAAAAAAP//AAAAAAAAOgAAAAAAAAD//wAAAAAAADoAAAAAAAAA//8AAAAAAAA9AAAAAAAAAP//AAAAAAAAPQAAAAAAAAD//wAAAAAAAD0AAAAAAAAA//8AAAAAAAA9AAAAAAAAAP//AAAAAAAAPQAAAAAAAAD//wAAAAAAAD0AAAAAAAAA//8AAAAAAAA9AAAAAAAAAP//AAAAAAAAPQAAAAAAAAD//wAAAAAAAD0AAAAAAAAA//8AAAAAAAA9AAAAAAAAAP//AAAAAAAAPQAAAAAAAAD//wAAAAAAAD0AAAAAAAAA//8AAAAAAAA="), @@ -337,7 +339,7 @@ _surfaces = [{ "index_count": 684, "index_data": PackedByteArray("AACuAAIAAABtAK4AbQABAK4AAwBtAAAAbQBuAAEAAwCvAG0ArwBuAG0ABACvAAMABACwAK8ArwBvAG4AsABvAK8AbwBwAG4AsAByAG8AbwBxAHAAcgBxAG8AcgCxAHEAsQCyAHEAsQCzALIAswC0ALIAswC1ALQAtQAFALQAtQAGAAUABwBzAAkABwC2AHMAtgC3AHMAtwC4AHMAtgAKALcAtwAIALgACgB0ALcACgB1AHQAtwC5AAgAtwB0ALkACAC5ALoACAC6AAwAuQALALoAuQB2AAsAdAB2ALkAdAANAHYADQC7AHYADQAOALsADgC8ALsADgAPALwADwAQALwADwARABAAdwC9AHgAdwC+AL0AGQC9AL4AGQC+ABoAeAC/AHcAeAB5AL8AFwB5AHgAeQDAAL8AFwDBAHkAeQDCAMAAwQDCAHkAwgDDAMAAwQAbAMIAwgDEAMMAGwDEAMIAGwDFAMQAxAAdAMMAxQB6AMQAxAB6AB0AxQDGAHoAxgAYAHoAGAAdAHoAxgAcABgAHQAYAB4AHQAeAB8AEgB7AMcAEgATAHsAFAASAMcAFAB8ABIAFQB8ABQAFgASAHwAFgB8AH0AFQB+AH0AfQDIABYAfgDIAH0AIAB/AIAAIACBAH8AgAAiAIIAgADJACIAfwDJAIAAfwDKAMkAygB/AIYAygCGAMsAygCDAMkAhQDKAMsAygCFAIMAhQDLAMwAhwCFAMwAhwDMACMAhQCHAIQAhQCEAIMAgwCEACQAgwAkACEAzQCJAIoAzQCIAIkAiwDOACUAiwDPAM4AzwDQAM4AzwDRANAA0QAnANAA0QAmACcAjAApAI0AjQApACsAjQArACoAjAAsACkAKAAsAIwAKAAtACwALgAvADAALgAxAC8AjgCPAJAANwCRAJIANwA4AJEAkgCRAJMANgA3AJIAkgCTAJQANgCSAJUAlQCSAJQAMgA2AJUAMgCVADQAlQCUADMANACVADMANAAzADUAMwCUAJYAMwCWANIAOQDSAJYAOQCXANIATACYAJkATABNAJgAmQCYANMAmQDTAJoAmgDTAJsAmwBOAE8AmwBPAJwAmgCbANQA1ACbAJwAmgDUAJ4AmgCeAJ8A1ACcANUAngDUANUA1QCcANYAngDVAFAA1QDWANcAUADVANcA1wDWANgAUADXANkA1wDYAJ0A2QDXAJ0AnQDYAFEAnQBRAFIA2QCdAKAAoACdAFIAoABSAFQAoADaANkAoABTANoA2wDcAKIA2wCiADwA2wA8AKMA2wChANwAOwDcAKEAogDcADsAOwChADoAogA7AN0APQCiAN0APgA/AEAAPgBBAD8AQQA+AN4AQQDeAKQApADeAN8AQwBBAKQApADfAOAAQwCkAOEA4QCkAOAAqABDAOEA4ADfAOIAqADhAEYARgDhAOMA4QDgAOMARgDjAEUA4ADiAOQA4wDgAOQA5ADiAKUA5AClAKYA4wDkAKcARQDjAKcApwDkAKYARQCnAOUApwCmAOYA5QCnAOYA5gCmAEIA5QDmAOcA5gBCAEQA5wDmAEQA5wBEAEcASABJAEoASABLAEkAVQDoAOkAVQBWAOgA6QDoAKkA6QCpAOoA6gCpAOsA6gDrAOwA7QDrAKkA7QCpAFcA7ADrAFgA7ABYAKoAqgBYAFkAqgBZAFoAWwCqAFoAXACqAFsAqgBcAKsArQDuAO8ArQBhAO4A7wDuAPAA7wDwAPEA8QDwAGIA8QBiAGAAXQBeAF8AXQCsAF4AYwBkAGUAZQBmAGcAZwBmAGgA8gBqAGsAbABqAPIAbADyAGkA"), "lods": [0.023033181, PackedByteArray("AAABAAIAAABtAAEAbQBuAAEAAwBtAAAAbwBuAG0AAwBvAG0AbwBwAG4ABABvAAMAbwBxAHAABAByAG8AcgBxAG8AcgAGAHEABgAFAHEABwBzAAkABwAKAHMACgB0AHMACgB1AHQAcwB0AHYAdAANAHYAcwB2AAgADQAOAHYACAB2AAwAdgALAAwADgAPAHYADwAQAHYADwARABAAdwAZAHgAGQB3ABoAeAB5AHcAFwB5AHgAFwAbAHkAeQAdAHcAGwB6AHkAeQB6AB0AGwAYAHoAGAAdAHoAGwAcABgAHQAYAB4AHQAeAB8AEgB7ABQAEgATAHsAFAB8ABIAFQB8ABQAFgASAHwAFgB8AH0AFQB+AH0AfgAWAH0AIAB/AIAAIACBAH8AgAAiAIIAgACDACIAfwCDAIAAgwAkACEAgwCEACQAfwCFAIMAhQCEAIMAhQB/AIYAhQCHAIQAhQCGACMAhwCFACMAiACJAIoAiwAnACUAiwAmACcAjAApAI0AjQApACsAjQArACoAjAAsACkAKAAsAIwAKAAtACwALgAvADAALgAxAC8AjgCPAJAANwCRAJIANwA4AJEAkgCRAJMANgA3AJIAkgCTAJQANgCSAJUAlQCSAJQAMgA2AJUAMgCVADQAlQCUADMANACVADMANAAzADUAMwCUAJYAOQAzAJYAOQCXADMATACYAJkATABNAJgAmQCYAJoAmgCYAJsAmwBOAE8AmwBPAJwAmgCbAJwAmgCcAJ0AnQCcAFEAmgCeAJ8AngCaAJ0AngCdAFAAnQBRAFIAUACdAKAAoACdAFIAoABTAFAAoABSAFQAoQA7AKIAPQCiADsAOwChADoAoQCiADwAoQA8AKMAPgA/AEAAPgBBAD8AQQA+AKQApAA+AKUAQwBBAKQApAClAKYApwCkAKYAQwCkAKcApwCmAEIApwBCAEQARgBDAKcAqABDAEYARgCnAEUARQCnAEQARQBEAEcASABJAEoASABLAEkAVQCpAKoAVQBWAKkAVwBYAKkAqgCpAFgAqgBYAFkAqgBZAFoAWwCqAFoAXACqAFsAqgBcAKsAXQBeAF8AXQCsAF4ArQBiAGAArQBhAGIAYwBkAGUAZQBmAGcAZwBmAGgAaQBqAGsAbABqAGkA"), 0.21250078, PackedByteArray("AAABAAIAAwABAAAAAwAEAAEABAAFAAEABAAGAAUABwAIAAkABwAKAAgACAAKAAsACAALAAwACgANAAsADQAOAAsADgAPAAsADwAQAAsADwARABAAEgATABQAFAAVABIAFgASABUAFwAYABkAGQAYABoAFwAbABgAGwAcABgAGAAdABoAHQAYAB4AHQAeAB8AIAAhACIAIAAjACEAIwAkACEAJQAmACcAKAApACoAKgApACsAKAAsACkAKAAtACwALgAvADAALgAxAC8AMgAzADQANAAzADUAMgA2ADMANgA3ADMAMwA3ADgAOQAzADgAOgA7ADwAPQA8ADsAPgA/AEAAPgBBAD8AQQA+AEIAQwBBAEIAQwBCAEQARQBDAEQARgBDAEUARQBEAEcASABJAEoASABLAEkATABNAE4ATABOAE8ATABPAFAAUABPAFEAUABRAFIAUwBQAFIAUwBSAFQAVQBWAFcAVQBXAFgAVQBYAFkAVQBZAFoAWwBVAFoAXABVAFsAXQBeAF8AYABhAGIAYwBkAGUAZQBmAGcAZwBmAGgAaQBqAGsAbABqAGkA")], -"material": ExtResource("26_r2jxp"), +"material": ExtResource("2_330gv"), "name": "mat_Molikman.001", "primitive": 3, "skin_data": PackedByteArray("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"), @@ -523,7 +525,7 @@ _surfaces = [{ "index_count": 3396, "index_data": PackedByteArray("AACgAQIAAAChAaABAgCgAQMAAgADAAUAAwCgAQEAAwABAAQABgCiAQgABgCjAaIBCACiAQcACAAHAAkACgALAAwACwAKAKMCCwCjAg0ADgCkARAADgAPAKQBEQClARMAEQCmAaUBpgGnAaUBpQGnARcApgEVAKcBFAAVAKYBFAAWABUApQEXAKgBFwAYAKgBqAEYABkAqAEZABIAGgCpARwAGgAdAKkBHQCrAakBHQAfAKsBqQGrARsAqQEbAKoBHwCkAqsBHwClAqQCpQKmAqQCpQKnAqYCpwIeAKYCpwIgAB4AIQCsASMAIgAjAKwBrAEhACQAJAAhAKgCIQAlAKgCIQCpAiUAqQIoACUAqQInACgAJgAjACIAIwCtASEArQEqACEArQEpACoAIwArAK0BJgAsACMAJgAtACwALACuASMALACvAa4BqgKvASwAqgKwAa8BsAEuAK8BsAEvAC4AqwIvALABqwKsAi8ArQKsAqsCrQKuAqwCsQGuAq0CsQGyAa4CrwKyAbEBrwKwArIBsQKwAq8CsQIwALACMQAyADMAMgCyAjMAsgI0ADMAsgI1ADQANQCzAjQANQA2ALMCOwC0AjkAOwC1ArQCtQI7AD0AtQK1AbQCtQI9ADwAtQKzAbUBswG1AjwAswG2ArUBswE8ALYBswG3ArYCtwKzAbYBtwK4ArYCtwK2AbkCtwK6ArgCugK3ArkCugK5ArsCugK0AbgCtwG6ArsCugK3AbQBtwG7AjcAtwG8ArQBNwC9ArcBtwG9ArwCNwC+Ar0CtAG8Ar8CvQK/ArwCvwK9Ar4CtAG/AjgAvwK+AsACOAC/AsACOADAAjoAxADBAr0BwQLGAL0BxADCAsECwQLDAsYAwgLEAsECxALDAsECwgLFAsQCxAK8AcMCxQK6AcQCugG8AcQCxQLGAroBugHHArwBxgLIAroByALHAroBxgK4AcgCyALJAscCuAHKAsgCygLJAsgCuAHLAsoCygK7AckCywK5AcoCuQG7AcoCywLMArkBuQHNArsBzALOArkBuQHPAs0CuQHOAs8CzQLPAtACzQLQAsUAzwLRAtACzALSAs4C0gLPAs4CzwLSAtECxwDSAswC0QLSAtMCxwDTAtICPgDUAkAAPgA/ANQCPwDVAtQC1QK/AdQCPwBBANUC1QLWAr8BQQDXAtUC1wLWAtUCQQDYAtcC1wLZAtYC2AK+AdcCvgHZAtcC2ALaAr4BvgHAAdkC2gLbAr4B2wLAAb4B2gLBAdsC2wLcAsABwQHCAdsCwgHcAtsCwQHdAsIBwgHeAtwC3QLDAcIBwgHfAt4CwgHDAd8C3gLfAuAC3gLgAkMA3wJEAOAC3QLhAsMB4QLfAsMB3wLhAkQAQgDhAt0CRADhAuICQgDiAuECRQDEAeMCRQBIAMQBxAHkAuMC4wLFAUcA4wLkAsUB5ALlAsUB5AJJAOUCxQHlAsgBxQHIAcoB5gJJAOQCxAHmAuQC5gLnAkkA5gLoAucCxAHpAuYC5gLpAugCxAHqAukC6QLrAugC6gLsAukC6QLsAusC6gLtAuwC7ALuAusC7QLvAuwC7ALvAu4C7QLwAu8C7wJKAO4C8ALGAe8C7wLGAUoA8ALHAcYBxgHxAkoAxwHyAsYBxgHyAvECxwHJAfICRgDJAccBRgDzAskB8wLyAskB8wLxAvIC8QLzAksA2QH0AmcA2QH1AvQCZwD0AvYCZwD2AmkA9AJoAPYC9QL3AvQC9AL3AmgA9QL4AvcC9wL5AmgA+ALaAfcC9wLaAfkC+AJqANoB2gH6AvkC2gH7AvoC+wL8AvoC+wL9AvwC/QL+AvwC/QLbAf4C2wHcAf4C2wFrANwB/wLLAN4B/wLdAcsAAAPdAf8CAAPJAN0BAQMAA/8CAgP/At4BAQP/AgIDAgPeAQMDBAMBAwIDBQMCAwMDBAMCAwUDyAAEAwUDBQMDAwYDyAAFA8oAygAFAwYDygAGA98BWwAHAwgDCQMIAwcDCQMHA+ABXQAJA+ABXQDgAQoDCwNdAAoDCwMKAwwDDQMLAwwDDQMMAw4DDwMNAw4DDwMOAxADXgAPAxADXgAQA+EBEQPgAQcDEQNcAOAB4gERAwcD4gFfABEDWwDiAQcDWwBgAOIBYABhAOIBWwASA2AAYAASA2IAYwATAxQDYwBmABMDEwNlABQDEwNkAGUAzAAVA88AzAAWAxUDzwAVAxcDzwAXA+UBFQMYAxcDFgMZAxUDFQMZAxgDFgMaAxkDGQMbAxgDGgMcAxkDGQMcAxsDGgMdAxwDHAMeAxsDHQMfAxwDHAMfAx4DHQMgAx8DHwPjAR4DIAPmAR8DHwPmAeMBIAPnAeYB5gEhA+MBIQPOAOMB5wEiA+YB5gEiAyED5wEjAyID5wHNACMDJAMhAyIDzgAhAyQDJAMiAyMDJAMjA80AzgAkA+QBzQDkASQDJQPrAewBJQMmA+sB6gEmAyUD6gHtASYDJwPtAeoBJwMoA+0BKQMoAycDKQMqAygD7gEqAykD7gHvASoDbADoASsDbgArA+gBbgDoAXAA6AFxAHAAbADpAegB6QFtAOgB6QFvAG0AcgDwAXQAcgDxAfAB8QFzAPAB8QHyAXMA8gF2AHMA8gF1AHYALAPyAfEBLAMtA/IB8wEtAywD8wH0AS0D9AF5AC0DLgP0AfMB9AH1AXkALgMvA/QBLwP1AfQBMAMvAy4DLwMxA/UBMAMyAy8DMgMxAy8DdwAyAzADMgMzAzEDdwB4ADIDeAAzAzIDeAB6ADMDNAP4AfYBNAP3AfgBewB8AH0AewB+AHwAfwCAAIEAfwA1A4AANQOCAIAANQODAIIANgM3AzgDNgM5AzcD+QE6AzsDOwM6A4cA+QE8AzoDOwOHAIQAhACHAIUAhACFAIYAPQM8A/kBPQP6ATwDPgP6AT0DPgM/A/oB+wE/Az4D+wFAAz8DQQNAA/sBQQOIAEADQgNDA0QDRAP/AYsARANDA/8BQwOMAP8BQwNFA4wAQgNGA0MDRgNFA0MD/gFGA0IDRgNHA0UD/gFIA0YDSANHA0YDSQNIA/4BSAMBAkcDSQNKA0gDSgMBAkgDSwNKA0kDSgNMAwECSwNNA0oDTQNMA0oDiQBNA0sDTQNOA0wDiQAAAk0DAAJOA00DAAKKAE4DjQBPA48AjQD8AU8D/AH9AU8D/AGOAP0BjgCQAP0BjgCRAJAAAgJQA1EDUQNQA1IDAgJTA1ADUQNSA1QDVANSA5MAVAOTAJQAVQNTAwICVQMDAlMDVgMDAlUDVgNXAwMCkgBXA1YDkgBYA1cDBQJZAwQCBQJaA1kDBAJZA1sDBAJbAwYC0wHNAdQB0wFRAM0BUgDUAdUBXAPVAdQBXAPUAc0BUwBcA80BUwDNAdABWQBTAFgAWABaAFkAWABTANYB1gFTANABWADWAVQA1gHXAVQA1gFXANcBVQBXANYBVQDYAVcAVQDWAV0D1gHQAV0D0gFWAFUA0gFVAF4DVQBdA14DXgNQANIBXQNfA14DXgNfA1AAXQPRAV8DUABfA9EBXQNgA9EBXQPQAWADUADRAWEDYANhA9EBUABhA88BYAPPAWEDUADPAWIDzwFPAGIDYwPPAWADzwFjA08AYwNgA84BTwBjA84B0AHOAWADTwDOAWQDZANlA08A0AFmA84BZgNkA84BzQFmA9ABZAPMAWUDZgPMAWQDzAFMAGUDzQFOAGYDTgDMAWYDzAHIAUwATgDIAcwBTgDKAcgBTgDLAcoBTQDKAcsBZwNoA2kDaQOWAJcAaQNoA5YAaANqA5YAaAMJAmoDCQKbAGoDCQKaAJsACAIJAmgDZwMIAmgDCAJrAwkCBwIIAmcDbANrAwgCBwJsAwgCbANtA2sDbgNsAwcCbwNtA2wDbgNvA2wDlQBvA24DbwMKAm0DlQCYAG8DmAAKAm8DmACZAAoCnABwA54AnACdAHADngBwA58AngCfAAsCoAAMAnEDoAByAwwCcQMMAg0CcQMNAqIADAKjAA0CDAKkAKMAcgOkAAwCcgOhAKQAcwMPAhACcwN0Aw8CdQN0A3MDdQN2A3QDDgJ2A3UDDgIRAnYDEgIRAg4CEgJ3AxECpQCmAKcApQB4A6YAqAB5A6oAqACpAHkDEwIUAhUCEwIWAhQCqwCsAK0AqwB6A6wAewO4AHwDewO7ALgAfAO4ALkAfQN7A3wDfAO5AH4DfQN8A38DfwN8A34DgAN9A38DfwN+A4EDgAN/A4IDggN/A4EDgwOAA4IDggOBA4QDhQOCA4QDgwOCA4UDhQOEA7UAhQO1ALYAgwOFA4YDhQO2AIYDgwOGA7oAhgO2ALcAhgO3ALQAhwOwABcChwOvALAArgCvAIcDrgCIA68AsQCJA7MAsQCyAIkDvACKA74AvADAAIoDiwO+AIoDiwOKA70AvQC/AIsDjAMdAh4CjAONAx0CjgONA4wDjgOPA40DkAOPA44DkAORA48DGwKRA5ADGwIcApEDkgOTA5QDwQDCAMMAGAIZAhoC0AAfAiAC0ADRAB8C0QDTAB8C0QDVANMA0wDSAB8C0wDUANIA1gAhAiIC1gDXACEC1wDYACEC1wDZANgA2gDbANwA2wDaAN0A2wDdAJUD3gAjAuAA3gDfACMC4QAkAiUC4QDkACQCJQIkAiYCJALnACYCJQImAuUA4wAlAuUA4wDlAOYAJAInAucA5wAnAugAJwLpAOgAJwLiAOkA6gAoAuwA6gDtACgC7AAoAikC7AApAu4AKALrACkCKAIqAusA7gApApYD7gCWA5cDlwOWA5gDlwOYA5kDmQOYA+8AmQPvAPAA8QDyACsC8wArAvIAKwL0APEA9ACaA/EA8QCaA/UA8QD1AJsDmwP1APgAmwP4APcA9gDzAPIA8gDxACwCLALxAPoALAL6APkA8gAsAvsA9gDyAPwA9gD8AP0A/ADyAC0C/AAtAi4CnAP8AC4CnAMuAi8CLwIuAv4ALwL+AP8AnQMvAv8AnQP/AJ4DnwOdA54DnwOeA6ADMAKfA6ADMAKgAzECoQMwAjECoQMxAqIDowOhA6IDowOiAwABAQECAQMBAwECAaQDpAMCAQQBpAMEAQUBBQEEAaUDBQGlAwYBCwGmA6cDCwEIAaYDpwMNAQsBpwOmAzYCpwMMAQ0BpwM2AjICMgIMAacDMgI2AqgDMgI1AgwBMgKoA6kDqQM1AjICqQOoA6oDqQOrAzUCqQOqA6wDrAOrA6kDrAOtA6sDrAOqAzMCNAKtA6wDrAMzAjQCNAIHAa0DNAIzAq4DBwE0Aq8DNAKuA68DBwGvA7ADrwOxA7ADsgOvA64DMwKyA64DrwOyA7EDMwIJAbIDCQGxA7IDCQEKAbEDnAGzA7QDnAE9ArMDswM9Ap8BswOfAbUDtAOzA7YDtgOzA7UDtAO2A7cDtgO1AzwCtwO2AzsCOwK2AzwCtwM7ArgDOwI8ArkDuAM7AroDugM7ArkDuAO6AzcCugO5A7sDNwK6A7wDvAO6A7sDNwK8A70DvAO7AzoCvQO8AzgCOAK8AzoCvQM4AjkCOAI6Ar4DOQI4Ar8DOAK+A8ADOALAA78DvgPBA8ADvgOdAcEDwgPAA8EDOQK/A8MDwAPDA78DwwPAA8IDngE5AsMDwwPCA8QDngHDA8QDDgHFAxABDgEPAcUDEAHFA8YDxgPFAz8CEAHGAxEBxgM/AscDEQHGAz4CPgLGA8cDEQE+AsgDPgLHA8kDyAM+AsoDygM+AskDyAPKA8sDygPJA0ACywPKA8wDzAPKA0ACywPMA0ECzANAAs0DQQLMA0ICQgLMA80DQQJCAkMCQgLNA84DQwJCAkQCQgLOA88DQgLPA0QCzgPQA88DzgMTAdADFAHPA9ADQwJEAtEDzwPRA0QC0QPPAxQBEgFDAtED0QMUAdIDEgHRA9IDFQFFAhcBFQHTA0UCRQLTA9QD0wMYAUYC0wNGAtQD1ANGAtUD1APVAxsBRgJJAtUDRgJLAkkC1gPUAxsBRQLUA9YD1gMbAdcD1gPXA9gDRQLWA9kD1gPYA9kDRQLZA9oD2QPYA9sD2gPZA9wD2QPbA9wD2gPcA90D3APbA94D3QPcA98D3APeA98D3QPfA+AD3wPeAxkB4APfA0cC3wMZAUcC4ANHAkgCRwIZAeEDSAJHAuIDRwLhA+IDSALiA0oC4QNKAuIDFgFIAkoCFgFKAuMD4QPjA0oC4wPhAxoBWgLkA+UDWgI7AeQDOwHmA+QDOwE8AeYD5APmAz0B5QPkA+cD5AM9AecD5QPnA+gD5wM9AekD6APnA1sC5wPpA1sC6ANbAj4BWwLpA+oDWwLqA+sD6wPqA+wD6wPsA+0D7QPsA+4D7QPuA1wCXALuA10CXAJdAj8BXgIsAe8DXgJfAiwB8ANeAu8D8APvAy0B8QNeAvAD8gNfAl4C8QPyA14C8gPzA18C9APyA/ED9QPzA/ID9AP1A/IDLgH1A/QD9QP2A/MDLgErAfUDKwH2A/UDKwFgAvYDLwH3A2ICLwFiAjQBNAFiAjUBLwE0AfgDNAE2AfgDLwH5A/cD+gP3A/kDYgL3A/sDYgL7AzEB+gNhAvcD+wP3A2EC+wNhAjABMgFhAvoDMgH8A2EC/QP8AzIB/QP+A/wD/wP+A/0D/wMABP4DAQQABP8DAQQCBAAEMwECBAEEMwFjAgIENwEDBDkBNwEEBAMEAwQEBDoBAwQ6ATgBQwFkAgUEQwFAAWQCQAEGBGQCQAFlAgYEZAIGBAcEBQRkAggEZAIHBAgEBQQIBAkECAQHBAoECQQIBAsECAQKBAsECQQLBAwECwQKBA0EDAQLBA4ECwQNBA4EDAQOBA8EDgQNBGcCDwQOBGgCDgRnAmgCDwRoAmYCaAJnAhAEEARnAkEBZgJoAhEEaAIQBBEEZgIRBBIEZgISBEIBEwQRBBAEQQETBBAEEwQSBBEEEwRCARIEQQEUBBMEQgETBBQEFQRsAhYEFQRuAmwCawIVBBYEawIWBG0CFwRrAm0CFwRtAhgEGQQXBBgEGQQYBBoEcAIZBBoEcAIaBG8CRAFpAmoCRAEbBGkCRwFpAhsERwFIAWkCaQJIAUkBagJpAkUBagJFAUYBSgFxAnICSgFLAXECcgJxAkwBcgJMAXMCcwJMAU4BcwJOAU8BHARyAnMCHARzAh0EdAIcBB0EdAIdBHUCdQIdBE0BHgR0AnUCdQJNAXYCHgR1Ah8EHwR1AnYCIAQeBB8EHwR2AiEEIAQfBCIEIgQfBCEEUgEgBCIEIgQhBCMEUgEiBFABUAEiBCMEUAEjBFEBJAR4AnkCJAR3AngCUwFUAVUBUwFWAVQBVwFZASUEVwFYAVkBJQRZAVoBJQRaAVsBJgQnBCgEJgQpBCcEegIqBCsEegIsBCoELQR6AisELAReASoELQQrBHsCLARcAV4BXAFdAV4BXAFfAV0BLgQtBHsCLgR7Ai8EfAIuBC8EfAIvBDAEMQR8AjAEMQQwBGABMgQzBDQEMgQ1BDMEfQIyBDQENQR+AjMENQRpAX4CMwR+AmcBMwRnATYENAQzBDYENAQ2BDcEfQI0BH8CfwI0BDcEOAR9An8CfwI3BIACOAR/AjkEOQR/AoACOgQ4BDkEOQSAAjsEOgQ5BDwEPAQ5BDsEZgE6BDwEPAQ7BD0EZgE8BIECgQI8BD0EgQI9BGgBYQE+BIICYQFiAT4EggI+BIMCggKDAmMBYwGDAmQBYwFkAWUBhAI/BEAEhAJBBD8EQgSEAkAEQQRDBD8EQgRABIUCQQREBEMERARsAUMERARrAWwBRQRCBIUCRQSFAkYEagFFBEYEagFGBIYCiQJHBEgEiQKHAkcEhwJJBEcEhwKIAkkEVAJOAiEBVAJVAk4CIgFWAlUCSgRVAlYCSgROAlUCIwFOAkoEIwFRAk4CKQEoASMBKAEpASoBKAFXAiMBVwJRAiMBKAEkAVcCVwIkAVkCVwJZAicBJQFXAicBJQEnAVgCJQFLBFcCVwJLBFECUwIlASYBUwJMBCUBJQFMBEsETARTAiABSwRMBE0ETAQgAU0ESwRNBFICIAFSAk0ESwRSAk4ESwROBFECIAFPBFICTgRSAk8EIAFQAk8ETgRPBFACIAFQBFACUAJQBB8BUQROBFACUAIfAVEEUQRPAk4EHwFPAlEEUQJOBE8CHwFSBE8CUgQfAVMEUQJPAlQEVARPAlIETgJRAlQEUgRTBE0CVARSBE0CTQJTBBwBTgJUBB4BHgFUBE0CTQIcAUkCHgFNAkkCHgFJAksCHgFLAkwCHQFMAksCVQRWBIsCVQRXBFYEigJVBIsCVwRvAVYEVwRuAW8BVgRvAVgEVgRYBIwCiwJWBIwCjAJYBHMBjAJzAXIBiwKMAlkEigKLAloEWgSLAlkEWwSKAloEWgRZBFwEWwRaBF0EXQRaBFwEbQFbBF0EXQRcBI0CbQFdBHABcAFdBI0CcAGNAnEBdAFeBHYBdAF1AV4EdQF3AV4EdQGOAncBeAGPAl8EeAFgBI8CXwSPAnwBXwR8AXoBjwJ7AXwBjwKQAnsBYASQAo8CYAR5AZACYQSSAmIEYQSUApICYwRhBGIEYwRiBGQEkQJjBGQEkQJkBJMClQKRApMClQKTApYCfQF/AWUEfQF+AX8BgAFmBIIBgAGBAWYElwKYApkClwKaApgCgwGFAWcEgwGEAYUBaASQAZMBaARpBJABaQSRAZABagRpBGgEaQRrBJEBagRsBGkEbARrBGkEbQRsBGoEbARuBGsEbQRvBGwEbwRuBGwEcARvBG0EbwRxBG4EcgRxBG8EcARyBG8EcgSOAXEEcgSNAY4BcARzBHIEcgRzBI0BcASSAXMEcwSPAY0BcwSMAY8BdASHAYgBdASbAocBhgF0BIgBhgGIAXUEiQF2BIsBiQGKAXYElAF3BJYBlAGXAXcEeAR3BJcBeASVAXcElQF4BJgBeQSgAnoEeQSiAqACewR5BHoEewR6BHwEfQR7BHwEfQR8BH4EnwJ9BH4EnwJ+BKECfwSABIEEmQGaAZsBnAKdAp4C"), "lods": [0.013393437, PackedByteArray("AACgAQIAAAChAaABAgCgAQMAAgADAAUAAwCgAQEAAwABAAQABgCiAQgABgCjAaIBCACiAQcACAAHAAkACgALAAwACwAKAA0ADgCkARAADgAPAKQBEQClARMAEQCmAaUBpgGnAaUBpQGnARcApgEVAKcBFAAVAKYBFAAWABUApQEXAKgBFwAYAKgBqAEYABkAqAEZABIAGgCpARwAGgAdAKkBqQEbAKoBqQGrARsAHQCrAakBHQAfAKsBHwAgAKsBIAAeAKsBIQCsASMArAEhACQAIgAjAKwBIQAlACQAIQAnACUAJwAoACUAJgAjACIAIwCtASEArQEqACEArQEpACoAIwArAK0BJgAsACMAJgAtACwALACuASMALACvAa4BLACwAa8BsAEuAK8BsAEvAC4AsQEvALABsQGyAS8AMACyAbEBMQAyADMAMgA0ADMAMgA1ADQANQA2ADQAswG0AbUBOwC1ATkAOwCzAbUBswE7ADwAOwA9ADwAswE8ALYBswG3AbQBtwGzAbYBtwE4ALQBtwG2ATcAOAC3ATcAOAA3ADoAuAG5AboBuAHHALkBxwDFALkBuQHFALsBuQG7AboBxAC4AboBugG7AbwBxAC6Ab0BugG8Ab0BvQG8AcYAPgA/AEAAPwC+AUAAvgG/AUAAPwBBAL4BvgHAAb8BQQDBAb4BwgHAAb4BwQHCAb4BwgFDAMABwQFCAMIBwgHDAUMAQgDDAcIBwwFEAEMARADDAUIARQDEAUcARQBIAMQBxAHFAUcAxAHGAcUBxAHHAcYBxQHGAUoAxQFKAEkAxQFJAMgBxgHJAUoAxwHJAcYBSwBKAMkBRgDJAccBRgBLAMkBxQHIAcoBTQDKAcsBTgDLAcoBTgDKAcgBTgDIAcwBzAHIAUwAzQFOAMwBzgHMAUwAzgFMAE8ATwDPAc4BUADPAU8A0AHMAc4BzQHMAdABzgHPAdEBUADRAc8B0QHQAc4BVQDRAVAAVQBQANIB0gFWAFUA0wFRAM0B0wHNAdQBUgDUAdUBUwDVAdQBUwDUAc0BUwDNAdAB1gHQAdEB1gFTANABVQDWAdEBWABTANYBWQBTAFgAWABaAFkAWADWAVQA1gHXAVQA1gFXANcBVQBXANYBVQDYAVcA2QHaAWcA2QFqANoBZwDaAWgAZwBoAGkA2gHbAWgA2wHcAWgA2wFrANwB3QHLAN4BygDdAd4BygDeAd8ByQDdAcoAyADJAMoAWwDgAV0AXgBdAOABXgDgAeEBWwDiAeAB4gFcAOAB4gFfAFwAWwBgAOIBYABhAOIBYABbAGIAYwBkAGUAYwBmAGQAzgDjAeQBzwDjAeUBzwDmAeMB5AHjAeYBzADmAc8AzADnAeYB5AHmAecB5AHnAc0AbADoAW4AbgDoAXAA6AFxAHAAbADpAegB6QFtAOgB6QFvAG0A6gHrAewB6gHtAesB7gHtAeoB7gHvAe0BcgDwAXQAcgDxAfAB8QFzAPAB8QHyAXMA8gF2AHMA8gF1AHYA8wHyAfEB8wH0AfIB9AF5APIBdwD0AfMB9AH1AXkAdwB4APQBeAD1AfQBeAB6APUB9gH3AfgBewB8AH0AewB+AHwAfwCAAIEAfwCCAIAAfwCDAIIA+QGHAIQAhACHAIUAhACFAIYA+QH6AYcA+wH6AfkBiAD6AfsBjQD8AY8A/AH9AY8A/AGOAP0BjgCQAP0BjgCRAJAA/gH/AYsA/gEAAv8BiQAAAv4BAAKMAP8BAAIBAowAAAKKAAECAgKTAJQAAgIDApMAkgADAgICBAIFAgYCBwKWAJcABwIIApYAlQAIAgcClQCYAAgCCAIJApYAlgAJApsACQKaAJsACAIKAgkCmAAKAggCmACZAAoCnACdAJ4AngCdAJ8AngCfAAsCoAChAAwCoQCkAAwCDAKkAKMADAKjAA0CoAAMAg0CoAANAqIADgIPAhACDgIRAg8CEgIRAg4CpQCmAKcAqACpAKoAEwIUAhUCEwIWAhQCqwCsAK0ArgCwABcCrgCvALAAsQCyALMAtAC1ALYAtAC2ALcAtAC4ALUAuAC5ALUAugC4ALQAugC7ALgAvAC9AL4AvQC/AL4AvADAAL0AwQDCAMMAGAIZAhoCGwIcAh0CGwIdAh4C0AAfAiAC0ADRAB8C0QDTAB8C0QDVANMA0wDSAB8C0wDUANIA1gAhAiIC1gDXACEC1wDYACEC1wDZANgA2gDbANwA2wDaAN0A3gAjAuAA3gDfACMC4QAkAiUC4QDkACQCJQIkAiYCJALnACYCJQImAuUA4wAlAuUA4wDlAOYAJAInAucA5wAnAugAJwLpAOgAJwLiAOkA6gAoAuwA6gDtACgC7AAoAikC7AApAu4AKALrACkCKAIqAusA7gApAu8A7gDvAPAA8QDyACsCKwL0APEA8wArAvIA8QD0APUA8QD1APcA9wD1APgA9gDzAPIA8gDxACwCLALxAPoALAL6APkA8gAsAvsA9gDyAPwA9gD8AP0A/ADyAC0C/AAtAi4C/AAuAi8CLwIuAv4ALwL+AP8AMAIvAv8AMAL/ADECAAEwAjECAQECAQMBAwECAQQBAwEEAQUBBQEEAQYBMgIzAjQCCQE0AjMCNAIJAQoBNAIKAQcBNAIHATUCNAI1AjICMgI2AjMCMgI1AgwBCwE2AjICMgIMAQsBCwEIATYCCwEMAQ0BNwI4AjkCOQI4Ap4BnQGeATgCOAI6Ap0BNwI7AjgCOAI7AjoCnAE7AjcCOwI8AjoCnAE9AjsCOwI9AjwCPQKfATwCDgEPARABEAEPAT4CPgIPAT8CEAE+AhEBPgI/AkACEQE+AkECQgI+AkACQQI+AkICQgJAAhMBQQJCAkMCQgITAUQCQwJCAkQCFAFEAhMBEgFDAkQCEgFEAhQBFQFFAhcBFQEYAUUCRQIYAUYCRQJGAkcCRQJHAkgCRgIZAUcCRgIbARkBRgJJAhsBRwIZAUoCSAJHAkoCGQEaAUoCFgFIAkoCFgFKAhoBRgJLAkkCHQFMAksCHgFLAkwCHgFJAksCHgFNAkkCTQIcAUkCTgJNAh4BTwIcAU0CTwIfARwBHwFPAlACUAIgAR8BUQJPAk0CTgJRAk0CTwJSAlACIAFQAlICUgJPAlECJQEgAVICJQFTAiABUwIlASYBVAJOAiEBVAJVAk4CIgFWAlUCIwFVAlYCIwFOAlUCIwFRAk4CVwJSAlECVwJRAiMBJQFSAlcCJQEnAVgCJQFXAicBVwJZAicBVwIkAVkCKAEkAVcCKAFXAiMBKQEoASMBKAEpASoBWgJbAj4BWgI7AVsCOwE9AVsCOwE8AT0BWwI9AVwCXAI9AV0CXAJdAj8BXgIsAS0BLgFeAi0BXgJfAiwBLgErAV4CKwFfAl4CKwFgAl8CLwFhAmICLwEyAWECMwFhAjIBMwFjAmECYgJhAjABYgIwATEBLwFiAjQBNAFiAjUBNAE2AS8BNwE4ATkBNwE6ATgBQwFAAWQCQAFlAmQCQwFkAmYCZAJlAmcCZgJkAmgCZAJnAmgCZgJoAkIBQgFoAmcCQQFCAWcCRAFpAmoCRAFHAWkCRwFIAWkCaQJIAUkBagJpAkUBagJFAUYBawJsAm0CawJuAmwCawJtAm8CcAJrAm8CSgFxAnICSgFLAXECcgJxAkwBcgJMAXMCcwJMAU4BcwJOAU8BdAJyAnMCdAJzAnUCdQJzAk0BUgF0AnUCdQJNAXYCUgF1AlABUAF1AnYCUAF2AlEBdwJ4AnkCUwFUAVUBUwFWAVQBVwFYAVkBVwFZAVoBVwFaAVsBegJeAXsCfAJ6AnsCYAF8AnsCegJcAV4BXAFdAV4BXAFfAV0BfQJpAX4CfQJ+An8CfwJ+AmcBZgF9An8CfwJnAYACZgF/AoECgQJ/AoACgQKAAmgBYQFiAYICggJiAYMCggKDAmMBYwGDAmQBYwFkAWUBhAJsAYUChAJrAWwBagGEAoUCagGFAoYChwKIAokCigJvAYsCigJuAW8BbQGKAosCbQGLAnABiwJvAYwCbwFzAYwCjAJzAXIBiwKMAo0CcAGLAo0CcAGNAnEBdAF1AXYBdQF3AXYBdQGOAncBeAGPAnoBegGPAnwBjwJ7AXwBjwKQAnsBeAGQAo8CeAF5AZACkQKSApMCkQKUApIClQKRApMClQKTApYCfQF+AX8BgAGBAYIBlwKYApkClwKaApgCgwGEAYUBhgGHAYgBhgGbAocBiQGKAYsBjAGNAY4BjAGPAY0BjAGOAZABkAGOAZEBkgGMAZABkgGQAZMBlAGVAZYBlAGXAZUBlQGXAZgBmQGaAZsBnAKdAp4CnwKgAqECnwKiAqAC"), 0.20140459, PackedByteArray("AAABAAIAAgABAAMAAwABAAQAAgADAAUABgAHAAgACAAHAAkACgALAAwACwAKAA0ADgAPABAAEQASABMAEQAUABIAFAAVABIAFAAWABUAEgAVABcAFwAYABIAEgAYABkAGgAbABwAGgAdABsAHQAeABsAHQAfAB4AHwAgAB4AIQAiACMAIgAhACQAIQAlACQAJgAjACIAIQAnACUAJwAoACUAIwApACEAKQAqACEAIwArACkAJgAsACMAJgAtACwALAAuACMALAAvAC4AMAAvACwAMQAyADMAMgA0ADMAMgA1ADQANQA2ADQANwA4ADkAOAA3ADoAOwA3ADkANwA7ADwAOwA9ADwAPgA/AEAAPwBBAEAAQQBCAEAAQgBDAEAAQgBEAEMARQBGAEcARQBIAEYARgBJAEcARgBKAEkASwBKAEYARwBJAEwARwBMAE0ATgBNAEwATgBMAE8ATgBPAFAAUQBOAFIAUwBSAE4AVABOAFAAVABTAE4AVABQAFUAUABWAFUAVQBXAFQAWABTAFQAWQBTAFgAWABaAFkAWwBcAF0AXgBdAFwAWwBfAFwAWwBgAF8AYABhAF8AYABbAGIAYwBkAGUAYwBmAGQAZwBoAGkAZwBqAGgAagBrAGgAbABtAG4AbABvAG0AbgBtAHAAbQBxAHAAcgBzAHQAcgB1AHMAdQB2AHMAdwB1AHIAdwB4AHUAeAB5AHUAeAB6AHkAewB8AH0AewB+AHwAfwCAAIEAfwCCAIAAfwCDAIIAhACFAIYAhACHAIUAhACIAIcAiQCKAIsAigCMAIsAjQCOAI8AjgCQAI8AjgCRAJAAkgCTAJQAlQCWAJcAlQCYAJYAmACZAJYAlgCZAJoAlgCaAJsAnACdAJ4AngCdAJ8AoAChAKIAoQCjAKIAoQCkAKMApQCmAKcAqACpAKoAqwCsAK0ArgCvALAAsQCyALMAtAC1ALYAtAC2ALcAtAC4ALUAuAC5ALUAugC4ALQAugC7ALgAvAC9AL4AvQC/AL4AvADAAL0AwQDCAMMAxADFAMYAxADHAMUAyADJAMoAygDJAMsAzADNAM4AzADOAM8A0ADRANIA0QDTANIA0wDUANIA0QDVANMA1gDXANgA1wDZANgA2gDbANwA2wDaAN0A3gDfAOAA4QDiAOMA4QDkAOIA4wDiAOUA4wDlAOYA4gDnAOUA5wDiAOgA4gDpAOgA6gDrAOwA6gDtAOsA7ADrAO4A7gDrAO8A7gDvAPAA8QDyAPMA8wD0APEA8QD0APUA9gDzAPIA8QD1APcA9wD1APgA8gDxAPkA+QDxAPoA8gD5APsA9gDyAPwA9gD8AP0A/ADyAP4A/AD+AP8AAAH8AP8AAQECAQMBAwECAQQBAwEEAQUBBQEEAQYBBwEIAQkBBwEJAQoBCwEIAQcBBwEMAQsBCwEMAQ0BDgEPARABEAEPAREBEQEPARIBEgEPARMBFAESARMBFQEWARcBFQEYARYBGQEaARYBFgEbARkBFgEYARsBGAEcARsBGAEdARwBHgEcAR0BHgEfARwBHgEgAR8BIQEiAR4BIwEeASIBJAEgAR4BJAEeASMBJAElASABIAElASYBJQEkAScBKAEkASMBKQEoASMBKAEpASoBKwEsAS0BLgErAS0BLwEwATEBLwEyATABMwEwATIBLwExATQBNAExATUBNAE2AS8BNwE4ATkBNwE6ATgBOwE8AT0BOwE9AT4BPgE9AT8BQAFBAUIBQwFAAUIBRAFFAUYBRAFHAUUBRwFIAUUBRQFIAUkBSgFLAUwBSgFMAU0BTQFMAU4BTQFOAU8BSgFNAVABUAFNAVEBUgFKAVABUwFUAVUBUwFWAVQBVwFYAVkBVwFZAVoBVwFaAVsBXAFdAV4BXAFfAV0BYAFcAV4BYQFiAWMBYwFiAWQBYwFkAWUBZgFnAWgBZgFpAWcBagFrAWwBbQFuAW8BbQFvAXABcAFvAXEBbwFyAXEBbwFzAXIBdAF1AXYBdQF3AXYBeAF5AXoBegF5AXsBegF7AXwBfQF+AX8BgAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjAGPAY0BjAGOAZABkAGOAZEBkgGMAZABkgGQAZMBlAGVAZYBlAGXAZUBlQGXAZgBmQGaAZsBnAGdAZ4BnAGfAZ0B")], -"material": ExtResource("26_r2jxp"), +"material": ExtResource("2_330gv"), "name": "mat_Molikman.001", "primitive": 3, "skin_data": PackedByteArray("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"), @@ -536,7 +538,7 @@ blend_shape_mode = 0 [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_affb7"] resource_name = "mat_knife" cull_mode = 2 -albedo_texture = ExtResource("5_4whvg") +albedo_texture = ExtResource("5_5684k") roughness = 0.5 texture_filter = 2 @@ -577,11 +579,11 @@ shadow_mesh = SubResource("ArrayMesh_o1ebt") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1pjos"] resource_name = "mat_starting_pistol" cull_mode = 2 -albedo_texture = ExtResource("5_j3w78") +albedo_texture = ExtResource("6_8sbfk") metallic = 0.33636364 -metallic_texture = ExtResource("6_gifnh") +metallic_texture = ExtResource("7_mfvjl") metallic_texture_channel = 2 -roughness_texture = ExtResource("6_gifnh") +roughness_texture = ExtResource("7_mfvjl") roughness_texture_channel = 1 [sub_resource type="ArrayMesh" id="ArrayMesh_76tv6"] @@ -620,7 +622,7 @@ bind/2/pose = Transform3D(1, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0.6970973, 0) [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_wwxu2"] resource_name = "mat_bomb" cull_mode = 2 -albedo_texture = ExtResource("7_pa2rf") +albedo_texture = ExtResource("8_vfta6") texture_filter = 2 [sub_resource type="ArrayMesh" id="ArrayMesh_x171q"] @@ -7385,7 +7387,7 @@ tracks/67/keys = PackedFloat32Array(0, 1, 0.45787776, -0.35138458, -0.16085118, _data = { &"baked_bomb_idle": SubResource("Animation_peay4"), &"baked_bomb_intro": SubResource("Animation_1d87n"), -&"baked_bomb_plant": ExtResource("9_b2eak"), +&"baked_bomb_plant": ExtResource("9_jkjl5"), &"baked_knife_attack": SubResource("Animation_a0l8m"), &"baked_knife_heavy_attack": SubResource("Animation_0aib1"), &"baked_knife_idle": SubResource("Animation_rmtut"), @@ -7626,7 +7628,7 @@ properties/1/replication_mode = 1 [node name="Player" type="CharacterBody3D" node_paths=PackedStringArray("weapon_models")] collision_layer = 2 collision_mask = 3 -script = ExtResource("1_g2els") +script = ExtResource("1_l07l8") weapon_models = { &"bomb": NodePath("Camera3D/molikman_hands/Armature"), &"knife": NodePath("Camera3D/molikman_hands/Knife"), @@ -8094,7 +8096,7 @@ skeleton = NodePath("") [node name="Coat" type="MeshInstance3D" parent="molikman_ingame/Armature/Skeleton3D"] mesh = SubResource("ArrayMesh_iq7uw") skin = SubResource("Skin_53wat") -surface_material_override/0 = ExtResource("26_r2jxp") +surface_material_override/0 = ExtResource("2_330gv") [node name="Molikman" type="MeshInstance3D" parent="molikman_ingame/Armature/Skeleton3D"] mesh = SubResource("ArrayMesh_m4rry") @@ -8103,10 +8105,10 @@ skin = SubResource("Skin_53wat") [node name="Trousers" type="MeshInstance3D" parent="molikman_ingame/Armature/Skeleton3D"] mesh = SubResource("ArrayMesh_aj0lc") skin = SubResource("Skin_53wat") -surface_material_override/0 = ExtResource("26_r2jxp") +surface_material_override/0 = ExtResource("2_330gv") [node name="PlayerBasedVisibility" type="Node" parent="molikman_ingame" node_paths=PackedStringArray("reference_player")] -script = ExtResource("4_smehm") +script = ExtResource("3_og1ui") visible_for_others = true reference_player = NodePath("../..") metadata/_custom_type_script = "uid://dd5mp72dq43v6" @@ -8119,7 +8121,7 @@ shape = SubResource("CapsuleShape3D_u8vuu") transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 0, 2, 0) cull_mask = 1048573 fov = 90.0 -script = ExtResource("3_qhqgy") +script = ExtResource("4_x16f1") compensation_time = 0.1 compensation_delay = 0.2 @@ -8511,7 +8513,7 @@ bones/53/scale = Vector3(1, 1, 1) [node name="Coat" type="MeshInstance3D" parent="Camera3D/molikman_hands/Hands/Skeleton3D"] mesh = SubResource("ArrayMesh_xd1kh") skin = SubResource("Skin_7i6yw") -surface_material_override/0 = ExtResource("26_r2jxp") +surface_material_override/0 = ExtResource("2_330gv") [node name="Molikman" type="MeshInstance3D" parent="Camera3D/molikman_hands/Hands/Skeleton3D"] mesh = SubResource("ArrayMesh_k2oqm") @@ -8594,13 +8596,13 @@ libraries = { } [node name="PlayerBasedVisibility" type="Node" parent="Camera3D/molikman_hands" node_paths=PackedStringArray("reference_player")] -script = ExtResource("4_smehm") +script = ExtResource("3_og1ui") reference_player = NodePath("../../..") metadata/_custom_type_script = "uid://dd5mp72dq43v6" [node name="DeadSpectator" type="Camera3D" parent="Camera3D"] fov = 90.0 -script = ExtResource("8_rwwcc") +script = ExtResource("10_nar88") [node name="CameraSync" type="MultiplayerSynchronizer" parent="Camera3D"] replication_config = SubResource("SceneReplicationConfig_b2eak") @@ -8634,14 +8636,14 @@ layout_mode = 2 [node name="Properties" type="VBoxContainer" parent="HUD/PanelContainer/VBoxContainer2"] layout_mode = 2 -script = ExtResource("7_oprun") +script = ExtResource("11_o7yy1") property_array = Dictionary[NodePath, StringName]({ NodePath("../../../../WeaponSystem"): &"current_state" }) [node name="InventoryPreview" type="Label" parent="HUD/PanelContainer/VBoxContainer2" node_paths=PackedStringArray("inventory")] layout_mode = 2 -script = ExtResource("9_ownlk") +script = ExtResource("12_lmgvl") inventory = NodePath("../../../../WeaponSystem") [node name="Crosshair" type="Control" parent="HUD"] @@ -8658,13 +8660,13 @@ offset_bottom = 20.0 grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 -script = ExtResource("3_dqkch") +script = ExtResource("13_a8vk2") crosses_width = 2.0 crosses_length = 6.0 crosses_offset = 3.0 [node name="VisibleDisabler" type="Node" parent="HUD" node_paths=PackedStringArray("reference_player")] -script = ExtResource("4_smehm") +script = ExtResource("3_og1ui") reference_player = NodePath("../..") [node name="Healthbar" type="ProgressBar" parent="HUD"] @@ -8680,7 +8682,7 @@ mouse_filter = 2 step = 1.0 value = 100.0 fill_mode = 3 -script = ExtResource("11_42l2h") +script = ExtResource("14_dy7an") [node name="AmmoDisplay" type="Label" parent="HUD"] layout_mode = 1 @@ -8694,66 +8696,66 @@ offset_top = 0.039978027 grow_horizontal = 0 grow_vertical = 0 label_settings = SubResource("LabelSettings_x73hv") -script = ExtResource("12_iortg") +script = ExtResource("15_8nx10") [node name="PlayerPropertiesSync" type="MultiplayerSynchronizer" parent="."] replication_config = SubResource("SceneReplicationConfig_qhqgy") [node name="StepAudio" type="AudioStreamPlayer3D" parent="."] -stream = ExtResource("16_fbysy") +stream = ExtResource("16_0i367") attenuation_model = 1 volume_db = -30.0 max_distance = 50.0 max_polyphony = 10 bus = &"GameplayMain" -script = ExtResource("17_0cqlf") +script = ExtResource("17_rgc8v") metadata/_custom_type_script = "uid://da0xv360va3b3" [node name="LandAudio" type="AudioStreamPlayer3D" parent="."] -stream = ExtResource("18_0cqlf") +stream = ExtResource("18_cp35a") attenuation_model = 1 volume_db = -30.0 max_distance = 75.0 max_polyphony = 10 bus = &"GameplayMain" -script = ExtResource("17_0cqlf") +script = ExtResource("17_rgc8v") metadata/_custom_type_script = "uid://da0xv360va3b3" [node name="PlantAudio" type="AudioStreamPlayer3D" parent="."] -stream = ExtResource("19_nquoi") +stream = ExtResource("19_vndcj") attenuation_model = 1 volume_db = -30.0 max_distance = 100.0 max_polyphony = 10 bus = &"GameplayMain" -script = ExtResource("17_0cqlf") +script = ExtResource("17_rgc8v") metadata/_custom_type_script = "uid://da0xv360va3b3" [node name="DamageAudio" type="AudioStreamPlayer3D" parent="."] -stream = ExtResource("23_b2eak") +stream = ExtResource("20_lojvk") max_distance = 100.0 max_polyphony = 10 bus = &"GameplayMain" -script = ExtResource("17_0cqlf") +script = ExtResource("17_rgc8v") metadata/_custom_type_script = "uid://da0xv360va3b3" [node name="ShootAudio" type="AudioStreamPlayer3D" parent="."] -stream = ExtResource("20_moxwy") +stream = ExtResource("21_sa026") attenuation_model = 1 volume_db = -30.0 max_distance = 100.0 max_polyphony = 10 bus = &"GameplayMain" -script = ExtResource("17_0cqlf") +script = ExtResource("17_rgc8v") metadata/_custom_type_script = "uid://da0xv360va3b3" [node name="BodyStateMachine" type="Node" parent="." node_paths=PackedStringArray("current_state")] -script = ExtResource("8_f1ej7") +script = ExtResource("22_du54r") current_state = NodePath("Stand") metadata/_custom_type_script = "uid://3777rkbebgjm" [node name="Crouch" type="Node" parent="BodyStateMachine" node_paths=PackedStringArray("stand_up_area", "player", "player_movement", "player_input", "animation_player", "weapon_system")] -script = ExtResource("9_oprun") +script = ExtResource("23_8n3v3") max_speed = 3.0 acceleration = 50.0 deceleration = 50.0 @@ -8765,7 +8767,7 @@ animation_player = NodePath("../../AnimationPlayer") weapon_system = NodePath("../../WeaponSystem") [node name="Stand" type="Node" parent="BodyStateMachine" node_paths=PackedStringArray("player", "player_movement", "player_input", "weapon_system", "audio")] -script = ExtResource("10_a8ls1") +script = ExtResource("24_xwsfc") max_speed = 6.0 acceleration = 100.0 deceleration = 50.0 @@ -8778,7 +8780,7 @@ step_delay = 0.25 step_speed_curve = SubResource("Curve_fbysy") [node name="Walk" type="Node" parent="BodyStateMachine" node_paths=PackedStringArray("player", "player_movement", "player_input", "weapon_system")] -script = ExtResource("11_qfm1y") +script = ExtResource("25_63k6k") max_speed = 3.0 acceleration = 50.0 deceleration = 50.0 @@ -8788,7 +8790,7 @@ player_input = NodePath("../../PlayerInput") weapon_system = NodePath("../../WeaponSystem") [node name="Fall" type="Node" parent="BodyStateMachine" node_paths=PackedStringArray("player", "player_movement", "player_input", "weapon_system", "land_sound")] -script = ExtResource("12_fulsm") +script = ExtResource("26_1o7qb") player = NodePath("../..") player_movement = NodePath("../../PlayerMovement") player_input = NodePath("../../PlayerInput") @@ -8797,31 +8799,32 @@ weapon_system = NodePath("../../WeaponSystem") land_sound = NodePath("../../LandAudio") [node name="Death" type="Node" parent="BodyStateMachine" node_paths=PackedStringArray("animation_player")] -script = ExtResource("19_rwwcc") +script = ExtResource("27_mu2ck") animation_player = NodePath("../../AnimationPlayer") [node name="PlayerMovement" type="Node" parent="." node_paths=PackedStringArray("player", "player_input")] -script = ExtResource("19_70eug") +script = ExtResource("28_xqgvn") player = NodePath("..") player_input = NodePath("../PlayerInput") jump_velocity = 12.0 [node name="WeaponSystem" type="Node" parent="." node_paths=PackedStringArray("animation_player", "camera", "player", "player_input")] unique_name_in_owner = true -script = ExtResource("4_qlg0r") +script = ExtResource("29_eipt1") animation_player = NodePath("../Camera3D/molikman_hands/AnimationPlayer") camera = NodePath("../Camera3D") player = NodePath("..") player_input = NodePath("../PlayerInput") [node name="WeaponSpawner" type="MultiplayerSpawner" parent="WeaponSystem"] +_spawnable_scenes = PackedStringArray("uid://djwjl8xll53vn", "uid://ts4xccpkjd3g", "uid://bxdatd1ilfgmc", "uid://c5q7e5dj86187") spawn_path = NodePath("..") -[node name="StartingWeaponSpawner" type="Node" parent="WeaponSystem" node_paths=PackedStringArray("weapon_spawner")] -script = ExtResource("17_ownlk") -starting_pistol = &"uid://djwjl8xll53vn" -starting_knife = &"uid://ts4xccpkjd3g" -weapon_spawner = NodePath("../WeaponSpawner") +[node name="StartingWeaponSpawner" type="Node" parent="WeaponSystem" node_paths=PackedStringArray("weapon_system")] +script = ExtResource("30_qlehe") +starting_pistol = ExtResource("31_iphn3") +starting_knife = ExtResource("32_q3u2a") +weapon_system = NodePath("..") [node name="AnimationPlayer" type="AnimationPlayer" parent="."] libraries = { @@ -8829,16 +8832,15 @@ libraries = { } [node name="TeamUpdater" type="Node" parent="." node_paths=PackedStringArray("player")] -script = ExtResource("7_a8ls1") +script = ExtResource("33_wsuxd") player = NodePath("..") layer = true inverse = true -[node name="PickupRange" type="Area3D" parent="." node_paths=PackedStringArray("weapon_spawner", "weapon_system")] +[node name="PickupRange" type="Area3D" parent="." node_paths=PackedStringArray("weapon_system")] collision_layer = 0 collision_mask = 8 -script = ExtResource("17_fjvrb") -weapon_spawner = NodePath("../WeaponSystem/WeaponSpawner") +script = ExtResource("34_anida") weapon_system = NodePath("../WeaponSystem") [node name="CollisionShape3D" type="CollisionShape3D" parent="PickupRange"] @@ -8846,17 +8848,17 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.8543701, 0) shape = SubResource("CapsuleShape3D_3xmak") [node name="TeamMaterialSwitcher" type="Node" parent="." node_paths=PackedStringArray("player")] -script = ExtResource("25_1mtds") -material = ExtResource("26_r2jxp") +script = ExtResource("35_1u3gl") +material = ExtResource("2_330gv") player = NodePath("..") -blue_team_texture = ExtResource("27_j3w78") +blue_team_texture = ExtResource("36_tt20t") [node name="Interaction" type="Node" parent="."] -script = ExtResource("37_5amik") +script = ExtResource("37_3lpnn") [node name="PlayerInput" type="MultiplayerSynchronizer" parent="."] replication_config = SubResource("SceneReplicationConfig_5amik") -script = ExtResource("37_b2eak") +script = ExtResource("38_2cl6u") [connection signal="died" from="." to="molikman_ingame/PlayerBasedVisibility" method="reverse_if_own"] [connection signal="died" from="." to="Camera3D" method="disable"] diff --git a/systems/player/collision_team_updater.gd b/players/player/collision_team_updater.gd similarity index 100% rename from systems/player/collision_team_updater.gd rename to players/player/collision_team_updater.gd diff --git a/systems/player/collision_team_updater.gd.uid b/players/player/collision_team_updater.gd.uid similarity index 100% rename from systems/player/collision_team_updater.gd.uid rename to players/player/collision_team_updater.gd.uid diff --git a/systems/player/dead_player_spectator.gd b/players/player/dead_player_spectator.gd similarity index 100% rename from systems/player/dead_player_spectator.gd rename to players/player/dead_player_spectator.gd diff --git a/systems/player/dead_player_spectator.gd.uid b/players/player/dead_player_spectator.gd.uid similarity index 100% rename from systems/player/dead_player_spectator.gd.uid rename to players/player/dead_player_spectator.gd.uid diff --git a/systems/player/player.gd b/players/player/player.gd similarity index 100% rename from systems/player/player.gd rename to players/player/player.gd diff --git a/systems/player/player.gd.uid b/players/player/player.gd.uid similarity index 100% rename from systems/player/player.gd.uid rename to players/player/player.gd.uid diff --git a/systems/player/player_camera.gd b/players/player/player_camera.gd similarity index 100% rename from systems/player/player_camera.gd rename to players/player/player_camera.gd diff --git a/systems/player/player_camera.gd.uid b/players/player/player_camera.gd.uid similarity index 100% rename from systems/player/player_camera.gd.uid rename to players/player/player_camera.gd.uid diff --git a/systems/player/player_global.gd b/players/player/player_global.gd similarity index 100% rename from systems/player/player_global.gd rename to players/player/player_global.gd diff --git a/systems/player/player_global.gd.uid b/players/player/player_global.gd.uid similarity index 100% rename from systems/player/player_global.gd.uid rename to players/player/player_global.gd.uid diff --git a/systems/player/player_input.gd b/players/player/player_input.gd similarity index 100% rename from systems/player/player_input.gd rename to players/player/player_input.gd diff --git a/systems/player/player_input.gd.uid b/players/player/player_input.gd.uid similarity index 100% rename from systems/player/player_input.gd.uid rename to players/player/player_input.gd.uid diff --git a/systems/player/player_interaction.gd b/players/player/player_interaction.gd similarity index 100% rename from systems/player/player_interaction.gd rename to players/player/player_interaction.gd diff --git a/systems/player/player_interaction.gd.uid b/players/player/player_interaction.gd.uid similarity index 100% rename from systems/player/player_interaction.gd.uid rename to players/player/player_interaction.gd.uid diff --git a/systems/player/player_movement.gd b/players/player/player_movement.gd similarity index 100% rename from systems/player/player_movement.gd rename to players/player/player_movement.gd diff --git a/systems/player/player_movement.gd.uid b/players/player/player_movement.gd.uid similarity index 100% rename from systems/player/player_movement.gd.uid rename to players/player/player_movement.gd.uid diff --git a/systems/player/player_pickup.gd b/players/player/player_pickup.gd similarity index 77% rename from systems/player/player_pickup.gd rename to players/player/player_pickup.gd index df61ce7..ede8883 100644 --- a/systems/player/player_pickup.gd +++ b/players/player/player_pickup.gd @@ -1,6 +1,5 @@ extends Area3D -@export var weapon_spawner: MultiplayerSpawner @export var weapon_system: WeaponSystem var disabled: bool @@ -18,12 +17,8 @@ func on_body_entered(body: Node3D): if body is DroppableWeapon: if weapon_system.can_add(body.slot) == false or (body.team != Session.TEAMS.UNASSIGNED and get_parent().team != body.team): return - weapon_spawner.spawn({ - "ammo": body.weapon.ammo, - "remaining_ammo": body.weapon.remaining_ammo, - "scene_file_path": body.weapon.scene_file_path, - "slot": body.slot - }) + var weapon: WeaponSubStateMachine = body.weapon.duplicate() + weapon_system.add(weapon,weapon.slot) body.queue_free() diff --git a/systems/player/player_pickup.gd.uid b/players/player/player_pickup.gd.uid similarity index 100% rename from systems/player/player_pickup.gd.uid rename to players/player/player_pickup.gd.uid diff --git a/systems/player/player_raycast.gd b/players/player/player_raycast.gd similarity index 100% rename from systems/player/player_raycast.gd rename to players/player/player_raycast.gd diff --git a/systems/player/player_raycast.gd.uid b/players/player/player_raycast.gd.uid similarity index 100% rename from systems/player/player_raycast.gd.uid rename to players/player/player_raycast.gd.uid diff --git a/systems/player/states/crouching.gd b/players/player/states/crouching.gd similarity index 100% rename from systems/player/states/crouching.gd rename to players/player/states/crouching.gd diff --git a/systems/player/states/crouching.gd.uid b/players/player/states/crouching.gd.uid similarity index 100% rename from systems/player/states/crouching.gd.uid rename to players/player/states/crouching.gd.uid diff --git a/systems/player/states/death.gd b/players/player/states/death.gd similarity index 100% rename from systems/player/states/death.gd rename to players/player/states/death.gd diff --git a/systems/player/states/death.gd.uid b/players/player/states/death.gd.uid similarity index 100% rename from systems/player/states/death.gd.uid rename to players/player/states/death.gd.uid diff --git a/systems/player/states/falling.gd b/players/player/states/falling.gd similarity index 100% rename from systems/player/states/falling.gd rename to players/player/states/falling.gd diff --git a/systems/player/states/falling.gd.uid b/players/player/states/falling.gd.uid similarity index 100% rename from systems/player/states/falling.gd.uid rename to players/player/states/falling.gd.uid diff --git a/systems/player/states/standing.gd b/players/player/states/standing.gd similarity index 100% rename from systems/player/states/standing.gd rename to players/player/states/standing.gd diff --git a/systems/player/states/standing.gd.uid b/players/player/states/standing.gd.uid similarity index 100% rename from systems/player/states/standing.gd.uid rename to players/player/states/standing.gd.uid diff --git a/systems/player/states/walk.gd b/players/player/states/walk.gd similarity index 100% rename from systems/player/states/walk.gd rename to players/player/states/walk.gd diff --git a/systems/player/states/walk.gd.uid b/players/player/states/walk.gd.uid similarity index 100% rename from systems/player/states/walk.gd.uid rename to players/player/states/walk.gd.uid diff --git a/systems/player/team_color_switcher.gd b/players/player/team_color_switcher.gd similarity index 100% rename from systems/player/team_color_switcher.gd rename to players/player/team_color_switcher.gd diff --git a/systems/player/team_color_switcher.gd.uid b/players/player/team_color_switcher.gd.uid similarity index 100% rename from systems/player/team_color_switcher.gd.uid rename to players/player/team_color_switcher.gd.uid diff --git a/scenes/spectator.tscn b/players/spectator.tscn similarity index 86% rename from scenes/spectator.tscn rename to players/spectator.tscn index c7df0b8..6366600 100644 --- a/scenes/spectator.tscn +++ b/players/spectator.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://ckjabjcvgki6n"] -[ext_resource type="Script" uid="uid://cikw7fcykkpd5" path="res://systems/player/spectator.gd" id="1_jjbhc"] +[ext_resource type="Script" uid="uid://cikw7fcykkpd5" path="res://spectator.gd" id="1_jjbhc"] [node name="Spectator" type="Camera3D"] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 0, 0, 0) diff --git a/players/weapon_spawner.tscn b/players/weapon_spawner.tscn new file mode 100644 index 0000000..9b48780 --- /dev/null +++ b/players/weapon_spawner.tscn @@ -0,0 +1,5 @@ +[gd_scene format=3 uid="uid://eaali3lbode2"] + +[node name="WeaponSpawner" type="MultiplayerSpawner"] +_spawnable_scenes = PackedStringArray("uid://djwjl8xll53vn", "uid://ts4xccpkjd3g", "uid://bxdatd1ilfgmc", "uid://c5q7e5dj86187") +spawn_path = NodePath("..") diff --git a/project.godot b/project.godot index d54e068..dd05719 100644 --- a/project.godot +++ b/project.godot @@ -20,7 +20,7 @@ config/icon="res://icon.svg" [autoload] -PlayerGlobal="*res://systems/player/player_global.gd" +PlayerGlobal="*res://players/player/player_global.gd" Lobby="*res://multiplayer/lobby.gd" Session="*res://multiplayer/session.gd" ClientSettings="*res://gui/client_settings/client_settings.gd" diff --git a/systems/player/spectator.gd b/spectator.gd similarity index 100% rename from systems/player/spectator.gd rename to spectator.gd diff --git a/systems/player/spectator.gd.uid b/spectator.gd.uid similarity index 100% rename from systems/player/spectator.gd.uid rename to spectator.gd.uid diff --git a/systems/weapon_system/starting_weapon_spawner.gd b/systems/weapon_system/starting_weapon_spawner.gd index 6f4734e..a353f79 100644 --- a/systems/weapon_system/starting_weapon_spawner.gd +++ b/systems/weapon_system/starting_weapon_spawner.gd @@ -1,14 +1,14 @@ extends Node -@export var starting_pistol: StringName -@export var starting_knife: StringName -@export var weapon_spawner: MultiplayerSpawner +@export var starting_pistol: PackedScene +@export var starting_knife: PackedScene +@export var weapon_system: WeaponSystem func _ready() -> void: deferred_ready.call_deferred() func deferred_ready() -> void: if is_multiplayer_authority(): - weapon_spawner.spawn({"scene_file_path": starting_pistol}) - weapon_spawner.spawn({"scene_file_path": starting_knife}) + weapon_system.add(starting_pistol.instantiate(),"secondary") + weapon_system.add(starting_knife.instantiate(),"knife") queue_free() diff --git a/systems/weapon_system/weapon_substate_machine.gd b/systems/weapon_system/weapon_substate_machine.gd index f6725e4..d143526 100644 --- a/systems/weapon_system/weapon_substate_machine.gd +++ b/systems/weapon_system/weapon_substate_machine.gd @@ -25,6 +25,7 @@ class_name WeaponSubStateMachine remaining_ammo = 0 else: remaining_ammo = value + ammo_updated.emit() @export var speed_modifier: float = 1.0 @export var can_be_previous: bool = true @@ -52,6 +53,16 @@ func _ready() -> void: child.machine = self child.transition.connect(on_transition_required) child.return_to_previous.connect(request_return.emit) + + var parent = get_parent() + if parent is WeaponSystem: + system = parent + animation_player = system.animation_player + player_camera = system.camera + player = system.player + request_return.connect(system.return_to_previous) + ammo_depleted.connect(system.check_for_empty) + ammo_updated.connect(system.on_ammo_updated) func enter() -> void: super() diff --git a/systems/weapon_system/weapon_system.gd b/systems/weapon_system/weapon_system.gd index d91a830..850acb8 100644 --- a/systems/weapon_system/weapon_system.gd +++ b/systems/weapon_system/weapon_system.gd @@ -27,7 +27,6 @@ signal slots_updated(slots: Dictionary[StringName,WeaponSubStateMachine]) signal ammo_updated(ammo: int, remaining_ammo: int) func _ready() -> void: - $WeaponSpawner.spawn_function = pick_up_weapon player_input.drop.connect(drop_current) player_input.fire_begin.connect(use_begin) player_input.fire_end.connect(use_end) @@ -43,33 +42,32 @@ func get_speed_modifier() -> float: func can_add(slot: StringName) -> bool: return slots.has(slot) and slots[slot] == null -@rpc("call_local","reliable") -func add(state: WeaponSubStateMachine, slot: StringName,ignore_parent: bool = false) -> void: +func add(state: WeaponSubStateMachine, slot: StringName) -> void: + if not multiplayer.is_server(): + return if can_add(slot) == false: return - if ignore_parent == false: - if state.get_parent() == null: - add_child(state, true) - if state.get_parent() != self: - state.get_parent().remove_child(state) - add_child(state,true) - state.ready.emit() + add_child(state, true) slots[slot] = state - state.system = self - state.animation_player = animation_player - state.player_camera = camera - state.player = player - state.request_return.connect(return_to_previous) - state.ammo_depleted.connect(check_for_empty) - state.ammo_updated.connect(on_ammo_updated) slots_updated.emit(slots) if current_state == null: current_state = state ammo_updated.emit(current_state.ammo,current_state.remaining_ammo) state.enter.call_deferred() + + +func process_spawned_weapon(weapon_node: Node): + var weapon = weapon_node as WeaponSubStateMachine + + slots[weapon.slot] = weapon + slots_updated.emit(slots) + + if current_state == null: + current_state = weapon + ammo_updated.emit(current_state.ammo,current_state.remaining_ammo) func get_empty_ability_slot() -> StringName: if slots["ability_first"] == null: @@ -133,32 +131,6 @@ func drop_slot(slot: StringName): return drop(slots[slot]) -# Spawn function -# Data should be a dictionary with these keys: -# ammo -# remaining_ammo -# scene_file_path -func pick_up_weapon(data: Variant) -> Node: - if data.has("scene_file_path") == false: - return Node.new() - if data.has_all(["ammo","remaining_ammo"]): - var scene: WeaponSubStateMachine = load(data["scene_file_path"]).instantiate() - scene.ammo = data["ammo"] - scene.remaining_ammo = data["remaining_ammo"] - scene.slot = data["slot"] - scene.set_multiplayer_authority(get_multiplayer_authority()) - - add(scene,scene.slot,true) - - return scene - else: - var scene: WeaponSubStateMachine = load(data["scene_file_path"]).instantiate() - scene.set_multiplayer_authority(get_multiplayer_authority()) - - add(scene,scene.slot,true) - - return scene - func check_for_empty() -> void: if is_multiplayer_authority() == false: return @@ -167,7 +139,8 @@ func check_for_empty() -> void: child.queue_free() func on_ammo_updated() -> void: - ammo_updated.emit(current_state.ammo,current_state.remaining_ammo) + if current_state != null: + ammo_updated.emit(current_state.ammo,current_state.remaining_ammo) func disable() -> void: disabled = true diff --git a/weapons/bomb/bomb.tscn b/weapons/bomb/bomb.tscn index 266dd84..ba1e4a4 100644 --- a/weapons/bomb/bomb.tscn +++ b/weapons/bomb/bomb.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=6 format=3 uid="uid://bxdatd1ilfgmc"] +[gd_scene load_steps=7 format=3 uid="uid://bxdatd1ilfgmc"] [ext_resource type="Script" uid="uid://e6lqknfl4ngt" path="res://systems/weapon_system/weapon_substate_machine.gd" id="1_krsgt"] [ext_resource type="Script" uid="uid://rx78vdadldm7" path="res://weapons/bomb/bomb_main_state.gd" id="2_870cc"] +[ext_resource type="PackedScene" uid="uid://dtbpyfdawb02b" path="res://weapons/bomb/active_bomb.tscn" id="2_j5dxu"] [ext_resource type="Script" uid="uid://cx7j3kr1laq3s" path="res://weapons/bomb/bomb_idle_state.gd" id="3_1x0so"] [ext_resource type="Script" uid="uid://dmyir46aricwi" path="res://weapons/bomb/bomb_intro_state.gd" id="4_fv3ha"] [ext_resource type="Script" uid="uid://b5eapvgoni1pj" path="res://weapons/bomb/bomb_dropper.gd" id="5_fv3ha"] @@ -21,6 +22,7 @@ metadata/_custom_type_script = "uid://e6lqknfl4ngt" [node name="Plant" type="Node" parent="."] script = ExtResource("2_870cc") +bomb_scene = ExtResource("2_j5dxu") [node name="Idle" type="Node" parent="."] script = ExtResource("3_1x0so") diff --git a/weapons/gun/reload_state.gd b/weapons/gun/reload_state.gd index 325846a..b20de2f 100644 --- a/weapons/gun/reload_state.gd +++ b/weapons/gun/reload_state.gd @@ -12,8 +12,8 @@ func exit() -> void: func on_animation_finished(animation): if animation == with_morphems("reload"): if machine.remaining_ammo > machine.max_ammo: + machine.remaining_ammo -= machine.max_ammo-machine.ammo machine.ammo = machine.max_ammo - machine.remaining_ammo -= machine.max_ammo else: machine.ammo = machine.remaining_ammo machine.remaining_ammo = 0 diff --git a/weapons/gun/sp/starting_pistol.tscn b/weapons/gun/sp/starting_pistol.tscn index bc9310e..873835f 100644 --- a/weapons/gun/sp/starting_pistol.tscn +++ b/weapons/gun/sp/starting_pistol.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=8 format=3 uid="uid://djwjl8xll53vn"] +[gd_scene load_steps=9 format=3 uid="uid://djwjl8xll53vn"] [ext_resource type="Script" uid="uid://e6lqknfl4ngt" path="res://systems/weapon_system/weapon_substate_machine.gd" id="1_g7s1i"] [ext_resource type="Script" uid="uid://ofv4e3dsfe8" path="res://weapons/gun/idle_state.gd" id="2_cmn6f"] @@ -18,6 +18,14 @@ _limits = [-0.02, 0.02, 0.0, 20.0] _data = [Vector2(0, -9.313226e-10), 0.0, 0.0, 0, 0, Vector2(4.959569, 0.0044327714), 0.0, 0.0, 0, 0, Vector2(9.919138, -0.0075840354), 0.0, 0.0, 0, 0, Vector2(15.09434, 0.011533612), 0.0, 0.0, 0, 0, Vector2(20, -0.014684878), 0.0, 0.0, 0, 0] point_count = 5 +[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_bwg3m"] +properties/0/path = NodePath(".:ammo") +properties/0/spawn = true +properties/0/replication_mode = 2 +properties/1/path = NodePath(".:remaining_ammo") +properties/1/spawn = true +properties/1/replication_mode = 2 + [node name="StartingPistol" type="Node" node_paths=PackedStringArray("enter_state")] script = ExtResource("1_g7s1i") animation_prefix = &"baked_sp_" @@ -52,3 +60,6 @@ emptyable = true [node name="FireTimer" type="Timer" parent="."] wait_time = 0.15 one_shot = true + +[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="."] +replication_config = SubResource("SceneReplicationConfig_bwg3m") diff --git a/weapons/molikman/molik/molik.gd b/weapons/molikman/molik/molik.gd index 3129f40..e03189c 100644 --- a/weapons/molikman/molik/molik.gd +++ b/weapons/molikman/molik/molik.gd @@ -6,7 +6,7 @@ var contacts: int = 0 func _on_body_entered(_body: Node) -> void: contacts += 1 if contacts > 2: - var grenade = load("res://scenes/projectiles/molikman/molikman_molotov_fire.tscn").instantiate() - Session.dynamic_objects_parent.add_child(grenade,true) - grenade.global_position = global_position + var fire = preload("uid://l4t1mflutm3t").instantiate() + Session.dynamic_objects_parent.add_child(fire,true) + fire.global_position = global_position queue_free() diff --git a/scenes/weapons/molik.tscn b/weapons/molikman/molik/molik.tscn similarity index 69% rename from scenes/weapons/molik.tscn rename to weapons/molikman/molik/molik.tscn index f7c89cf..e546153 100644 --- a/scenes/weapons/molik.tscn +++ b/weapons/molikman/molik/molik.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=5 format=3 uid="uid://b6qahd6q60js7"] +[gd_scene load_steps=6 format=3 uid="uid://b6qahd6q60js7"] [ext_resource type="Script" uid="uid://y1s64ppporww" path="res://weapons/molikman/molik/molik.gd" id="1_aqokr"] @@ -12,6 +12,11 @@ height = 0.1 [sub_resource type="SphereShape3D" id="SphereShape3D_aqokr"] radius = 0.05 +[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_6ic6f"] +properties/0/path = NodePath(".:position") +properties/0/spawn = true +properties/0/replication_mode = 1 + [node name="Molik" type="RigidBody3D"] collision_layer = 8 physics_material_override = SubResource("PhysicsMaterial_aqokr") @@ -27,4 +32,7 @@ mesh = SubResource("SphereMesh_fwcyt") [node name="CollisionShape3D" type="CollisionShape3D" parent="."] shape = SubResource("SphereShape3D_aqokr") +[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="."] +replication_config = SubResource("SceneReplicationConfig_6ic6f") + [connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/scenes/weapons/molikman_molik.tscn b/weapons/molikman/molik/molikman_molik.tscn similarity index 66% rename from scenes/weapons/molikman_molik.tscn rename to weapons/molikman/molik/molikman_molik.tscn index e57e5cb..74e1a73 100644 --- a/scenes/weapons/molikman_molik.tscn +++ b/weapons/molikman/molik/molikman_molik.tscn @@ -1,10 +1,18 @@ -[gd_scene load_steps=5 format=3 uid="uid://c5q7e5dj86187"] +[gd_scene load_steps=6 format=3 uid="uid://c5q7e5dj86187"] [ext_resource type="Script" uid="uid://e6lqknfl4ngt" path="res://systems/weapon_system/weapon_substate_machine.gd" id="1_e53aq"] [ext_resource type="Script" uid="uid://js2rkse5mka0" path="res://weapons/molikman/molik/intro_state.gd" id="2_8q75j"] [ext_resource type="Script" uid="uid://cnre3f01a2n88" path="res://weapons/molikman/molik/idle_state.gd" id="3_p1i4u"] [ext_resource type="Script" uid="uid://b6eio68csxw7v" path="res://weapons/molikman/molik/throw.gd" id="4_1la3w"] +[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_i1uig"] +properties/0/path = NodePath(".:ammo") +properties/0/spawn = true +properties/0/replication_mode = 1 +properties/1/path = NodePath(".:remaining_ammo") +properties/1/spawn = true +properties/1/replication_mode = 1 + [node name="MolikmanMolik" type="Node" node_paths=PackedStringArray("enter_state")] script = ExtResource("1_e53aq") animation_prefix = &"baked_sp_" @@ -22,3 +30,6 @@ script = ExtResource("3_p1i4u") [node name="Throw" type="Node" parent="."] script = ExtResource("4_1la3w") + +[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="."] +replication_config = SubResource("SceneReplicationConfig_i1uig") diff --git a/scenes/projectiles/molikman/molikman_molotov_fire.gd b/weapons/molikman/molik/molikman_molotov_fire.gd similarity index 100% rename from scenes/projectiles/molikman/molikman_molotov_fire.gd rename to weapons/molikman/molik/molikman_molotov_fire.gd diff --git a/scenes/projectiles/molikman/molikman_molotov_fire.gd.uid b/weapons/molikman/molik/molikman_molotov_fire.gd.uid similarity index 100% rename from scenes/projectiles/molikman/molikman_molotov_fire.gd.uid rename to weapons/molikman/molik/molikman_molotov_fire.gd.uid diff --git a/scenes/projectiles/molikman/molikman_molotov_fire.tscn b/weapons/molikman/molik/molikman_molotov_fire.tscn similarity index 83% rename from scenes/projectiles/molikman/molikman_molotov_fire.tscn rename to weapons/molikman/molik/molikman_molotov_fire.tscn index 6e3d70b..7e92d5b 100644 --- a/scenes/projectiles/molikman/molikman_molotov_fire.tscn +++ b/weapons/molikman/molik/molikman_molotov_fire.tscn @@ -1,7 +1,7 @@ -[gd_scene load_steps=10 format=3 uid="uid://l4t1mflutm3t"] +[gd_scene load_steps=11 format=3 uid="uid://l4t1mflutm3t"] [ext_resource type="Texture2D" uid="uid://bmnqvop2dy5pm" path="res://textures/prototype_yellow_256x256.png" id="1_hr7p8"] -[ext_resource type="Script" uid="uid://bo0ij4miuksua" path="res://scenes/projectiles/molikman/molikman_molotov_fire.gd" id="1_qokq0"] +[ext_resource type="Script" uid="uid://bo0ij4miuksua" path="res://weapons/molikman/molik/molikman_molotov_fire.gd" id="1_qokq0"] [ext_resource type="Texture2D" uid="uid://b8aqstr5es5x4" path="res://textures/prototype_orange_256x256.png" id="2_qokq0"] [sub_resource type="CylinderShape3D" id="CylinderShape3D_hr7p8"] @@ -33,6 +33,11 @@ color_ramp = SubResource("GradientTexture1D_qokq0") material = SubResource("StandardMaterial3D_qokq0") text = "fire" +[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_ykxjp"] +properties/0/path = NodePath(".:position") +properties/0/spawn = true +properties/0/replication_mode = 1 + [node name="MolikmanMolotovFire" type="Area3D" node_paths=PackedStringArray("damage_timer")] collision_layer = 8 collision_mask = 2 @@ -65,5 +70,8 @@ autostart = true wait_time = 0.25 autostart = true +[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="."] +replication_config = SubResource("SceneReplicationConfig_ykxjp") + [connection signal="timeout" from="DieTimer" to="." method="queue_free"] [connection signal="timeout" from="DamageTimer" to="." method="damage"] diff --git a/weapons/molikman/molik/throw.gd b/weapons/molikman/molik/throw.gd index 66b6e0d..71cca99 100644 --- a/weapons/molikman/molik/throw.gd +++ b/weapons/molikman/molik/throw.gd @@ -1,6 +1,6 @@ extends WeaponState -const molik: PackedScene = preload("res://scenes/weapons/molik.tscn") +const molik: PackedScene = preload("uid://b6qahd6q60js7") func enter() -> void: fire() diff --git a/weapons/molikman_molotov.tres b/weapons/molikman_molotov.tres index 65b897b..39a2590 100644 --- a/weapons/molikman_molotov.tres +++ b/weapons/molikman_molotov.tres @@ -2,7 +2,7 @@ [ext_resource type="Texture2D" uid="uid://bmnqvop2dy5pm" path="res://textures/prototype_yellow_256x256.png" id="1_hmyxe"] [ext_resource type="Script" uid="uid://bvnn2eiwqbu7t" path="res://systems/weapon_system/weapon_resource.gd" id="1_ktfgd"] -[ext_resource type="PackedScene" uid="uid://c5q7e5dj86187" path="res://scenes/weapons/molikman_molik.tscn" id="3_6mu31"] +[ext_resource type="PackedScene" uid="uid://c5q7e5dj86187" path="res://weapons/molikman/molik/molikman_molik.tscn" id="3_6mu31"] [resource] script = ExtResource("1_ktfgd") From 87919ed890126b311374340f49f2e3b694267290 Mon Sep 17 00:00:00 2001 From: Rendo Date: Tue, 9 Dec 2025 22:34:17 +0500 Subject: [PATCH 08/11] State machine rework --- players/player/states/crouching.gd | 4 +-- players/player/states/death.gd | 4 +-- players/player/states/falling.gd | 4 +-- players/player/states/standing.gd | 4 +-- players/player/states/walk.gd | 4 +-- systems/state_machine/machine.gd | 14 --------- systems/state_machine/state.gd | 17 ++++++++-- systems/state_machine/substate_machine.gd | 7 ++--- systems/weapon_system/weapon_state.gd | 31 +++++++++++++++++-- .../weapon_system/weapon_substate_machine.gd | 4 +-- systems/weapon_system/weapon_system.gd | 6 ++-- weapons/bomb/bomb_idle_state.gd | 6 ++-- weapons/bomb/bomb_intro_state.gd | 4 +-- weapons/bomb/bomb_main_state.gd | 4 +-- weapons/gun/idle_state.gd | 13 ++++---- weapons/gun/intro_state.gd | 4 +-- weapons/gun/reload_state.gd | 4 +-- weapons/gun/semi_auto_shoot_state.gd | 6 ++-- weapons/knife/knife_attack.gd | 8 ++--- weapons/knife/knife_attack_heavy.gd | 4 +-- weapons/knife/knife_idle.gd | 8 ++--- weapons/knife/knife_intro.gd | 4 +-- weapons/molikman/molik/idle_state.gd | 6 ++-- weapons/molikman/molik/intro_state.gd | 4 +-- weapons/molikman/molik/throw.gd | 4 +-- 25 files changed, 102 insertions(+), 76 deletions(-) diff --git a/players/player/states/crouching.gd b/players/player/states/crouching.gd index 5783cfd..b161a81 100644 --- a/players/player/states/crouching.gd +++ b/players/player/states/crouching.gd @@ -13,11 +13,11 @@ extends State @export var crouch_time: float = 0.1 @export var weapon_system: WeaponSystem -func enter() -> void: +func _enter() -> void: animation_player.play("crouch",-1,1/crouch_time) player_input.crouch_end.connect(try_end_crouch) -func exit() -> void: +func _exit() -> void: animation_player.play("crouch",-1,-1/crouch_time,true) player_input.crouch_end.disconnect(try_end_crouch) diff --git a/players/player/states/death.gd b/players/player/states/death.gd index 68a4a57..61f1a64 100644 --- a/players/player/states/death.gd +++ b/players/player/states/death.gd @@ -5,8 +5,8 @@ extends State func on_death() -> void: transition.emit("Death") -func enter() -> void: +func _enter() -> void: animation_player.play("die") -func exit() -> void: +func _exit() -> void: pass diff --git a/players/player/states/falling.gd b/players/player/states/falling.gd index 2b7750a..5adb1c2 100644 --- a/players/player/states/falling.gd +++ b/players/player/states/falling.gd @@ -8,10 +8,10 @@ extends State @export var weapon_system: WeaponSystem @export var land_sound: MultiplayerAudio3D -func enter() -> void: +func _enter() -> void: pass -func exit() -> void: +func _exit() -> void: pass diff --git a/players/player/states/standing.gd b/players/player/states/standing.gd index 31151a0..ef7a53f 100644 --- a/players/player/states/standing.gd +++ b/players/player/states/standing.gd @@ -13,12 +13,12 @@ extends State var step_time: float -func enter() -> void: +func _enter() -> void: player_input.jumped.connect(on_jumped) player_input.crouch_begin.connect(begin_crouch) player_input.walk_begin.connect(begin_walk) -func exit() -> void: +func _exit() -> void: player_input.jumped.disconnect(on_jumped) player_input.crouch_begin.disconnect(begin_crouch) player_input.walk_begin.disconnect(begin_walk) diff --git a/players/player/states/walk.gd b/players/player/states/walk.gd index 8d31be5..4396220 100644 --- a/players/player/states/walk.gd +++ b/players/player/states/walk.gd @@ -9,12 +9,12 @@ extends State @export var player_input: PlayerInput @export var weapon_system: WeaponSystem -func enter() -> void: +func _enter() -> void: player_input.crouch_begin.connect(begin_crouch) player_input.walk_end.connect(end_walk) player_input.jumped.connect(on_jumped) -func exit() -> void: +func _exit() -> void: player_input.crouch_begin.disconnect(begin_crouch) player_input.walk_end.disconnect(end_walk) player_input.jumped.disconnect(on_jumped) diff --git a/systems/state_machine/machine.gd b/systems/state_machine/machine.gd index bfcd0dd..eb4a8d1 100644 --- a/systems/state_machine/machine.gd +++ b/systems/state_machine/machine.gd @@ -23,7 +23,6 @@ func on_transition_required(to: StringName): return change_state(states[to]) - change_state_to_name.rpc(to) func change_state(to_state: State) -> void: if current_state != null: @@ -31,19 +30,6 @@ func change_state(to_state: State) -> void: current_state = to_state current_state.enter() -@rpc("authority","call_local","reliable") -func change_state_to_name(to_name: StringName): - if current_state != null: - current_state.exit() - current_state = states[to_name] - current_state.enter() - -@rpc("authority","call_local","unreliable") -func clear_state(): - if current_state == null: - return - current_state.exit() - current_state = null func _process(delta: float) -> void: if current_state == null: diff --git a/systems/state_machine/state.gd b/systems/state_machine/state.gd index 7e293a5..2b60dba 100644 --- a/systems/state_machine/state.gd +++ b/systems/state_machine/state.gd @@ -7,8 +7,21 @@ class_name State signal transition(to: StringName) -@abstract func enter() -> void -@abstract func exit() -> void +@abstract func _enter() -> void +@abstract func _exit() -> void + +@rpc("authority","call_remote","reliable") +func enter(): + _enter() + if is_multiplayer_authority(): + enter.rpc() + +@rpc("authority","call_remote","reliable") +func exit(): + _exit() + if is_multiplayer_authority(): + exit.rpc() + func update(delta: float) -> void: pass func physics_update(delta: float) -> void: diff --git a/systems/state_machine/substate_machine.gd b/systems/state_machine/substate_machine.gd index 5e29246..cc293ec 100644 --- a/systems/state_machine/substate_machine.gd +++ b/systems/state_machine/substate_machine.gd @@ -4,12 +4,11 @@ class_name SubStateMachine @export var enter_state: State -func enter() -> void: +func _enter() -> void: change_state(enter_state) -func exit() -> void: - if is_multiplayer_authority(): - clear_state.rpc() +func _exit() -> void: + current_state.exit() func update(delta: float) -> void: if current_state == null: diff --git a/systems/weapon_system/weapon_state.gd b/systems/weapon_system/weapon_state.gd index b00dc16..ce25367 100644 --- a/systems/weapon_system/weapon_state.gd +++ b/systems/weapon_system/weapon_state.gd @@ -8,13 +8,40 @@ signal return_to_previous var machine: WeaponSubStateMachine +func _use_begin() -> void: + pass + +@rpc("authority","call_remote","reliable") func use_begin() -> void: + _use_begin() + if is_multiplayer_authority(): + use_begin.rpc() + +func _use_end(): pass + +@rpc("authority","call_remote","reliable") func use_end() -> void: + _use_end() + if is_multiplayer_authority(): + use_end.rpc() + +func _alternate_state() -> void: pass + +@rpc("authority","call_remote","reliable") func alternate_state() -> void: - pass + _alternate_state() + if is_multiplayer_authority(): + alternate_state.rpc() # Need to clarify naming; Switch mode like firemode. For different states use # alternate_state -func switch_mode() -> void: + +func _switch_mode(): pass + +@rpc("authority","call_remote","reliable") +func switch_mode() -> void: + _switch_mode() + if is_multiplayer_authority(): + switch_mode.rpc() diff --git a/systems/weapon_system/weapon_substate_machine.gd b/systems/weapon_system/weapon_substate_machine.gd index d143526..ea22a54 100644 --- a/systems/weapon_system/weapon_substate_machine.gd +++ b/systems/weapon_system/weapon_substate_machine.gd @@ -64,11 +64,11 @@ func _ready() -> void: ammo_depleted.connect(system.check_for_empty) ammo_updated.connect(system.on_ammo_updated) -func enter() -> void: +func _enter() -> void: super() player.weapon_models[visibility_target].show() -func exit() -> void: +func _exit() -> void: super() player.weapon_models[visibility_target].hide() diff --git a/systems/weapon_system/weapon_system.gd b/systems/weapon_system/weapon_system.gd index 850acb8..4837fa1 100644 --- a/systems/weapon_system/weapon_system.gd +++ b/systems/weapon_system/weapon_system.gd @@ -56,7 +56,7 @@ func add(state: WeaponSubStateMachine, slot: StringName) -> void: if current_state == null: current_state = state ammo_updated.emit(current_state.ammo,current_state.remaining_ammo) - state.enter.call_deferred() + state._enter.call_deferred() func process_spawned_weapon(weapon_node: Node): @@ -83,13 +83,13 @@ func switch(to: StringName, exit: bool = true): if slots.has(to) == false or slots[to] == null or slots[to] == current_state or (multiplayer.get_remote_sender_id() != 1 and is_multiplayer_authority() == false): return if current_state != null and exit: - current_state.exit() + current_state._exit() if current_state.can_be_previous: last_slot = slots.find_key(current_state) else: last_slot = "" current_state = slots[to] - current_state.enter() + current_state._enter() ammo_updated.emit(current_state.ammo,current_state.remaining_ammo) switched_to.emit(current_state) diff --git a/weapons/bomb/bomb_idle_state.gd b/weapons/bomb/bomb_idle_state.gd index 2761471..08a3ed9 100644 --- a/weapons/bomb/bomb_idle_state.gd +++ b/weapons/bomb/bomb_idle_state.gd @@ -1,12 +1,12 @@ extends WeaponState -func enter() -> void: +func _enter() -> void: machine.animation_player.play(machine.animation_prefix+"idle") -func exit() -> void: +func _exit() -> void: pass -func use_begin() -> void: +func _use_begin() -> void: if Session.is_on_site(machine.player.player_id): transition.emit("Plant") diff --git a/weapons/bomb/bomb_intro_state.gd b/weapons/bomb/bomb_intro_state.gd index 4e48af7..66f4813 100644 --- a/weapons/bomb/bomb_intro_state.gd +++ b/weapons/bomb/bomb_intro_state.gd @@ -1,10 +1,10 @@ extends WeaponState -func enter() -> void: +func _enter() -> void: machine.animation_player.play(machine.animation_prefix+"intro") machine.animation_player.animation_finished.connect(on_animation_finished) -func exit() -> void: +func _exit() -> void: machine.animation_player.animation_finished.disconnect(on_animation_finished) func on_animation_finished(animation: StringName): diff --git a/weapons/bomb/bomb_main_state.gd b/weapons/bomb/bomb_main_state.gd index f851dd8..86e6a2a 100644 --- a/weapons/bomb/bomb_main_state.gd +++ b/weapons/bomb/bomb_main_state.gd @@ -2,14 +2,14 @@ extends WeaponState @export var bomb_scene: PackedScene -func enter(): +func _enter(): machine.animation_player.play(machine.animation_prefix+"plant") machine.animation_player.animation_finished.connect(on_animation_finished) if is_multiplayer_authority(): machine.speed_modifier = 0.0 machine.player.get_node("PlantAudio").multiplayer_play() -func exit(): +func _exit(): machine.animation_player.animation_finished.disconnect(on_animation_finished) machine.speed_modifier = 1.0 diff --git a/weapons/gun/idle_state.gd b/weapons/gun/idle_state.gd index 821a3dd..1ff2028 100644 --- a/weapons/gun/idle_state.gd +++ b/weapons/gun/idle_state.gd @@ -2,18 +2,19 @@ extends WeaponState @export var emptyable: bool -func enter() -> void: +func _enter() -> void: machine.animation_player.play(with_morphems("idle")) - machine.player.get_node("PlayerInput").reload.connect(init_reload) + if is_multiplayer_authority(): + machine.player.get_node("PlayerInput").reload.connect(init_reload) -func exit() -> void: - machine.player.get_node("PlayerInput").reload.disconnect(init_reload) +func _exit() -> void: + if is_multiplayer_authority(): + machine.player.get_node("PlayerInput").reload.disconnect(init_reload) -func use_begin() -> void: +func _use_begin() -> void: if machine.ammo > 0: transition.emit("Shoot") -@rpc("authority","call_local","reliable") func init_reload(): if machine.ammo == machine.max_ammo or machine.remaining_ammo <= 0: return diff --git a/weapons/gun/intro_state.gd b/weapons/gun/intro_state.gd index 2d41843..26f7768 100644 --- a/weapons/gun/intro_state.gd +++ b/weapons/gun/intro_state.gd @@ -2,11 +2,11 @@ extends WeaponState @export var emptyable: bool -func enter() -> void: +func _enter() -> void: machine.animation_player.play(with_morphems("intro")) machine.animation_player.animation_finished.connect(on_animation_finished) -func exit() -> void: +func _exit() -> void: machine.animation_player.animation_finished.disconnect(on_animation_finished) func on_animation_finished(animation): diff --git a/weapons/gun/reload_state.gd b/weapons/gun/reload_state.gd index b20de2f..36fcb99 100644 --- a/weapons/gun/reload_state.gd +++ b/weapons/gun/reload_state.gd @@ -2,11 +2,11 @@ extends WeaponState @export var emptyable: bool -func enter() -> void: +func _enter() -> void: machine.animation_player.play(with_morphems("reload")) machine.animation_player.animation_finished.connect(on_animation_finished) -func exit() -> void: +func _exit() -> void: machine.animation_player.animation_finished.disconnect(on_animation_finished) func on_animation_finished(animation): diff --git a/weapons/gun/semi_auto_shoot_state.gd b/weapons/gun/semi_auto_shoot_state.gd index f603f64..0ad62af 100644 --- a/weapons/gun/semi_auto_shoot_state.gd +++ b/weapons/gun/semi_auto_shoot_state.gd @@ -11,11 +11,11 @@ extends WeaponState var bullets_shot: int = 0 -func enter() -> void: +func _enter() -> void: fire() machine.animation_player.animation_finished.connect(on_animation_finished) -func exit() -> void: +func _exit() -> void: bullets_shot = 0 machine.animation_player.animation_finished.disconnect(on_animation_finished) @@ -23,7 +23,7 @@ func on_animation_finished(animation): if animation == with_morphems("shoot"): transition.emit("Idle") -func use_begin() -> void: +func _use_begin() -> void: if fire_timer.time_left > 0: return fire() diff --git a/weapons/knife/knife_attack.gd b/weapons/knife/knife_attack.gd index 57285f6..1c3df29 100644 --- a/weapons/knife/knife_attack.gd +++ b/weapons/knife/knife_attack.gd @@ -3,12 +3,12 @@ extends WeaponState @export var damage: int var end_it: bool = true -func enter() -> void: +func _enter() -> void: machine.animation_player.play(machine.animation_prefix + "attack") attack() machine.animation_player.animation_finished.connect(on_animation_finished) -func exit() -> void: +func _exit() -> void: machine.animation_player.animation_finished.disconnect(on_animation_finished) end_it = false @@ -24,8 +24,8 @@ func on_animation_finished(animation): attack() machine.animation_player.play(machine.animation_prefix + "attack") -func use_begin() -> void: +func _use_begin() -> void: end_it = false -func use_end() -> void: +func _use_end() -> void: end_it = true diff --git a/weapons/knife/knife_attack_heavy.gd b/weapons/knife/knife_attack_heavy.gd index 2b5a557..94def1b 100644 --- a/weapons/knife/knife_attack_heavy.gd +++ b/weapons/knife/knife_attack_heavy.gd @@ -2,12 +2,12 @@ extends WeaponState @export var damage: int -func enter() -> void: +func _enter() -> void: machine.animation_player.play(machine.animation_prefix + "heavy_attack") machine.animation_player.animation_finished.connect(on_animation_finished) attack() -func exit() -> void: +func _exit() -> void: machine.animation_player.animation_finished.disconnect(on_animation_finished) func attack() -> void: diff --git a/weapons/knife/knife_idle.gd b/weapons/knife/knife_idle.gd index f33893d..16d1b2c 100644 --- a/weapons/knife/knife_idle.gd +++ b/weapons/knife/knife_idle.gd @@ -1,13 +1,13 @@ extends WeaponState -func enter() -> void: +func _enter() -> void: machine.animation_player.play(machine.animation_prefix + "idle") -func exit() -> void: +func _exit() -> void: pass -func use_begin() -> void: +func _use_begin() -> void: transition.emit("Attack") -func alternate_state() -> void: +func _alternate_state() -> void: transition.emit("HeavyAttack") diff --git a/weapons/knife/knife_intro.gd b/weapons/knife/knife_intro.gd index aa9f7d8..7579ea0 100644 --- a/weapons/knife/knife_intro.gd +++ b/weapons/knife/knife_intro.gd @@ -1,10 +1,10 @@ extends WeaponState -func enter() -> void: +func _enter() -> void: machine.animation_player.play(machine.animation_prefix + "intro") machine.animation_player.animation_finished.connect(on_animation_finished) -func exit() -> void: +func _exit() -> void: machine.animation_player.animation_finished.disconnect(on_animation_finished) func on_animation_finished(animation): diff --git a/weapons/molikman/molik/idle_state.gd b/weapons/molikman/molik/idle_state.gd index 19fae68..3caf4a5 100644 --- a/weapons/molikman/molik/idle_state.gd +++ b/weapons/molikman/molik/idle_state.gd @@ -1,11 +1,11 @@ extends WeaponState -func enter() -> void: +func _enter() -> void: machine.animation_player.play(machine.animation_prefix +"idle") -func exit() -> void: +func _exit() -> void: pass -func use_begin() -> void: +func _use_begin() -> void: if machine.ammo > 0: transition.emit("Throw") diff --git a/weapons/molikman/molik/intro_state.gd b/weapons/molikman/molik/intro_state.gd index 7853ec8..80177fb 100644 --- a/weapons/molikman/molik/intro_state.gd +++ b/weapons/molikman/molik/intro_state.gd @@ -2,11 +2,11 @@ extends WeaponState @export var emptyable: bool -func enter() -> void: +func _enter() -> void: machine.animation_player.play(machine.animation_prefix + "intro") machine.animation_player.animation_finished.connect(on_animation_finished) -func exit() -> void: +func _exit() -> void: machine.animation_player.animation_finished.disconnect(on_animation_finished) func on_animation_finished(animation): diff --git a/weapons/molikman/molik/throw.gd b/weapons/molikman/molik/throw.gd index 71cca99..b959d78 100644 --- a/weapons/molikman/molik/throw.gd +++ b/weapons/molikman/molik/throw.gd @@ -2,11 +2,11 @@ extends WeaponState const molik: PackedScene = preload("uid://b6qahd6q60js7") -func enter() -> void: +func _enter() -> void: fire() machine.animation_player.animation_finished.connect(on_animation_finished) -func exit() -> void: +func _exit() -> void: machine.animation_player.animation_finished.disconnect(on_animation_finished) func on_animation_finished(animation): From e6a47a47721091903d06dfa47971158aedcadde2 Mon Sep 17 00:00:00 2001 From: Rendo Date: Tue, 9 Dec 2025 23:54:02 +0500 Subject: [PATCH 09/11] Fixed some errors --- levels/prototype_scene.tscn | 4 ++-- players/player/states/standing.gd | 7 ++++--- systems/state_machine/machine.gd | 2 ++ systems/state_machine/substate_machine.gd | 5 +++-- systems/weapon_system/weapon_system.gd | 9 ++++++--- weapons/gun/intro_state.gd | 2 ++ weapons/molikman/molik/molik.gd | 17 +++++++++-------- weapons/molikman/molik/molik.tscn | 14 ++------------ weapons/molikman/molik/throw.gd | 4 ++-- 9 files changed, 32 insertions(+), 32 deletions(-) diff --git a/levels/prototype_scene.tscn b/levels/prototype_scene.tscn index 60c19e9..2f565c9 100644 --- a/levels/prototype_scene.tscn +++ b/levels/prototype_scene.tscn @@ -267,12 +267,12 @@ script = ExtResource("11_02ic3") exlusion_list = [NodePath("DefenceSpawn"), NodePath("AttackSpawn"), NodePath("SpectatorSpawn"), NodePath("MultiplayerSpawner")] [node name="DefenceSpawn" type="Marker3D" parent="PlayersContainer"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 37.170197, 0.5180037, -11.271502) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 37.170197, 0.5, -11.271502) script = ExtResource("10_02ic3") spawn_radius = 10.0 [node name="AttackSpawn" type="Marker3D" parent="PlayersContainer"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -31.553003, 0.5180037, 20.371899) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -31.553003, 0.49999988, 20.371899) script = ExtResource("10_02ic3") team = 1 spawn_radius = 5.0 diff --git a/players/player/states/standing.gd b/players/player/states/standing.gd index ef7a53f..8e2fb2b 100644 --- a/players/player/states/standing.gd +++ b/players/player/states/standing.gd @@ -14,9 +14,10 @@ extends State var step_time: float func _enter() -> void: - player_input.jumped.connect(on_jumped) - player_input.crouch_begin.connect(begin_crouch) - player_input.walk_begin.connect(begin_walk) + if Session.is_server_request(): + player_input.jumped.connect(on_jumped) + player_input.crouch_begin.connect(begin_crouch) + player_input.walk_begin.connect(begin_walk) func _exit() -> void: player_input.jumped.disconnect(on_jumped) diff --git a/systems/state_machine/machine.gd b/systems/state_machine/machine.gd index eb4a8d1..ab6b2ec 100644 --- a/systems/state_machine/machine.gd +++ b/systems/state_machine/machine.gd @@ -13,6 +13,8 @@ func _ready() -> void: else: push_warning("Child of state machine is not state") + await get_tree().process_frame + await get_tree().process_frame current_state.enter() func on_transition_required(to: StringName): diff --git a/systems/state_machine/substate_machine.gd b/systems/state_machine/substate_machine.gd index cc293ec..18b46b1 100644 --- a/systems/state_machine/substate_machine.gd +++ b/systems/state_machine/substate_machine.gd @@ -5,10 +5,11 @@ class_name SubStateMachine @export var enter_state: State func _enter() -> void: - change_state(enter_state) + if is_multiplayer_authority(): + change_state(enter_state) func _exit() -> void: - current_state.exit() + pass func update(delta: float) -> void: if current_state == null: diff --git a/systems/weapon_system/weapon_system.gd b/systems/weapon_system/weapon_system.gd index 4837fa1..b73be85 100644 --- a/systems/weapon_system/weapon_system.gd +++ b/systems/weapon_system/weapon_system.gd @@ -56,7 +56,10 @@ func add(state: WeaponSubStateMachine, slot: StringName) -> void: if current_state == null: current_state = state ammo_updated.emit(current_state.ammo,current_state.remaining_ammo) - state._enter.call_deferred() + #Replace with way to ensure all players loaded + await get_tree().process_frame + await get_tree().process_frame + state._enter() func process_spawned_weapon(weapon_node: Node): @@ -83,13 +86,13 @@ func switch(to: StringName, exit: bool = true): if slots.has(to) == false or slots[to] == null or slots[to] == current_state or (multiplayer.get_remote_sender_id() != 1 and is_multiplayer_authority() == false): return if current_state != null and exit: - current_state._exit() + current_state.exit() if current_state.can_be_previous: last_slot = slots.find_key(current_state) else: last_slot = "" current_state = slots[to] - current_state._enter() + current_state.enter() ammo_updated.emit(current_state.ammo,current_state.remaining_ammo) switched_to.emit(current_state) diff --git a/weapons/gun/intro_state.gd b/weapons/gun/intro_state.gd index 26f7768..cda16d4 100644 --- a/weapons/gun/intro_state.gd +++ b/weapons/gun/intro_state.gd @@ -3,10 +3,12 @@ extends WeaponState @export var emptyable: bool func _enter() -> void: + machine.animation_player.play(with_morphems("intro")) machine.animation_player.animation_finished.connect(on_animation_finished) func _exit() -> void: + machine.animation_player.animation_finished.disconnect(on_animation_finished) func on_animation_finished(animation): diff --git a/weapons/molikman/molik/molik.gd b/weapons/molikman/molik/molik.gd index e03189c..8143c75 100644 --- a/weapons/molikman/molik/molik.gd +++ b/weapons/molikman/molik/molik.gd @@ -1,12 +1,13 @@ -extends RigidBody3D +extends CharacterBody3D - -var contacts: int = 0 - -func _on_body_entered(_body: Node) -> void: - contacts += 1 - if contacts > 2: - var fire = preload("uid://l4t1mflutm3t").instantiate() +func _physics_process(delta: float) -> void: + + velocity += get_gravity() * delta + + if is_on_floor(): + var fire: Node3D = preload("res://weapons/molikman/molik/molikman_molotov_fire.tscn").instantiate() Session.dynamic_objects_parent.add_child(fire,true) fire.global_position = global_position queue_free() + + move_and_slide() diff --git a/weapons/molikman/molik/molik.tscn b/weapons/molikman/molik/molik.tscn index e546153..70fe10e 100644 --- a/weapons/molikman/molik/molik.tscn +++ b/weapons/molikman/molik/molik.tscn @@ -1,10 +1,7 @@ -[gd_scene load_steps=6 format=3 uid="uid://b6qahd6q60js7"] +[gd_scene load_steps=5 format=3 uid="uid://b6qahd6q60js7"] [ext_resource type="Script" uid="uid://y1s64ppporww" path="res://weapons/molikman/molik/molik.gd" id="1_aqokr"] -[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_aqokr"] -bounce = 0.53 - [sub_resource type="SphereMesh" id="SphereMesh_fwcyt"] radius = 0.05 height = 0.1 @@ -17,13 +14,8 @@ properties/0/path = NodePath(".:position") properties/0/spawn = true properties/0/replication_mode = 1 -[node name="Molik" type="RigidBody3D"] +[node name="Molik" type="CharacterBody3D"] collision_layer = 8 -physics_material_override = SubResource("PhysicsMaterial_aqokr") -gravity_scale = 0.25 -continuous_cd = true -contact_monitor = true -max_contacts_reported = 2 script = ExtResource("1_aqokr") [node name="MeshInstance3D" type="MeshInstance3D" parent="."] @@ -34,5 +26,3 @@ shape = SubResource("SphereShape3D_aqokr") [node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="."] replication_config = SubResource("SceneReplicationConfig_6ic6f") - -[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/weapons/molikman/molik/throw.gd b/weapons/molikman/molik/throw.gd index b959d78..f6a9e91 100644 --- a/weapons/molikman/molik/throw.gd +++ b/weapons/molikman/molik/throw.gd @@ -22,7 +22,7 @@ func fire() -> void: machine.animation_player.play(machine.animation_prefix + "shoot") if is_multiplayer_authority(): - var molotov: RigidBody3D = molik.instantiate() + var molotov: CharacterBody3D = molik.instantiate() Session.dynamic_objects_parent.add_child(molotov,true) molotov.global_transform = machine.player_camera.global_transform - molotov.apply_impulse(-molotov.global_basis.z * 10) + molotov.velocity = -molotov.global_basis.z * 100 From f99108c4f0c4ac1abfbcf6b62120bebb50b3bc7b Mon Sep 17 00:00:00 2001 From: Rendo Date: Wed, 10 Dec 2025 00:08:57 +0500 Subject: [PATCH 10/11] alleged fixes --- multiplayer/team_spawner.gd | 2 +- systems/weapon_system/weapon_system.gd | 4 ++-- weapons/molikman/molik/molik.gd | 5 +++-- weapons/molikman/molik/throw.gd | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/multiplayer/team_spawner.gd b/multiplayer/team_spawner.gd index 56fa840..bba5b25 100644 --- a/multiplayer/team_spawner.gd +++ b/multiplayer/team_spawner.gd @@ -50,7 +50,7 @@ func spawn_player(id: int) -> void: inst.global_position = new_position func spawn_spectator(id: int) -> void: - var spectator: PackedScene = load("res://scenes/spectator.tscn") + var spectator: PackedScene = load("res://players/spectator.tscn") var inst = spectator.instantiate() inst.name = str(id) diff --git a/systems/weapon_system/weapon_system.gd b/systems/weapon_system/weapon_system.gd index b73be85..80e2603 100644 --- a/systems/weapon_system/weapon_system.gd +++ b/systems/weapon_system/weapon_system.gd @@ -86,13 +86,13 @@ func switch(to: StringName, exit: bool = true): if slots.has(to) == false or slots[to] == null or slots[to] == current_state or (multiplayer.get_remote_sender_id() != 1 and is_multiplayer_authority() == false): return if current_state != null and exit: - current_state.exit() + current_state._exit() if current_state.can_be_previous: last_slot = slots.find_key(current_state) else: last_slot = "" current_state = slots[to] - current_state.enter() + current_state._enter() ammo_updated.emit(current_state.ammo,current_state.remaining_ammo) switched_to.emit(current_state) diff --git a/weapons/molikman/molik/molik.gd b/weapons/molikman/molik/molik.gd index 8143c75..614cd37 100644 --- a/weapons/molikman/molik/molik.gd +++ b/weapons/molikman/molik/molik.gd @@ -1,8 +1,9 @@ extends CharacterBody3D func _physics_process(delta: float) -> void: - - velocity += get_gravity() * delta + if is_multiplayer_authority() == false: + return + velocity += get_gravity() * delta / 4 if is_on_floor(): var fire: Node3D = preload("res://weapons/molikman/molik/molikman_molotov_fire.tscn").instantiate() diff --git a/weapons/molikman/molik/throw.gd b/weapons/molikman/molik/throw.gd index f6a9e91..60748e5 100644 --- a/weapons/molikman/molik/throw.gd +++ b/weapons/molikman/molik/throw.gd @@ -25,4 +25,4 @@ func fire() -> void: var molotov: CharacterBody3D = molik.instantiate() Session.dynamic_objects_parent.add_child(molotov,true) molotov.global_transform = machine.player_camera.global_transform - molotov.velocity = -molotov.global_basis.z * 100 + molotov.velocity = -molotov.global_basis.z * 25 From 11eb875d2e6cef9a7cd3c079c95ba3cf4ba1ee74 Mon Sep 17 00:00:00 2001 From: Rendo Date: Wed, 10 Dec 2025 00:43:05 +0500 Subject: [PATCH 11/11] Grenade bounce and radius --- .../weapon_system/weapon_substate_machine.gd | 3 --- systems/weapon_system/weapon_system.gd | 14 ++++++++++---- weapons/molikman/molik/molik.gd | 17 +++++++++++------ weapons/molikman/molik/molikman_molik.tscn | 3 +++ .../molikman/molik/molikman_molotov_fire.tscn | 4 ++-- weapons/molikman/molik/throw.gd | 3 ++- 6 files changed, 28 insertions(+), 16 deletions(-) diff --git a/systems/weapon_system/weapon_substate_machine.gd b/systems/weapon_system/weapon_substate_machine.gd index ea22a54..355f382 100644 --- a/systems/weapon_system/weapon_substate_machine.gd +++ b/systems/weapon_system/weapon_substate_machine.gd @@ -72,12 +72,9 @@ func _exit() -> void: super() player.weapon_models[visibility_target].hide() -@rpc("authority","call_local","reliable") func use_begin() -> void: if current_state != null: current_state.use_begin() - -@rpc("authority","call_local","reliable") func use_end() -> void: if current_state != null: current_state.use_end() diff --git a/systems/weapon_system/weapon_system.gd b/systems/weapon_system/weapon_system.gd index 80e2603..52743e3 100644 --- a/systems/weapon_system/weapon_system.gd +++ b/systems/weapon_system/weapon_system.gd @@ -139,6 +139,8 @@ func check_for_empty() -> void: return for child in get_children(): if child is WeaponSubStateMachine and child.ammo == 0 and child.remaining_ammo == 0 and child.destroy_when_empty: + if child == current_state: + return_to_previous(false) child.queue_free() func on_ammo_updated() -> void: @@ -159,13 +161,17 @@ func _physics_process(delta: float) -> void: current_state.physics_update(delta) func use_begin() -> void: - current_state.use_begin.rpc() + if current_state != null: + current_state.use_begin() func use_end() -> void: - current_state.use_end.rpc() + if current_state != null: + current_state.use_end() func alternate_state() -> void: - current_state.alternate_state() + if current_state != null: + current_state.alternate_state() func switch_mode() -> void: - current_state.switch_mode() + if current_state != null: + current_state.switch_mode() diff --git a/weapons/molikman/molik/molik.gd b/weapons/molikman/molik/molik.gd index 614cd37..ac71783 100644 --- a/weapons/molikman/molik/molik.gd +++ b/weapons/molikman/molik/molik.gd @@ -3,12 +3,17 @@ extends CharacterBody3D func _physics_process(delta: float) -> void: if is_multiplayer_authority() == false: return + velocity += get_gravity() * delta / 4 - if is_on_floor(): - var fire: Node3D = preload("res://weapons/molikman/molik/molikman_molotov_fire.tscn").instantiate() - Session.dynamic_objects_parent.add_child(fire,true) - fire.global_position = global_position - queue_free() - move_and_slide() + var collision = move_and_collide(velocity * delta) + if collision: + if collision.get_normal().y > 0: + var fire: Node3D = preload("res://weapons/molikman/molik/molikman_molotov_fire.tscn").instantiate() + Session.dynamic_objects_parent.add_child(fire,true) + fire.global_position = global_position + queue_free() + else: + var normal = collision.get_normal() + velocity = velocity.bounce(normal) * 0.5 diff --git a/weapons/molikman/molik/molikman_molik.tscn b/weapons/molikman/molik/molikman_molik.tscn index 74e1a73..23ef48f 100644 --- a/weapons/molikman/molik/molikman_molik.tscn +++ b/weapons/molikman/molik/molikman_molik.tscn @@ -16,9 +16,12 @@ properties/1/replication_mode = 1 [node name="MolikmanMolik" type="Node" node_paths=PackedStringArray("enter_state")] script = ExtResource("1_e53aq") animation_prefix = &"baked_sp_" +registry_entry = &"mm_molik" visibility_target = &"sp" max_ammo = 3 ammo_mags = 0 +can_be_previous = false +destroy_when_empty = true enter_state = NodePath("Intro") metadata/_custom_type_script = "uid://e6lqknfl4ngt" diff --git a/weapons/molikman/molik/molikman_molotov_fire.tscn b/weapons/molikman/molik/molikman_molotov_fire.tscn index 7e92d5b..882f17d 100644 --- a/weapons/molikman/molik/molikman_molotov_fire.tscn +++ b/weapons/molikman/molik/molikman_molotov_fire.tscn @@ -6,7 +6,7 @@ [sub_resource type="CylinderShape3D" id="CylinderShape3D_hr7p8"] height = 3.0 -radius = 1.5 +radius = 2.5 [sub_resource type="Gradient" id="Gradient_hr7p8"] colors = PackedColorArray(1, 0.53333336, 0, 1, 0.45, 0.45, 0.45, 1) @@ -46,7 +46,7 @@ dps = 25.0 damage_timer = NodePath("DamageTimer") [node name="Decal" type="Decal" parent="."] -size = Vector3(3, 3, 3) +size = Vector3(5, 3, 5) texture_albedo = ExtResource("1_hr7p8") texture_emission = ExtResource("2_qokq0") emission_energy = 0.25 diff --git a/weapons/molikman/molik/throw.gd b/weapons/molikman/molik/throw.gd index 60748e5..414d2e8 100644 --- a/weapons/molikman/molik/throw.gd +++ b/weapons/molikman/molik/throw.gd @@ -10,8 +10,9 @@ func _exit() -> void: machine.animation_player.animation_finished.disconnect(on_animation_finished) func on_animation_finished(animation): - if animation == machine.animation_prefix + "throw": + if animation == machine.animation_prefix + "throw" or animation == machine.animation_prefix + "shoot": transition.emit("Idle") + func fire() -> void: if machine.ammo == 0: