diff --git a/animations/baked_bomb_plant.res b/animations/baked_bomb_plant.res index 694a4eb..b744203 100644 Binary files a/animations/baked_bomb_plant.res and b/animations/baked_bomb_plant.res differ 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/game.tscn b/game.tscn similarity index 82% rename from scenes/game.tscn rename to game.tscn index 011867b..dd4c8ff 100644 --- a/scenes/game.tscn +++ b/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/gui/buy_menu/buy_button/buy_button.gd b/gui/buy_menu/buy_button/buy_button.gd new file mode 100644 index 0000000..da09b77 --- /dev/null +++ b/gui/buy_menu/buy_button/buy_button.gd @@ -0,0 +1,16 @@ +extends Button + +@export var weapon: WeaponResource + +func _ready() -> void: + icon = weapon.preview + text = str(weapon.cost) + +func _pressed() -> void: + 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/buy_button/buy_button.gd.uid b/gui/buy_menu/buy_button/buy_button.gd.uid new file mode 100644 index 0000000..a7d85ac --- /dev/null +++ b/gui/buy_menu/buy_button/buy_button.gd.uid @@ -0,0 +1 @@ +uid://bq32y7eee1f63 diff --git a/gui/buy_menu/buy_button/buy_button.tscn b/gui/buy_menu/buy_button/buy_button.tscn new file mode 100644 index 0000000..6a5f424 --- /dev/null +++ b/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://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/gui/buy_menu/buy_menu.gd b/gui/buy_menu/buy_menu.gd new file mode 100644 index 0000000..60382e8 --- /dev/null +++ b/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/gui/buy_menu/buy_menu.gd.uid b/gui/buy_menu/buy_menu.gd.uid new file mode 100644 index 0000000..90756d9 --- /dev/null +++ b/gui/buy_menu/buy_menu.gd.uid @@ -0,0 +1 @@ +uid://dba17sgimp4j0 diff --git a/gui/buy_menu/buy_menu.tscn b/gui/buy_menu/buy_menu.tscn new file mode 100644 index 0000000..bd77d80 --- /dev/null +++ b/gui/buy_menu/buy_menu.tscn @@ -0,0 +1,45 @@ +[gd_scene load_steps=5 format=3 uid="uid://j5lgbg8c0pq"] + +[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://gui/buy_menu/player_money_label.gd" id="2_ll0n6"] + +[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="AbilitiesContainer" type="VBoxContainer" parent="CenterContainer/PanelContainer"] +layout_mode = 2 + +[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/gui/buy_menu/player_money_label.gd b/gui/buy_menu/player_money_label.gd new file mode 100644 index 0000000..5f41f09 --- /dev/null +++ b/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/gui/buy_menu/player_money_label.gd.uid b/gui/buy_menu/player_money_label.gd.uid new file mode 100644 index 0000000..112fc38 --- /dev/null +++ b/gui/buy_menu/player_money_label.gd.uid @@ -0,0 +1 @@ +uid://dk4diwvruvkch 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/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 99% rename from scripts/gui/hud/player_ammo_display.gd rename to gui/hud/player_ammo_display.gd index 20b6b1a..d88c5fc 100644 --- a/scripts/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/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 85% rename from scripts/gui/team_choice_menu.gd rename to gui/team_choice/team_choice_menu.gd index ed314a2..2b6439c 100644 --- a/scripts/gui/team_choice_menu.gd +++ b/gui/team_choice/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/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 6884dd0..2f565c9 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://l4t1mflutm3t" path="res://scenes/projectiles/molikman/molikman_molotov_fire.tscn" id="20_gcyg7"] +[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"] +[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) @@ -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 @@ -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") +_spawnable_scenes = PackedStringArray("uid://cxdgk74ln5xpn", "uid://dtbpyfdawb02b", "uid://dgfqppi21c2u0", "uid://b6qahd6q60js7", "uid://l4t1mflutm3t") 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"] +[node name="TeamChoiceMenu" parent="CanvasLayer" instance=ExtResource("19_gcyg7")] + +[node name="BuyMenu" parent="CanvasLayer" instance=ExtResource("20_gcyg7")] 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="MolikmanMolotovFire" parent="." instance=ExtResource("20_gcyg7")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -25.65116, 0.67484045, 14.924126) - -[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..57b2224 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://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"] [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 79% rename from scripts/multiplayer/session.gd rename to multiplayer/session.gd index 14fc71b..8aa096d 100644 --- a/scripts/multiplayer/session.gd +++ b/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,27 +30,26 @@ signal round_state_changed(state: int) signal player_stopped_interacting(id: int) var player_nodes: Dictionary[int,Player] = {} -var object_containers: Array[ObjectContainer] +var player_data: Dictionary[int,Dictionary] = {} -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 @@ -72,6 +74,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: @@ -86,11 +89,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 @@ -101,7 +104,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: @@ -116,6 +148,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): @@ -138,6 +171,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") @@ -155,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(): @@ -205,8 +247,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 @@ -256,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 @@ -353,3 +379,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 {} 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/scripts/multiplayer/spawn_system/team_spawner.gd b/multiplayer/team_spawner.gd similarity index 92% rename from scripts/multiplayer/spawn_system/team_spawner.gd rename to multiplayer/team_spawner.gd index 93c177a..bba5b25 100644 --- a/scripts/multiplayer/spawn_system/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) @@ -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/scripts/multiplayer/spawn_system/team_spawner.gd.uid b/multiplayer/team_spawner.gd.uid similarity index 100% rename from scripts/multiplayer/spawn_system/team_spawner.gd.uid rename to multiplayer/team_spawner.gd.uid diff --git a/scenes/molikman.tscn b/players/molikman.tscn similarity index 99% rename from scenes/molikman.tscn rename to players/molikman.tscn index 22b585c..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://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="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="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="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="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="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="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="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="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://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("AQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAAM/3LAgAAAAACAAEAAAAAAB3t4RIAAAAAAgABAAAAAAAf9d8KAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAIAAAAAAGHlnRoAAAAAAQAAAAAAAAD//wAAAAAAAAEAAgAAAAAAD+DvHwAAAAACAAEAAAAAAAWs+VMAAAAAAgABAAAAAAA78sMNAAAAAAIAAAAAAAAA//8AAAAAAAACAAAAAAAAAP//AAAAAAAAAQAAAAAAAAC94kEdAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAAo9NbLAAAAAABAAAAAAAAAP//AAAAAAAAAgAAAAAAAAD//wAAAAAAAAEAAAAAAAAAo9NbLAAAAAABAAAAAAAAADP9ywIAAAAAAQACAAAAAABh5Z0aAAAAAAIAAAAAAAAA//8AAAAAAAACAAEAAAAAAB/13woAAAAAAgAAAAAAAAD//wAAAAAAAAIAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAgABAAAAAAAFrPlTAAAAAAEAAgAAAAAAD+DvHwAAAAACAAEAAAAAAB3t4RIAAAAAAgABAAAAAAA78sMNAAAAAAEAAgAAAAAAYeWdGgAAAAACAAAAAAAAAP//AAAAAAAAAgAAAAAAAAD//wAAAAAAAAIAAQAAAAAAHe3hEgAAAAACAAAAAAAAAP//AAAAAAAAAgABAAAAAAA78sMNAAAAAAIAAAAAAAAA//8AAAAAAAACAAAAAAAAAP//AAAAAAAAAgAAAAAAAAD//wAAAAAAAAIAAQAAAAAAH/XfCgAAAAACAAAAAAAAAP//AAAAAAAAAgABAAAAAAAd7eESAAAAAAIAAAAAAAAA//8AAAAAAAAbAAAAAAAAABr95AIAAAAAGwAAAAAAAAD//wAAAAAAABsAAAAAAAAA//8AAAAAAAAbAAAAAAAAAP//AAAAAAAAGwAAAAAAAAD//wAAAAAAABsAAAAAAAAA//8AAAAAAAAbAAAAAAAAAP//AAAAAAAAGwAcAAAAAABc8KIPAAAAABsAAAAAAAAA//8AAAAAAAAbAAAAAAAAAK7iUB0AAAAAGwAAAAAAAAD//wAAAAAAABsAAAAAAAAA//8AAAAAAAAbAAAAAAAAAP//AAAAAAAAGwAAAAAAAADO8DAPAAAAABsAAAAAAAAA//8AAAAAAAAbAAAAAAAAAP//AAAAAAAAHQAAAAAAAAD//wAAAAAAABsAAAAAAAAA//8AAAAAAAAdAAAAAAAAAP//AAAAAAAAGwAcAAAAAADL3DMjAAAAABsAAAAAAAAA//8AAAAAAAAdAAAAAAAAAP//AAAAAAAAGwAAAAAAAACO03AsAAAAABsAAAAAAAAA//8AAAAAAAAbAAAAAAAAAM7wMA8AAAAAGwAAAAAAAAAa/eQCAAAAABsAAAAAAAAA//8AAAAAAAAbAAAAAAAAAP//AAAAAAAAGwAAAAAAAAD//wAAAAAAABsAHAAAAAAAy9wzIwAAAAAbABwAAAAAAFzwog8AAAAAHQAcAAAAAABa+KQHAAAAAB0AHAAAAAAAhd95IAAAAAAcABsAAAAAAKjvVhAAAAAAHQAcAAAAAAAAxf46AAAAABsAAAAAAAAA//8AAAAAAAAbAAAAAAAAAP//AAAAAAAAGwAcAAAAAABc8KIPAAAAABwAGwAAAAAAqO9WEAAAAAAdABwAAAAAAG/sjxMAAAAAHQAcAAAAAAD39wcIAAAAABwAAAAAAAAA//8AAAAAAAAdAAAAAAAAAP//AAAAAAAAHAAbAAAAAACo71YQAAAAAB0AHAAAAAAAAMX+OgAAAAAdABwAAAAAAG/sjxMAAAAAHQAcAAAAAABa+KQHAAAAABsAHAAAAAAAy9wzIwAAAAAdAAAAAAAAAP//AAAAAAAAGwAAAAAAAAD//wAAAAAAABsAAAAAAAAAXemhFgAAAAAbAAAAAAAAAP//AAAAAAAAGwAAAAAAAABd6aEWAAAAABsAAAAAAAAAzvAwDwAAAAAbAAAAAAAAAI7TcCwAAAAAGwAAAAAAAACu4lAdAAAAABsAAAAAAAAAXemhFgAAAAAbAAAAAAAAAP//AAAAAAAAGwAAAAAAAACO03AsAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAgAAAAAA2dklJgAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAACAAEAAAAAAPP0CwsAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA7OwSEwAAAAABAAAAAAAAAG/pjxYAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAIAAAAAAJCgbl8AAAAAAgABAAAAAACF7HkTAAAAAAEAAgAAAAAA8rIMTQAAAAABAAAAAAAAAP//AAAAAAAAAgABAAAAAAAj79sQAAAAAAEAAgAAAAAAkKBuXwAAAAACAAEAAAAAAAWs+VMAAAAAAQACAAAAAAAP4O8fAAAAAAEAAgAAAAAA2dklJgAAAAACAAEAAAAAACPv2xAAAAAAAgABAAAAAACF7HkTAAAAAAEAAAAAAAAA7OwSEwAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAABv6Y8WAAAAABsAAAAAAAAA//8AAAAAAAAbAAAAAAAAAP//AAAAAAAAGwAAAAAAAAD//wAAAAAAABsAAAAAAAAA//8AAAAAAAAbAAAAAAAAAP//AAAAAAAAGwAAAAAAAAD//wAAAAAAABsAHAAAAAAAfOqCFQAAAAAbAAAAAAAAAP//AAAAAAAAGwAAAAAAAAD//wAAAAAAABsAAAAAAAAA//8AAAAAAAAbAAAAAAAAAP//AAAAAAAAGwAcAAAAAADY5CYbAAAAABwAGwAAAAAAmu5kEQAAAAAbAAAAAAAAAP//AAAAAAAAGwAAAAAAAAD//wAAAAAAABwAGwAAAAAA+u8EEAAAAAAbAAAAAAAAAP//AAAAAAAAGwAAAAAAAAD//wAAAAAAABsAAAAAAAAA//8AAAAAAAAbAAAAAAAAAP//AAAAAAAAHAAbAAAAAACJ+3UEAAAAABwAGwAAAAAAO/jDBwAAAAAbABwAAAAAALaQSG8AAAAAGwAAAAAAAAD//wAAAAAAABsAHAAAAAAAfOqCFQAAAAAcABsAAAAAAIn7dQQAAAAAHAAbAAAAAAA7+MMHAAAAABwAGwAAAAAA+u8EEAAAAAAbABwAAAAAANjkJhsAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAgAAAAAAw+Y7GQAAAAABAAIAAAAAALjcRiMAAAAAAgABAAAAAAAThet6AAAAAAIAAQAAAAAA+7gDRwAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAEAAAAAAAAA4/8bAAAAAAABAAAAAAAAAP//AAAAAAAAAQAAAAAAAAD//wAAAAAAAAIAAQAAAAAAQbe9SAAAAAACAAEAAAAAACnz1QwAAAAAAQAAAAAAAADl8BkPAAAAAAEAAAAAAAAA//8AAAAAAAABAAAAAAAAAP//AAAAAAAAAQACAAAAAAC43EYjAAAAAAEAAAAAAAAA//8AAAAAAAABAAIAAAAAAKbZWCYAAAAAAgABAAAAAAD7uANHAAAAAAIAAQAAAAAA8LkORgAAAAABAAIAAAAAAOiTFmwAAAAAAgABAAAAAABr55MYAAAAAAEAAAAAAAAA4/8bAAAAAAABAAAAAAAAAOXwGQ8AAAAAAQACAAAAAAD97QESAAAAAAEAAgAAAAAAfO+CEAAAAAABAAIAAAAAAMPmOxkAAAAAAgABAAAAAAAThet6AAAAAAEAAgAAAAAA/e0BEgAAAAABAAIAAAAAAOiTFmwAAAAAAgABAAAAAABBt71IAAAAAAIAAQAAAAAAa+eTGAAAAAACAAEAAAAAACnz1QwAAAAAGwAAAAAAAAD//wAAAAAAABsAAAAAAAAA//8AAAAAAAAbAAAAAAAAAP//AAAAAAAAGwAcAAAAAACH8HcPAAAAABwAGwAAAAAAMrLMTQAAAAAbABwAAAAAAKGiXV0AAAAAHAAbAAAAAACq91QIAAAAABsAHAAAAAAA+bEFTgAAAAAcABsAAAAAAJyEYnsAAAAAGwAAAAAAAAD//wAAAAAAABsAAAAAAAAA0v8sAAAAAAAbAAAAAAAAAN3sIRMAAAAAGwAAAAAAAAD//wAAAAAAABsAHAAAAAAAQ+K7HQAAAAAbABwAAAAAAGTcmiMAAAAAGwAAAAAAAAD//wAAAAAAABwAGwAAAAAAMsDMPwAAAAAbABwAAAAAADLmzBkAAAAAHAAbAAAAAABPvK9DAAAAABwAGwAAAAAAwro8RQAAAAAcABsAAAAAAFfppxYAAAAAHAAbAAAAAABy9owJAAAAABsAAAAAAAAA//8AAAAAAAAbAAAAAAAAAP//AAAAAAAAGwAcAAAAAABD4rsdAAAAABwAGwAAAAAAnIRiewAAAAAcABsAAAAAADLAzD8AAAAAGwAcAAAAAAD5sQVOAAAAABwAGwAAAAAAwro8RQAAAAAcABsAAAAAADKyzE0AAAAAHAAbAAAAAABy9owJAAAAABwAGwAAAAAAqvdUCAAAAAAbAAAAAAAAAN3sIRMAAAAA"), @@ -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 @@ -8140,365 +8142,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.25656375, -0.04702925, 0.90831447, -0.32699883) +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.7044763, 0.00911981, -0.14722896, 0.6942288) +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.15562417, 0.961473, 0.016216002, 0.22602618) +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.034160614, 0.0036756974, 0.10691859, 0.993674) +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.0043263314, -0.0040993784, 0.13643973, 0.9906305) +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.005214611, 2.8070995e-06, 0.05689102, 0.9983668) +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.1003725, -0.005226302, 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.024743048, -0.008828851, 0.18375325, 0.98262125) +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.027934574, -0.0009649883, -0.0076394607, 0.9995801) +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.05274483, -0.0338398, 0.030989205, 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.046254627, -0.009467352, 0.26058254, 0.96429646) +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.00878469, -0.00035800118, 0.0071099484, 0.9999361) +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.03153699, -0.12061845, -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.07174287, -0.040049206, 0.29298976, 0.9525786) +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.011073017, 5.9979952e-06, 0.0064327978, 0.9999181) +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.02961815, -0.183246, 0.08660432, 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.07188154, -0.05357118, 0.18375853, 0.97887486) +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.0074422434, 5.438985e-06, 0.049038637, 0.99876916) +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.034160614, 0.0036757048, 0.106918596, 0.993674) +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.10037246, -0.0052262964, 0.099662624, 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.05274483, -0.03383979, 0.030989202, 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.03153698, -0.12061845, -0.015763218, 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.02961816, -0.183246, 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.3592606, 0.3746208, -0.29998538) +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.62878627, 0.4425465, 0.28039673) -bones/26/rotation = Quaternion(0.73096085, 0.005924971, -0.005531113, 0.68237126) +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.25017977, 0.56099474, -0.06066542) -bones/27/rotation = Quaternion(-0.08453745, 0.20055908, 0.85529864, 0.47020617) +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.46447125, -0.011562698, 0.097070254, 0.8801762) +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.59555614, 0.5829333, 0.006156997, -0.5526879) +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.032949667, -0.0097353915, -0.28318176, 0.95845073) +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.0019134879, 0.0056446115, 0.3415998, 0.9398266) +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.004624635, -0.0024093962, 0.41035476, 0.9119111) +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.10037253, 0.005226144, -0.09966263, 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.0193374, 0.017782895, -0.5525706, 0.833052) +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.010231995, 0.026011147, -0.91397166, 0.40481445) +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.05274484, 0.033839658, -0.030989284, 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.038894925, 0.026763793, -0.61616135, 0.7862036) +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.0038245036, -0.0079165865, -0.9201681, 0.39142483) +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.031536963, 0.12061838, 0.01576319, 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.05043134, 0.064866394, -0.6414283, 0.7627704) +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.004412254, 0.010155983, -0.9198821, 0.3920389) +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.029618183, 0.1832459, -0.08660429, 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.045283318, 0.07737079, -0.5511137, 0.8296004) +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.0051725525, -0.005350945, -0.75170314, 0.65945977) +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.032949682, -0.009735426, -0.28318176, 0.95845073) +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.005226184, -0.09966261, 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.052744824, 0.03383967, -0.030989263, 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.03153697, 0.120618366, 0.0157632, 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.029618176, 0.1832459, -0.08660432, 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.35926044, 0.3746208, -0.29998556) +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.25017977, 0.5609948, -0.0606654) +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.72660184, 0.34166104, 0.43067294) -bones/52/rotation = Quaternion(0.72577125, 0.52325475, -0.056364454, 0.4430391) +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 @@ -8511,14 +8513,14 @@ 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") 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 +8561,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.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.0023008306, 1.0717094e-14, -1.262296e-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.6838627e-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.6838627e-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"] @@ -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,20 +8767,20 @@ 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 -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") +script = ExtResource("25_63k6k") max_speed = 3.0 acceleration = 50.0 deceleration = 50.0 @@ -8788,39 +8790,41 @@ 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") -acceleration = 25.0 +script = ExtResource("26_1o7qb") player = NodePath("../..") player_movement = NodePath("../../PlayerMovement") player_input = NodePath("../../PlayerInput") +acceleration = 25.0 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") -jump_velocity = 12.0 +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")] -script = ExtResource("4_qlg0r") +unique_name_in_owner = true +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 = { @@ -8828,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 -player = NodePath("..") -[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"] @@ -8845,25 +8848,26 @@ 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") -blue_team_texture = ExtResource("27_j3w78") +script = ExtResource("35_1u3gl") +material = ExtResource("2_330gv") player = NodePath("..") +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"] +[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/player/collision_team_updater.gd b/players/player/collision_team_updater.gd similarity index 100% rename from scripts/player/collision_team_updater.gd rename to players/player/collision_team_updater.gd diff --git a/scripts/player/collision_team_updater.gd.uid b/players/player/collision_team_updater.gd.uid similarity index 100% rename from scripts/player/collision_team_updater.gd.uid rename to players/player/collision_team_updater.gd.uid diff --git a/scripts/player/dead_player_spectator.gd b/players/player/dead_player_spectator.gd similarity index 100% rename from scripts/player/dead_player_spectator.gd rename to players/player/dead_player_spectator.gd diff --git a/scripts/player/dead_player_spectator.gd.uid b/players/player/dead_player_spectator.gd.uid similarity index 100% rename from scripts/player/dead_player_spectator.gd.uid rename to players/player/dead_player_spectator.gd.uid diff --git a/scripts/player/player.gd b/players/player/player.gd similarity index 100% rename from scripts/player/player.gd rename to players/player/player.gd diff --git a/scripts/player/player.gd.uid b/players/player/player.gd.uid similarity index 100% rename from scripts/player/player.gd.uid rename to players/player/player.gd.uid diff --git a/scripts/player/player_camera.gd b/players/player/player_camera.gd similarity index 100% rename from scripts/player/player_camera.gd rename to players/player/player_camera.gd diff --git a/scripts/player/player_camera.gd.uid b/players/player/player_camera.gd.uid similarity index 100% rename from scripts/player/player_camera.gd.uid rename to players/player/player_camera.gd.uid diff --git a/scripts/player/player_global.gd b/players/player/player_global.gd similarity index 100% rename from scripts/player/player_global.gd rename to players/player/player_global.gd diff --git a/scripts/player/player_global.gd.uid b/players/player/player_global.gd.uid similarity index 100% rename from scripts/player/player_global.gd.uid rename to players/player/player_global.gd.uid diff --git a/scripts/multiplayer/player_input.gd b/players/player/player_input.gd similarity index 100% rename from scripts/multiplayer/player_input.gd rename to players/player/player_input.gd diff --git a/scripts/multiplayer/player_input.gd.uid b/players/player/player_input.gd.uid similarity index 100% rename from scripts/multiplayer/player_input.gd.uid rename to players/player/player_input.gd.uid diff --git a/scripts/player/player_interaction.gd b/players/player/player_interaction.gd similarity index 100% rename from scripts/player/player_interaction.gd rename to players/player/player_interaction.gd diff --git a/scripts/player/player_interaction.gd.uid b/players/player/player_interaction.gd.uid similarity index 100% rename from scripts/player/player_interaction.gd.uid rename to players/player/player_interaction.gd.uid diff --git a/scripts/player/player_movement.gd b/players/player/player_movement.gd similarity index 100% rename from scripts/player/player_movement.gd rename to players/player/player_movement.gd diff --git a/scripts/player/player_movement.gd.uid b/players/player/player_movement.gd.uid similarity index 100% rename from scripts/player/player_movement.gd.uid rename to players/player/player_movement.gd.uid diff --git a/scripts/player/player_pickup.gd b/players/player/player_pickup.gd similarity index 70% rename from scripts/player/player_pickup.gd rename to players/player/player_pickup.gd index 9e2259c..ede8883 100644 --- a/scripts/player/player_pickup.gd +++ b/players/player/player_pickup.gd @@ -1,33 +1,38 @@ 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 - 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) - Session.despawn(body.get_path()) + body.queue_free() 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/scripts/player/player_pickup.gd.uid b/players/player/player_pickup.gd.uid similarity index 100% rename from scripts/player/player_pickup.gd.uid rename to players/player/player_pickup.gd.uid diff --git a/scripts/player/player_raycast.gd b/players/player/player_raycast.gd similarity index 100% rename from scripts/player/player_raycast.gd rename to players/player/player_raycast.gd diff --git a/scripts/player/player_raycast.gd.uid b/players/player/player_raycast.gd.uid similarity index 100% rename from scripts/player/player_raycast.gd.uid rename to players/player/player_raycast.gd.uid diff --git a/scripts/player/states/crouching.gd b/players/player/states/crouching.gd similarity index 95% rename from scripts/player/states/crouching.gd rename to players/player/states/crouching.gd index 5783cfd..b161a81 100644 --- a/scripts/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/scripts/player/states/crouching.gd.uid b/players/player/states/crouching.gd.uid similarity index 100% rename from scripts/player/states/crouching.gd.uid rename to players/player/states/crouching.gd.uid diff --git a/scripts/player/states/death.gd b/players/player/states/death.gd similarity index 77% rename from scripts/player/states/death.gd rename to players/player/states/death.gd index 68a4a57..61f1a64 100644 --- a/scripts/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/scripts/player/states/death.gd.uid b/players/player/states/death.gd.uid similarity index 100% rename from scripts/player/states/death.gd.uid rename to players/player/states/death.gd.uid diff --git a/scripts/player/states/falling.gd b/players/player/states/falling.gd similarity index 94% rename from scripts/player/states/falling.gd rename to players/player/states/falling.gd index 2b7750a..5adb1c2 100644 --- a/scripts/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/scripts/player/states/falling.gd.uid b/players/player/states/falling.gd.uid similarity index 100% rename from scripts/player/states/falling.gd.uid rename to players/player/states/falling.gd.uid diff --git a/scripts/player/states/standing.gd b/players/player/states/standing.gd similarity index 85% rename from scripts/player/states/standing.gd rename to players/player/states/standing.gd index 31151a0..8e2fb2b 100644 --- a/scripts/player/states/standing.gd +++ b/players/player/states/standing.gd @@ -13,12 +13,13 @@ 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) +func _enter() -> void: + 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: +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/scripts/player/states/standing.gd.uid b/players/player/states/standing.gd.uid similarity index 100% rename from scripts/player/states/standing.gd.uid rename to players/player/states/standing.gd.uid diff --git a/scripts/player/states/walk.gd b/players/player/states/walk.gd similarity index 95% rename from scripts/player/states/walk.gd rename to players/player/states/walk.gd index 8d31be5..4396220 100644 --- a/scripts/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/scripts/player/states/walk.gd.uid b/players/player/states/walk.gd.uid similarity index 100% rename from scripts/player/states/walk.gd.uid rename to players/player/states/walk.gd.uid diff --git a/scripts/player/team_color_switcher.gd b/players/player/team_color_switcher.gd similarity index 100% rename from scripts/player/team_color_switcher.gd rename to players/player/team_color_switcher.gd diff --git a/scripts/player/team_color_switcher.gd.uid b/players/player/team_color_switcher.gd.uid similarity index 100% rename from scripts/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 afc26b5..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://scripts/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 5438400..dd05719 100644 --- a/project.godot +++ b/project.godot @@ -20,18 +20,25 @@ 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://players/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" +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={ @@ -164,6 +171,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/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/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/scripts/state_machine/state.gd b/scripts/state_machine/state.gd deleted file mode 100644 index 7e293a5..0000000 --- a/scripts/state_machine/state.gd +++ /dev/null @@ -1,17 +0,0 @@ -@abstract -extends Node - -class_name State - -@warning_ignore_start("unused_signal","unused_parameter") - -signal transition(to: StringName) - -@abstract func enter() -> void -@abstract func exit() -> void -func update(delta: float) -> void: - pass -func physics_update(delta: float) -> void: - pass -func state_input(event: InputEvent) -> void: - pass diff --git a/scripts/weapon_system/starting_weapon_spawner.gd b/scripts/weapon_system/starting_weapon_spawner.gd deleted file mode 100644 index 6f4734e..0000000 --- a/scripts/weapon_system/starting_weapon_spawner.gd +++ /dev/null @@ -1,14 +0,0 @@ -extends Node - -@export var starting_pistol: StringName -@export var starting_knife: StringName -@export var weapon_spawner: MultiplayerSpawner - -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}) - queue_free() diff --git a/scripts/weapon_system/weapon_state.gd b/scripts/weapon_system/weapon_state.gd deleted file mode 100644 index b00dc16..0000000 --- a/scripts/weapon_system/weapon_state.gd +++ /dev/null @@ -1,20 +0,0 @@ -@abstract -extends State - -class_name WeaponState - -@warning_ignore("unused_signal") -signal return_to_previous - -var machine: WeaponSubStateMachine - -func use_begin() -> void: - pass -func use_end() -> void: - pass -func alternate_state() -> void: - pass -# Need to clarify naming; Switch mode like firemode. For different states use -# alternate_state -func switch_mode() -> void: - pass 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/player/spectator.gd b/spectator.gd similarity index 100% rename from scripts/player/spectator.gd rename to spectator.gd diff --git a/scripts/player/spectator.gd.uid b/spectator.gd.uid similarity index 100% rename from scripts/player/spectator.gd.uid rename to spectator.gd.uid 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/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 73% rename from scripts/state_machine/machine.gd rename to systems/state_machine/machine.gd index bfcd0dd..ab6b2ec 100644 --- a/scripts/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): @@ -23,7 +25,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 +32,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/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/systems/state_machine/state.gd b/systems/state_machine/state.gd new file mode 100644 index 0000000..2b60dba --- /dev/null +++ b/systems/state_machine/state.gd @@ -0,0 +1,30 @@ +@abstract +extends Node + +class_name State + +@warning_ignore_start("unused_signal","unused_parameter") + +signal transition(to: StringName) + +@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: + pass +func state_input(event: InputEvent) -> void: + pass 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 86% rename from scripts/state_machine/substate_machine.gd rename to systems/state_machine/substate_machine.gd index 5e29246..18b46b1 100644 --- a/scripts/state_machine/substate_machine.gd +++ b/systems/state_machine/substate_machine.gd @@ -4,12 +4,12 @@ class_name SubStateMachine @export var enter_state: State -func enter() -> void: - change_state(enter_state) - -func exit() -> void: +func _enter() -> void: if is_multiplayer_authority(): - clear_state.rpc() + change_state(enter_state) + +func _exit() -> void: + pass func update(delta: float) -> void: if current_state == null: 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/systems/weapon_system/starting_weapon_spawner.gd b/systems/weapon_system/starting_weapon_spawner.gd new file mode 100644 index 0000000..a353f79 --- /dev/null +++ b/systems/weapon_system/starting_weapon_spawner.gd @@ -0,0 +1,14 @@ +extends Node + +@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_system.add(starting_pistol.instantiate(),"secondary") + weapon_system.add(starting_knife.instantiate(),"knife") + queue_free() 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/systems/weapon_system/weapon_state.gd b/systems/weapon_system/weapon_state.gd new file mode 100644 index 0000000..ce25367 --- /dev/null +++ b/systems/weapon_system/weapon_state.gd @@ -0,0 +1,47 @@ +@abstract +extends State + +class_name WeaponState + +@warning_ignore("unused_signal") +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: + _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(): + pass + +@rpc("authority","call_remote","reliable") +func switch_mode() -> void: + _switch_mode() + if is_multiplayer_authority(): + switch_mode.rpc() 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 80% rename from scripts/weapon_system/weapon_substate_machine.gd rename to systems/weapon_system/weapon_substate_machine.gd index 3e6df35..355f382 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 @@ -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,21 +53,28 @@ 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: +func _enter() -> void: super() player.weapon_models[visibility_target].show() -func exit() -> void: +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/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 61% rename from scripts/weapon_system/weapon_system.gd rename to systems/weapon_system/weapon_system.gd index f30d7f5..52743e3 100644 --- a/scripts/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,46 +42,57 @@ 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() + #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): + 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: + 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): 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) @@ -103,16 +113,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() @@ -126,41 +134,18 @@ 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 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: - 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 @@ -176,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/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/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 66% rename from scenes/weapons/bomb.tscn rename to weapons/bomb/bomb.tscn index 852ca71..ba1e4a4 100644 --- a/scenes/weapons/bomb.tscn +++ b/weapons/bomb/bomb.tscn @@ -1,15 +1,16 @@ -[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://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="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"] [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 @@ -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/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 70% rename from scripts/weapon_system/bomb/bomb_idle_state.gd rename to weapons/bomb/bomb_idle_state.gd index 2761471..08a3ed9 100644 --- a/scripts/weapon_system/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/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 89% rename from scripts/weapon_system/bomb/bomb_intro_state.gd rename to weapons/bomb/bomb_intro_state.gd index 4e48af7..66f4813 100644 --- a/scripts/weapon_system/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/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 72% rename from scripts/weapon_system/bomb/bomb_main_state.gd rename to weapons/bomb/bomb_main_state.gd index 88e86d0..86e6a2a 100644 --- a/scripts/weapon_system/bomb/bomb_main_state.gd +++ b/weapons/bomb/bomb_main_state.gd @@ -1,13 +1,15 @@ extends WeaponState -func enter(): +@export var bomb_scene: PackedScene + +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 @@ -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 60% rename from scripts/weapon_system/gun/idle_state.gd rename to weapons/gun/idle_state.gd index 821a3dd..1ff2028 100644 --- a/scripts/weapon_system/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/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 91% rename from scripts/weapon_system/gun/intro_state.gd rename to weapons/gun/intro_state.gd index 2d41843..cda16d4 100644 --- a/scripts/weapon_system/gun/intro_state.gd +++ b/weapons/gun/intro_state.gd @@ -2,11 +2,13 @@ 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/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 86% rename from scripts/weapon_system/gun/reload_state.gd rename to weapons/gun/reload_state.gd index 325846a..36fcb99 100644 --- a/scripts/weapon_system/gun/reload_state.gd +++ b/weapons/gun/reload_state.gd @@ -2,18 +2,18 @@ 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): 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/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 94% rename from scripts/weapon_system/gun/semi_auto_shoot_state.gd rename to weapons/gun/semi_auto_shoot_state.gd index f603f64..0ad62af 100644 --- a/scripts/weapon_system/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/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 70% rename from scenes/weapons/starting_pistol.tscn rename to weapons/gun/sp/starting_pistol.tscn index b8b522c..873835f 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"] +[gd_scene load_steps=9 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] @@ -18,10 +18,18 @@ _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_" -index = &"sp" +registry_entry = &"sp" visibility_target = &"sp" max_ammo = 20 speed_modifier = 0.9 @@ -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/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 87% rename from scripts/weapon_system/knife/knife_attack.gd rename to weapons/knife/knife_attack.gd index 57285f6..1c3df29 100644 --- a/scripts/weapon_system/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/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 92% rename from scripts/weapon_system/knife/knife_attack_heavy.gd rename to weapons/knife/knife_attack_heavy.gd index 2b5a557..94def1b 100644 --- a/scripts/weapon_system/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/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 59% rename from scripts/weapon_system/knife/knife_idle.gd rename to weapons/knife/knife_idle.gd index f33893d..16d1b2c 100644 --- a/scripts/weapon_system/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/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 88% rename from scripts/weapon_system/knife/knife_intro.gd rename to weapons/knife/knife_intro.gd index aa9f7d8..7579ea0 100644 --- a/scripts/weapon_system/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/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/weapons/molikman/molik/idle_state.gd b/weapons/molikman/molik/idle_state.gd new file mode 100644 index 0000000..3caf4a5 --- /dev/null +++ b/weapons/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/weapons/molikman/molik/idle_state.gd.uid b/weapons/molikman/molik/idle_state.gd.uid new file mode 100644 index 0000000..f3964a3 --- /dev/null +++ b/weapons/molikman/molik/idle_state.gd.uid @@ -0,0 +1 @@ +uid://cnre3f01a2n88 diff --git a/weapons/molikman/molik/intro_state.gd b/weapons/molikman/molik/intro_state.gd new file mode 100644 index 0000000..80177fb --- /dev/null +++ b/weapons/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/weapons/molikman/molik/intro_state.gd.uid b/weapons/molikman/molik/intro_state.gd.uid new file mode 100644 index 0000000..70a3870 --- /dev/null +++ b/weapons/molikman/molik/intro_state.gd.uid @@ -0,0 +1 @@ +uid://js2rkse5mka0 diff --git a/weapons/molikman/molik/molik.gd b/weapons/molikman/molik/molik.gd new file mode 100644 index 0000000..ac71783 --- /dev/null +++ b/weapons/molikman/molik/molik.gd @@ -0,0 +1,19 @@ +extends CharacterBody3D + +func _physics_process(delta: float) -> void: + if is_multiplayer_authority() == false: + return + + velocity += get_gravity() * delta / 4 + + + 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/molik.gd.uid b/weapons/molikman/molik/molik.gd.uid new file mode 100644 index 0000000..151334e --- /dev/null +++ b/weapons/molikman/molik/molik.gd.uid @@ -0,0 +1 @@ +uid://y1s64ppporww diff --git a/weapons/molikman/molik/molik.tscn b/weapons/molikman/molik/molik.tscn new file mode 100644 index 0000000..70fe10e --- /dev/null +++ b/weapons/molikman/molik/molik.tscn @@ -0,0 +1,28 @@ +[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="SphereMesh" id="SphereMesh_fwcyt"] +radius = 0.05 +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="CharacterBody3D"] +collision_layer = 8 +script = ExtResource("1_aqokr") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +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") diff --git a/weapons/molikman/molik/molikman_molik.tscn b/weapons/molikman/molik/molikman_molik.tscn new file mode 100644 index 0000000..23ef48f --- /dev/null +++ b/weapons/molikman/molik/molikman_molik.tscn @@ -0,0 +1,38 @@ +[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_" +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" + +[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") + +[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 82% rename from scenes/projectiles/molikman/molikman_molotov_fire.tscn rename to weapons/molikman/molik/molikman_molotov_fire.tscn index 6e3d70b..882f17d 100644 --- a/scenes/projectiles/molikman/molikman_molotov_fire.tscn +++ b/weapons/molikman/molik/molikman_molotov_fire.tscn @@ -1,12 +1,12 @@ -[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"] 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) @@ -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 @@ -41,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 @@ -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 new file mode 100644 index 0000000..414d2e8 --- /dev/null +++ b/weapons/molikman/molik/throw.gd @@ -0,0 +1,29 @@ +extends WeaponState + +const molik: PackedScene = preload("uid://b6qahd6q60js7") + +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" or animation == machine.animation_prefix + "shoot": + 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: 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 * 25 diff --git a/weapons/molikman/molik/throw.gd.uid b/weapons/molikman/molik/throw.gd.uid new file mode 100644 index 0000000..0cd0221 --- /dev/null +++ b/weapons/molikman/molik/throw.gd.uid @@ -0,0 +1 @@ +uid://b6eio68csxw7v diff --git a/weapons/molikman_molotov.tres b/weapons/molikman_molotov.tres new file mode 100644 index 0000000..39a2590 --- /dev/null +++ b/weapons/molikman_molotov.tres @@ -0,0 +1,13 @@ +[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://systems/weapon_system/weapon_resource.gd" id="1_ktfgd"] +[ext_resource type="PackedScene" uid="uid://c5q7e5dj86187" path="res://weapons/molikman/molik/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" 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")