summaryrefslogtreecommitdiff
path: root/godot
diff options
context:
space:
mode:
Diffstat (limited to 'godot')
-rw-r--r--godot/.gdbinit1
-rw-r--r--godot/.import/footstep01.ogg-d76963bf1bd06cc247473674bc496643.md53
-rw-r--r--godot/.import/footstep01.ogg-d76963bf1bd06cc247473674bc496643.oggstrbin0 -> 10011 bytes
-rw-r--r--godot/.import/footstep02.ogg-f0eec7980dcf1290786fd8f372f7b88f.md53
-rw-r--r--godot/.import/footstep02.ogg-f0eec7980dcf1290786fd8f372f7b88f.oggstrbin0 -> 10827 bytes
-rw-r--r--godot/.import/footstep03.ogg-03ef4afe33de50dbdff6ddbbf098ad74.md53
-rw-r--r--godot/.import/footstep03.ogg-03ef4afe33de50dbdff6ddbbf098ad74.oggstrbin0 -> 14431 bytes
-rw-r--r--godot/.import/footstep04.ogg-16226c305e1322a536cb96a2c537b228.md53
-rw-r--r--godot/.import/footstep04.ogg-16226c305e1322a536cb96a2c537b228.oggstrbin0 -> 14067 bytes
-rw-r--r--godot/.import/footstep05.ogg-ce0f0381235ebdd22319464e329eef5f.md53
-rw-r--r--godot/.import/footstep05.ogg-ce0f0381235ebdd22319464e329eef5f.oggstrbin0 -> 13891 bytes
-rw-r--r--godot/.import/footstep06.ogg-64d7f3763b27a0bf60b51adc0e13f809.md53
-rw-r--r--godot/.import/footstep06.ogg-64d7f3763b27a0bf60b51adc0e13f809.oggstrbin0 -> 11627 bytes
-rw-r--r--godot/addons/blend/import_blend.gd104
-rw-r--r--godot/addons/blend/plugin.cfg7
-rw-r--r--godot/addons/blend/plugin.gd35
-rw-r--r--godot/backup_stuff/Player.gd142
-rw-r--r--godot/backup_stuff/Player.tscn57
-rw-r--r--godot/backup_stuff/PlayerOld.tscn37
-rw-r--r--godot/backup_stuff/Player_Other.gd219
-rw-r--r--godot/backup_stuff/Sailor.gd43
-rw-r--r--godot/backup_stuff/Sailor.tscn27
-rw-r--r--godot/backup_stuff/player_controller.gd282
-rw-r--r--godot/bin/playercam._gdnlib14
-rw-r--r--godot/bin/playercam.gdns8
-rw-r--r--godot/bin/playercontroller.gdnlib14
-rw-r--r--godot/bin/playercontroller.gdns8
-rwxr-xr-xgodot/bin/x11/libnetmachine.sobin4807632 -> 0 bytes
-rwxr-xr-xgodot/bin/x11/libplayercam.sobin4841152 -> 0 bytes
-rwxr-xr-xgodot/bin/x11/libplayercontroller.sobin5297184 -> 0 bytes
-rw-r--r--godot/export_presets.cfg2
-rw-r--r--godot/libnetmachine.sobin4807632 -> 0 bytes
-rw-r--r--godot/maps/Main.tscn231
-rw-r--r--godot/meshes/laetine.obj346
-rw-r--r--godot/meshes/laetine.obj.import20
-rw-r--r--godot/meshes/laetine_mask.obj97
-rw-r--r--godot/project.godot1
-rw-r--r--godot/scenes/ballistics/Cannonball.tscn5
-rw-r--r--godot/scenes/characters/PlayerRigid.tscn4
-rw-r--r--godot/scenes/characters/viewmodel_arms.tscn4
-rw-r--r--godot/scenes/environment/RopeSegment.tscn18
-rw-r--r--godot/scenes/environment/SwingRope.tscn3
-rw-r--r--godot/scenes/vehicles/Gunboat.tscn282
-rw-r--r--godot/scenes/vehicles/Gunbrig.tscn13
-rw-r--r--godot/scenes/vehicles/ship_parts/SquareSail.gd4
-rw-r--r--godot/scenes/weapons/grapplinghook.gd98
-rw-r--r--godot/scenes/weapons/grapplinghook.tres7
-rw-r--r--godot/scenes/worldprops/ball_bucket.tscn46
-rw-r--r--godot/scripts/GameBase.gd4
-rw-r--r--godot/scripts/ballistics/Cannonball.gd4
-rw-r--r--godot/scripts/characters/player_controller_new.gd5
-rw-r--r--godot/scripts/machines/Cannon.gd9
-rw-r--r--godot/scripts/vehicles/Gunboat.gd8
-rw-r--r--godot/sounds/footstep01.oggbin0 -> 9715 bytes
-rw-r--r--godot/sounds/footstep01.ogg.import15
-rw-r--r--godot/sounds/footstep02.oggbin0 -> 10531 bytes
-rw-r--r--godot/sounds/footstep02.ogg.import15
-rw-r--r--godot/sounds/footstep03.oggbin0 -> 14136 bytes
-rw-r--r--godot/sounds/footstep03.ogg.import15
-rw-r--r--godot/sounds/footstep04.oggbin0 -> 13771 bytes
-rw-r--r--godot/sounds/footstep04.ogg.import15
-rw-r--r--godot/sounds/footstep05.oggbin0 -> 13595 bytes
-rw-r--r--godot/sounds/footstep05.ogg.import15
-rw-r--r--godot/sounds/footstep06.oggbin0 -> 11329 bytes
-rw-r--r--godot/sounds/footstep06.ogg.import15
-rw-r--r--godot/theming/menu_font.tres1
-rw-r--r--godot/ui/HUD.gd1
-rw-r--r--godot/watershadertest.tscn115
68 files changed, 661 insertions, 1773 deletions
diff --git a/godot/.gdbinit b/godot/.gdbinit
deleted file mode 100644
index 0c1f45b..0000000
--- a/godot/.gdbinit
+++ /dev/null
@@ -1 +0,0 @@
-set debuginfod enabled off
diff --git a/godot/.import/footstep01.ogg-d76963bf1bd06cc247473674bc496643.md5 b/godot/.import/footstep01.ogg-d76963bf1bd06cc247473674bc496643.md5
new file mode 100644
index 0000000..b1c7dd0
--- /dev/null
+++ b/godot/.import/footstep01.ogg-d76963bf1bd06cc247473674bc496643.md5
@@ -0,0 +1,3 @@
+source_md5="5e4ce2a9a8da359e25ebacefe6085207"
+dest_md5="540f42f15b11a03bbc5c26d78088848a"
+
diff --git a/godot/.import/footstep01.ogg-d76963bf1bd06cc247473674bc496643.oggstr b/godot/.import/footstep01.ogg-d76963bf1bd06cc247473674bc496643.oggstr
new file mode 100644
index 0000000..a5df690
--- /dev/null
+++ b/godot/.import/footstep01.ogg-d76963bf1bd06cc247473674bc496643.oggstr
Binary files differ
diff --git a/godot/.import/footstep02.ogg-f0eec7980dcf1290786fd8f372f7b88f.md5 b/godot/.import/footstep02.ogg-f0eec7980dcf1290786fd8f372f7b88f.md5
new file mode 100644
index 0000000..5b914b9
--- /dev/null
+++ b/godot/.import/footstep02.ogg-f0eec7980dcf1290786fd8f372f7b88f.md5
@@ -0,0 +1,3 @@
+source_md5="42a68b509a5b55bacf421a53b8498ac9"
+dest_md5="ed10ec8a9448819e30f35be09e23325a"
+
diff --git a/godot/.import/footstep02.ogg-f0eec7980dcf1290786fd8f372f7b88f.oggstr b/godot/.import/footstep02.ogg-f0eec7980dcf1290786fd8f372f7b88f.oggstr
new file mode 100644
index 0000000..3659edc
--- /dev/null
+++ b/godot/.import/footstep02.ogg-f0eec7980dcf1290786fd8f372f7b88f.oggstr
Binary files differ
diff --git a/godot/.import/footstep03.ogg-03ef4afe33de50dbdff6ddbbf098ad74.md5 b/godot/.import/footstep03.ogg-03ef4afe33de50dbdff6ddbbf098ad74.md5
new file mode 100644
index 0000000..321bb2f
--- /dev/null
+++ b/godot/.import/footstep03.ogg-03ef4afe33de50dbdff6ddbbf098ad74.md5
@@ -0,0 +1,3 @@
+source_md5="096249de9851a4dd5cff284df6e2cfbe"
+dest_md5="6ec64c55a330edeb2cdf04c14a60c8f6"
+
diff --git a/godot/.import/footstep03.ogg-03ef4afe33de50dbdff6ddbbf098ad74.oggstr b/godot/.import/footstep03.ogg-03ef4afe33de50dbdff6ddbbf098ad74.oggstr
new file mode 100644
index 0000000..f2473d2
--- /dev/null
+++ b/godot/.import/footstep03.ogg-03ef4afe33de50dbdff6ddbbf098ad74.oggstr
Binary files differ
diff --git a/godot/.import/footstep04.ogg-16226c305e1322a536cb96a2c537b228.md5 b/godot/.import/footstep04.ogg-16226c305e1322a536cb96a2c537b228.md5
new file mode 100644
index 0000000..86f4833
--- /dev/null
+++ b/godot/.import/footstep04.ogg-16226c305e1322a536cb96a2c537b228.md5
@@ -0,0 +1,3 @@
+source_md5="2bbf2dc2c4fd5dab1471565a7717c26d"
+dest_md5="2cbd71ac6e406536e91118e2f7f5b95d"
+
diff --git a/godot/.import/footstep04.ogg-16226c305e1322a536cb96a2c537b228.oggstr b/godot/.import/footstep04.ogg-16226c305e1322a536cb96a2c537b228.oggstr
new file mode 100644
index 0000000..2653e96
--- /dev/null
+++ b/godot/.import/footstep04.ogg-16226c305e1322a536cb96a2c537b228.oggstr
Binary files differ
diff --git a/godot/.import/footstep05.ogg-ce0f0381235ebdd22319464e329eef5f.md5 b/godot/.import/footstep05.ogg-ce0f0381235ebdd22319464e329eef5f.md5
new file mode 100644
index 0000000..7918de1
--- /dev/null
+++ b/godot/.import/footstep05.ogg-ce0f0381235ebdd22319464e329eef5f.md5
@@ -0,0 +1,3 @@
+source_md5="9c86cbb9d876a664616768b928f09c41"
+dest_md5="6f79b791e828a1c0d1ac6925dbe5f1b7"
+
diff --git a/godot/.import/footstep05.ogg-ce0f0381235ebdd22319464e329eef5f.oggstr b/godot/.import/footstep05.ogg-ce0f0381235ebdd22319464e329eef5f.oggstr
new file mode 100644
index 0000000..5ee96b0
--- /dev/null
+++ b/godot/.import/footstep05.ogg-ce0f0381235ebdd22319464e329eef5f.oggstr
Binary files differ
diff --git a/godot/.import/footstep06.ogg-64d7f3763b27a0bf60b51adc0e13f809.md5 b/godot/.import/footstep06.ogg-64d7f3763b27a0bf60b51adc0e13f809.md5
new file mode 100644
index 0000000..6ebe6a9
--- /dev/null
+++ b/godot/.import/footstep06.ogg-64d7f3763b27a0bf60b51adc0e13f809.md5
@@ -0,0 +1,3 @@
+source_md5="1ad77a09007eecfe72c27d6979372fb9"
+dest_md5="eae27abc77d8ece3dd72977c8ba37879"
+
diff --git a/godot/.import/footstep06.ogg-64d7f3763b27a0bf60b51adc0e13f809.oggstr b/godot/.import/footstep06.ogg-64d7f3763b27a0bf60b51adc0e13f809.oggstr
new file mode 100644
index 0000000..14ee55e
--- /dev/null
+++ b/godot/.import/footstep06.ogg-64d7f3763b27a0bf60b51adc0e13f809.oggstr
Binary files differ
diff --git a/godot/addons/blend/import_blend.gd b/godot/addons/blend/import_blend.gd
deleted file mode 100644
index 102b1fc..0000000
--- a/godot/addons/blend/import_blend.gd
+++ /dev/null
@@ -1,104 +0,0 @@
-# Copyright (c) 2021 K. S. Ernest (iFire) Lee and V-Sekai Contributors.
-# Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur.
-# Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md).
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in all
-# copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-
-tool
-extends EditorSceneImporter
-
-const settings_blender_path = "filesystem/import/blend/blender_path"
-
-var blender_path : String
-
-func _init():
- if not ProjectSettings.has_setting(settings_blender_path):
- ProjectSettings.set_setting(settings_blender_path, "blender")
- ProjectSettings.set_initial_value(settings_blender_path, "blender")
- else:
- blender_path = ProjectSettings.get_setting(settings_blender_path)
- var property_info = {
- "name": settings_blender_path,
- "type": TYPE_STRING,
- "hint": PROPERTY_HINT_GLOBAL_FILE,
- "hint_string": ""
- }
- ProjectSettings.add_property_info(property_info)
-
-
-func _get_extensions():
- return ["blend"]
-
-
-func _get_import_flags():
- return EditorSceneImporter.IMPORT_SCENE
-
-
-func _import_scene(path: String, flags: int, bake_fps: int):
- var import_config_file = ConfigFile.new()
- import_config_file.load(path + ".import")
- var compression_flags: int = import_config_file.get_value("params", "meshes/compress", 0)
- # ARRAY_COMPRESS_BASE = (ARRAY_INDEX + 1)
- compression_flags = compression_flags << (VisualServer.ARRAY_INDEX + 1)
- if import_config_file.get_value("params", "meshes/octahedral_compression", false):
- compression_flags |= VisualServer.ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION
-
- var path_global : String = ProjectSettings.globalize_path(path)
- path_global = path_global.c_escape()
- var output_path : String = "res://.import/" + path.get_file() + "-" + path.md5_text() + ".glb"
- var output_path_global = ProjectSettings.globalize_path(output_path)
- output_path_global = output_path_global.c_escape()
- var stdout = [].duplicate()
- var addon_path : String = blender_path
- var addon_path_global = ProjectSettings.globalize_path(addon_path)
- var params: PoolStringArray = [
- "filepath='%s'" % output_path_global,
- "export_format='GLB'",
- "export_colors=True",
- "export_all_influences=False",
- "export_extras=True",
- "export_cameras=True",
- "export_lights=True",
- "export_apply=(len(bpy.data.shape_keys)==0)"
- ]
- var script : String = "import bpy; bpy.ops.export_scene.gltf(%s)" % params.join(",")
- path_global = path_global.c_escape()
- var args = PoolStringArray([
- path_global,
- "--background",
- "--python-expr",
- script
- ])
- var ret = OS.execute(addon_path_global, args, true, stdout, true)
- if ret != OK:
- push_error(
- "Blender import failed with code=%d.\nCommand: %s\nOutput: %s" % [
- ret,
- args.join(" "),
- PoolStringArray(stdout).join("\n")
- ]
- )
- return null
-
- var root_node: Spatial = null
- if Engine.get_version_info()["major"] <= 3 and Engine.get_version_info()["minor"] <= 3:
- root_node = call("import_scene_from_other_importer", output_path, flags, bake_fps)
- else:
- root_node = call("import_scene_from_other_importer", output_path, flags, bake_fps, compression_flags)
- return root_node
diff --git a/godot/addons/blend/plugin.cfg b/godot/addons/blend/plugin.cfg
deleted file mode 100644
index 3fe0961..0000000
--- a/godot/addons/blend/plugin.cfg
+++ /dev/null
@@ -1,7 +0,0 @@
-[plugin]
-
-name="Blend"
-description="Blend Importer"
-author="K. S. Ernest Lee and V-Sekai Contributors"
-version="1.0.0"
-script="plugin.gd"
diff --git a/godot/addons/blend/plugin.gd b/godot/addons/blend/plugin.gd
deleted file mode 100644
index d399e67..0000000
--- a/godot/addons/blend/plugin.gd
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (c) 2021 K. S. Ernest (iFire) Lee and V-Sekai Contributors.
-# Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur.
-# Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md).
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in all
-# copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-#
-tool
-extends EditorPlugin
-
-var import_plugin
-
-func _enter_tree():
- import_plugin = preload("res://addons/blend/import_blend.gd").new()
- add_scene_import_plugin(import_plugin)
-
-
-func _exit_tree():
- remove_scene_import_plugin(import_plugin)
- import_plugin = null
diff --git a/godot/backup_stuff/Player.gd b/godot/backup_stuff/Player.gd
deleted file mode 100644
index 3555de5..0000000
--- a/godot/backup_stuff/Player.gd
+++ /dev/null
@@ -1,142 +0,0 @@
-extends RigidBody
-
-###################-VARIABLES-####################
-
-# Camera
-export(float) var mouse_sensitivity = 12.0
-export(NodePath) var cam_path
-export(NodePath) var ai_follower = null
-export(float) var FOV = 90.0
-var mouse_axis := Vector2()
-onready var cam: Camera = get_node(cam_path)
-# Move
-var velocity := Vector3()
-var direction := Vector3()
-var move_axis := Vector2()
-# Walk
-const FLOOR_MAX_ANGLE: float = deg2rad(46.0)
-export(float) var gravity = 17.35
-export(float) var jump_height = 1.084
-var jump_vel = 5.89#sqrt(2 * gravity * jump_height)
-var is_on_floor : bool = false
-onready var feet = get_node("Feet")
-
-var controlling_vehicle = false
-var vehicle = null
-
-export(float) var acceleration = 70
-export(int) var walk_speed = 6
-export(float) var _airspeed_cap = 1
-export(float) var air_control = 1
-
-# Fly
-export(int) var fly_speed = 50
-export(int) var fly_accel = 10
-var flying := false
-
-# Crouch
-var is_duck = 0
-const duck_height = .5*.6*1.8 #one half the hitbox duck height
-var duck_speed = 2.3
-var knockback_mult = 1
-var duck_progress = 0
-
-var world
-
-# Shoot
-var countdown = 0;
-export(float) var firing_cooldown = .8
-export(Vector3) var snap
-
-static func compare_floats(a, b, epsilon = 0.00001):
- return abs(a - b) <= epsilon
-
-func walk(delta):
- knockback_mult = 1.35 if is_duck else 1
- #check if is on floor
- if feet.is_colliding():
- is_on_floor = true
-
- # Duck
- if not compare_floats(duck_progress, is_duck):
- var h = $CollisionBox.get_shape().get_extents().y
- var dir = -1 if is_duck else 1
- var dh = dir*duck_speed*state.step
- var desh = duck_height if is_duck else 0.9
- if abs(h+dh - desh) < .05:
- dh = desh-h
- $CollisionBox.get_shape().set_extents(Vector3(.325,h+dh,.325))
- $CollisionBox.translate_object_local(Vector3(0,-dh/2,0))
- duck_progress = 1-(h+dh-duck_height)/(0.9-duck_height)
-
- # Input
- direction = Vector3()
- var aim: Basis = get_global_transform().basis
- if move_axis.x >= 0.5:
- direction -= aim.z
- elif move_axis.x <= -0.5:
- direction += aim.z
- if move_axis.y <= -0.5:
- direction -= aim.x
- elif move_axis.y >= 0.5:
- direction += aim.x
- direction.y = 0
- direction = direction.normalized()
-
- # Jump
- if is_on_floor:
- snap = Vector3.DOWN
- if Input.is_action_just_pressed("move_jump"):
- snap = Vector3.ZERO
- velocity.y += jump_vel
-
- velocity.y -= gravity * state.step
- if abs(velocity.y) > 1:
- snap = Vector3.ZERO
-
-
- #max walk speed
- var _speed = walk_speed if not is_duck else walk_speed*0.5
-
-
- var _temp_accel: float = acceleration
-
-
- if not is_on_floor or Input.is_action_just_pressed("move_jump"):
- _temp_accel *= air_control
- else: #apply friction
- var _cspeed = sqrt(pow(velocity.x,2)+pow(velocity.z,2))
- if _cspeed != 0:
- var walkdir = Vector2(velocity.x,velocity.z)
- var fvar = _cspeed*friction if direction.length() != 0 else _cspeed*2*friction
- #fvar *= 4 if is_duck else 1
- velocity.x -= walkdir.normalized().x*fvar*state.step
- velocity.z -= walkdir.normalized().y*fvar*state.step
-
- var projVel = Vector2(velocity.x,velocity.z).dot(Vector2(direction.x,direction.z))
- _temp_accel *= state.step
-
- if is_on_floor:
- if _speed - (projVel + _temp_accel) > 0:
- velocity.x += direction.x*_temp_accel
- velocity.z += direction.z*_temp_accel
- else:
- velocity.x += direction.x*(_speed-projVel)
- velocity.z += direction.z*(_speed-projVel)
- elif _airspeed_cap - projVel > 0:
- velocity.x += direction.x*_temp_accel
- velocity.z += direction.z*_temp_accel
-
- # clamping (to stop on slopes)
- if direction.dot(velocity) == 0:
- var _vel_clamp := 0.25
- if abs(velocity.x) < _vel_clamp:
- velocity.x = 0
- if abs(velocity.z) < _vel_clamp:
- velocity.z = 0
-
- # Move
- print(velocity)
- set_linear_velocity(velocity)
- velocity = get_linear_velocity()
-
diff --git a/godot/backup_stuff/Player.tscn b/godot/backup_stuff/Player.tscn
deleted file mode 100644
index a68f994..0000000
--- a/godot/backup_stuff/Player.tscn
+++ /dev/null
@@ -1,57 +0,0 @@
-[gd_scene load_steps=3 format=2]
-
-[ext_resource path="res://backup_stuff/Player.gd" type="Script" id=1]
-
-[sub_resource type="CylinderShape" id=1]
-height = 1.8
-radius = 0.4
-
-[node name="Player" type="RigidBody"]
-mode = 2
-mass = 80.0
-contacts_reported = 1
-contact_monitor = true
-axis_lock_angular_x = true
-axis_lock_angular_z = true
-script = ExtResource( 1 )
-mouse_sensitivity = null
-cam_path = null
-ai_follower = null
-FOV = null
-gravity = null
-jump_height = null
-acceleration = null
-walk_speed = null
-_airspeed_cap = null
-air_control = null
-fly_speed = null
-fly_accel = null
-firing_cooldown = null
-snap = null
-
-[node name="CollisionBox" type="CollisionShape" parent="."]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.875, 0 )
-shape = SubResource( 1 )
-
-[node name="Camera" type="Camera" parent="."]
-transform = Transform( 1, 0, 0, 0, 0.999973, -0.00740013, 0, 0.00740013, 0.999973, 0, 1.5, 0 )
-cull_mask = 524287
-near = 0.15
-far = 8192.0
-
-[node name="UseRay" type="RayCast" parent="Camera"]
-enabled = true
-cast_to = Vector3( 0, 0, -2.5 )
-collision_mask = 131075
-collide_with_areas = true
-
-[node name="MeleeRay" type="RayCast" parent="Camera"]
-enabled = true
-cast_to = Vector3( 0, 0, -2.5 )
-collision_mask = 262145
-collide_with_areas = true
-
-[node name="Feet" type="RayCast" parent="."]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0608446, 0 )
-enabled = true
-cast_to = Vector3( 0, -0.25, 0 )
diff --git a/godot/backup_stuff/PlayerOld.tscn b/godot/backup_stuff/PlayerOld.tscn
deleted file mode 100644
index f79339e..0000000
--- a/godot/backup_stuff/PlayerOld.tscn
+++ /dev/null
@@ -1,37 +0,0 @@
-[gd_scene load_steps=3 format=2]
-
-[ext_resource path="res://backup_stuff/player_controller.gd" type="Script" id=1]
-
-[sub_resource type="BoxShape" id=1]
-extents = Vector3( 0.325, 0.9, 0.325 )
-
-[node name="Player" type="KinematicBody" groups=["units"]]
-script = ExtResource( 1 )
-cam_path = NodePath("Camera")
-jump_height = 2.0
-fly_speed = 10
-
-[node name="CollisionBox" type="CollisionShape" parent="."]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.875, 0 )
-shape = SubResource( 1 )
-
-[node name="Camera" type="Camera" parent="."]
-transform = Transform( 1, 0, 0, 0, 0.999973, -0.00740013, 0, 0.00740013, 0.999973, 0, 1.5, 0 )
-cull_mask = 524287
-near = 0.15
-far = 8192.0
-
-[node name="UseRay" type="RayCast" parent="Camera"]
-enabled = true
-cast_to = Vector3( 0, 0, -2.5 )
-collision_mask = 131075
-collide_with_areas = true
-
-[node name="MeleeRay" type="RayCast" parent="Camera"]
-enabled = true
-cast_to = Vector3( 0, 0, -100 )
-collision_mask = 262145
-collide_with_areas = true
-
-[node name="TugPoint" type="Spatial" parent="."]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.30489, -1.57084 )
diff --git a/godot/backup_stuff/Player_Other.gd b/godot/backup_stuff/Player_Other.gd
deleted file mode 100644
index 0116d71..0000000
--- a/godot/backup_stuff/Player_Other.gd
+++ /dev/null
@@ -1,219 +0,0 @@
-extends KinematicBody
-
-
-export(String, "red", "blue") var team
-#item variables
-var can_swap = true
-var has_items = [false,false,false,false,false]
-var items = [null,null,null,null,null]
-export(String) var item0path
-export(String) var item1path
-export(String) var item2path
-export(String) var item3path
-export(String) var item4path
-var weapon
-export(int) var health = 100
-
-var unit
-
-var move_axis := Vector2()
-var velocity := Vector3()
-var direction := Vector3()
-var parentvel := Vector3()
-var tugging = false
-var tug_target
-
-export(float) var friction = 4
-export(float) var _airspeed_cap = 1
-
-var is_duck = 0
-const duck_height = .5*.6*1.8 #one half the hitbox duck height
-var duck_speed = 2.3
-var knockback_mult = 1
-var duck_progress = 0
-
-var can_switch = true
-
-
-const gravity = 9.8
-const FLOOR_MAX_ANGLE: float = deg2rad(46.0)
-const jump_constant = 12
-const walk_speed = 6
-const tug_speed = 1.5
-const acceleration = 70
-const air_control = 0.3
-const tug_force = 500
-const tug_distance = 3.5
-const push_distance = 1
-const duck_knockback_mult = 1.35
-const jump_vel = 5
-
-static func compare_floats(a, b, epsilon = 0.00001):
- return abs(a - b) <= epsilon
-
-# Called when the node enters the scene tree for the first time.
-func _ready():
- $Camera/UseRay.add_exception(self)
- $Camera/MeleeRay.add_exception(self)
-
-
-func damage(amount, attacker, point = Vector3.ZERO):
- health -= amount
- rpc("update_health",health)
- if health <= 0:
- if is_network_master():
- get_node("/root/Game/Camera").current = true
- rpc("die")
-
-
-# Called every frame. 'delta' is the elapsed time since the previous frame.
-func _process(delta):
- if is_network_master() and !get_node('/root/Game/HUD/Selection').is_visible_in_tree():
- if Input.is_action_just_pressed("use"):
- pass
- move_axis.x = Input.get_action_strength("walk_forward") - Input.get_action_strength("walk_backward")
- move_axis.y = Input.get_action_strength("strafe_right") - Input.get_action_strength("strafe_left")
- is_duck = Input.get_action_strength("duck")
- if Input.is_action_just_pressed("attack1"):
- weapon.attack()
- if Input.is_action_just_pressed("attack2"):
- weapon.attack2()
- if Input.is_action_just_pressed("slot1"):
- rpc('switch_weapon',0)
- if Input.is_action_just_pressed("slot2"):
- rpc('switch_weapon',1)
-
-func initiate_use():
- if tugging:
- tugging = false
- elif $Camera/UseRay.is_colliding():
- var type = $Camera/UseRay.get_collider().name
- match type:
- "TugArea":
- tugging = true
- tug_target = $Camera/UseRay.get_collider().get_parent()
- _:
- pass
-
-func check_tug():
- if !$Camera/UseRay.is_colliding() or !($Camera/UseRay.get_collider().name != tug_target.name):
- tugging = false
-
-func _physics_process(delta):
- if is_network_master() or (get_tree().get_network_unique_id() == 1 and get_network_master() == -1):
- if is_network_master():
- player_move(delta)
- else:
- ai_move(delta)
- rpc("_set_position", global_transform)
-
-remotesync func update_health(new_h):
- health = new_h
- if is_network_master():
- get_tree().get_root().get_node('Game/HUD/Health').text = str(health)
-
-func ai_move(delta):
- if !is_on_floor():
- velocity.y -= gravity * delta
- move_and_slide(velocity,Vector3.UP)
-
-func player_move(delta):
- # Input
- direction = Vector3()
- var aim: Basis = get_global_transform().basis
- if move_axis.x >= 0.5:
- direction -= aim.z
- elif move_axis.x <= -0.5:
- direction += aim.z
- if move_axis.y <= -0.5:
- direction -= aim.x
- elif move_axis.y >= 0.5:
- direction += aim.x
- direction.y = 0
- direction = direction.normalized()
-
- # Jump
- var snap = Vector3.ZERO
- if is_on_floor():
- snap = Vector3.DOWN
- if Input.is_action_just_pressed("jump"):
- snap = Vector3.ZERO
- velocity.y += jump_vel
- else:
- velocity += parentvel
-
- velocity.y -= gravity * delta
- if abs(velocity.y) > 1:
- snap = Vector3.ZERO
-
- #max walk speed
- var _speed = walk_speed if not is_duck else walk_speed*0.5
-
- var _temp_accel: float = acceleration
-
- if is_on_floor():
- var _cspeed = sqrt(pow(velocity.x,2)+pow(velocity.z,2))
- if _cspeed != 0:
- var walkdir = Vector2(velocity.x,velocity.z)
- var fvar = _cspeed*friction if direction.length() != 0 else _cspeed*2*friction
- #fvar *= 4 if is_duck else 1
- velocity.x -= walkdir.normalized().x*fvar*delta
- velocity.z -= walkdir.normalized().y*fvar*delta
- animationcontroller.rpc("run",_cspeed/walk_speed)
- else:
- animationcontroller.rpc("run",0)
- #rpc("_play_animation",false,"idle_single")
-
- var projVel = Vector2(velocity.x,velocity.z).dot(Vector2(direction.x,direction.z))
- _temp_accel *= delta
-
- if is_on_floor():
-
- if _speed - (projVel + _temp_accel) > 0:
- velocity.x += direction.x*_temp_accel
- velocity.z += direction.z*_temp_accel
- else:
- velocity.x += direction.x*(_speed-projVel)
- velocity.z += direction.z*(_speed-projVel)
- elif _airspeed_cap - projVel > 0:
- velocity.x += direction.x*_temp_accel
- velocity.z += direction.z*_temp_accel
-
- # clamping (to stop on slopes)
- if direction.dot(velocity) == 0:
- var _vel_clamp := 0.25
- if abs(velocity.x) < _vel_clamp:
- velocity.x = 0
- if abs(velocity.z) < _vel_clamp:
- velocity.z = 0
-
- # Move
- var moving = move_and_slide_with_snap(velocity, snap, Vector3.UP, false, 4, FLOOR_MAX_ANGLE)
- if is_on_wall():
- velocity = moving
- else:
- velocity.y = moving.y
-
-remotesync func die():
- get_node("/root/Game").update_chars_delay()
- queue_free()
-
-
-remote func _set_position(pos):
- global_transform = pos
-#set net master of this player to the id
-func _set_master(id):
- if get_network_master() == -1:
- $Camera.current = true
- $Armature/Skeleton/Cube.set_layer_mask(524288)
- for unit in get_tree().get_nodes_in_group("units"):
- if unit.get_network_master() == id:
- unit.rpc("_set_master_helper",-1)
- #nit.set_network_master(-1)
- rpc("_set_master_helper", id)
-remotesync func _set_master_helper(id):
- set_network_master(id)
- update_health(health)
- if id == -1:
- $Armature/Skeleton/Cube.set_layer_mask(1)
- get_node("/root/Game").update_chars()
diff --git a/godot/backup_stuff/Sailor.gd b/godot/backup_stuff/Sailor.gd
deleted file mode 100644
index 24b93f9..0000000
--- a/godot/backup_stuff/Sailor.gd
+++ /dev/null
@@ -1,43 +0,0 @@
-extends KinematicBody
-
-
-# Declare member variables here. Examples:
-# var a = 2
-# var b = "text"
-export(NodePath) var parent_vehicle = null
-#onready var nav_agent : NavigationAgent = get_node("NavigationAgent")
-var parent_vehicle_nav = null
-
-var destination = Vector3.ZERO
-var closest_point = Vector3.ZERO
-var direction = Vector3.ZERO
-var path = null
-var pathfinding = false
-
-const speed = 5
-var velocity = Vector3.ZERO
-
-
-# Called when the node enters the scene tree for the first time.
-func _ready():
- if parent_vehicle != null:
- parent_vehicle = get_node(parent_vehicle)
- parent_vehicle_nav = parent_vehicle.get_node("Navigation")
- #nav_agent.set_navigation(parent_vehicle_nav)
-
-func update_destination(new_dest):
- pass#nav_agent.set_target_location(new_dest)
-
-func move(delta):
- var target = Vector3.ZERO#nav_agent.get_next_location()
- var direction : Vector3 = (target - global_transform.origin).normalized() * speed
- velocity.y -= 9.8*delta
- velocity.x = direction.normalized().x*speed
- velocity.z = direction.normalized().z*speed
- #nav_agent.set_velocity(Vector3(velocity.x,0,velocity.z))
- velocity = move_and_slide(velocity, Vector3.UP, true, 4, 0.785, false)
-
-
-# Called every frame. 'delta' is the elapsed time since the previous frame.
-func _physics_process(delta):
- move(delta)
diff --git a/godot/backup_stuff/Sailor.tscn b/godot/backup_stuff/Sailor.tscn
deleted file mode 100644
index 6458fec..0000000
--- a/godot/backup_stuff/Sailor.tscn
+++ /dev/null
@@ -1,27 +0,0 @@
-[gd_scene load_steps=4 format=2]
-
-[ext_resource path="res://backup_stuff/Sailor.gd" type="Script" id=1]
-
-[sub_resource type="BoxShape" id=1]
-extents = Vector3( 0.325, 0.9, 0.325 )
-
-[sub_resource type="CubeMesh" id=2]
-size = Vector3( 0.625, 1.8, 0.625 )
-
-[node name="Sailor" type="KinematicBody"]
-collision/safe_margin = 0.01
-script = ExtResource( 1 )
-
-[node name="CollisionShape" type="CollisionShape" parent="."]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.937097, 0 )
-shape = SubResource( 1 )
-
-[node name="MeshInstance" type="MeshInstance" parent="."]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.937097, 0 )
-mesh = SubResource( 2 )
-
-[node name="NavigationAgent" type="NavigationAgent" parent="."]
-target_desired_distance = 3.52
-agent_height_offset = 0.1
-radius = 0.5
-max_speed = 5.0
diff --git a/godot/backup_stuff/player_controller.gd b/godot/backup_stuff/player_controller.gd
deleted file mode 100644
index f52decf..0000000
--- a/godot/backup_stuff/player_controller.gd
+++ /dev/null
@@ -1,282 +0,0 @@
-extends KinematicBody
-
-###################-VARIABLES-####################
-
-# Camera
-export(float) var mouse_sensitivity = 12.0
-export(NodePath) var cam_path
-export(NodePath) var ai_follower = null
-export(float) var FOV = 90.0
-var mouse_axis := Vector2()
-onready var cam: Camera = get_node(cam_path)
-# Move
-var velocity := Vector3()
-var direction := Vector3()
-var move_axis := Vector2()
-# Walk
-const FLOOR_MAX_ANGLE: float = deg2rad(46.0)
-export(float) var gravity = 17.35
-export(float) var jump_height = 1.084
-var jump_vel = 5.89#sqrt(2 * gravity * jump_height)
-
-var has_control = true
-var vehicle = null
-
-export(float) var acceleration = 70
-export(int) var walk_speed = 6
-export(float) var _airspeed_cap = 1
-export(float) var friction = 4
-export(float) var air_control = 1
-
-var grappling = false
-var grapple_length = 0
-var grapple_point = Vector3.ZERO
-
-# Fly
-export(int) var fly_speed = 50
-export(int) var fly_accel = 10
-var flying := false
-
-# Crouch
-var is_duck = 0
-const duck_height = .5*.6*1.8 #one half the hitbox duck height
-var duck_speed = 2.3
-var knockback_mult = 1
-var duck_progress = 0
-
-var world
-
-# Shoot
-var countdown = 0;
-export(float) var firing_cooldown = .8
-export(Vector3) var snap
-
-
-##################################################
-
-# Called when the node enters the scene tree
-func _ready() -> void:
- if ai_follower != null:
- ai_follower = get_node(ai_follower)
- flying = true
- Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
- cam.fov = FOV
- $Camera/UseRay.add_exception(self)
- $Camera/MeleeRay.add_exception(self)
- world = get_parent()
-
-
-# Called every frame. 'delta' is the elapsed time since the previous frame
-func _process(_delta: float) -> void:
- if Input.is_action_just_pressed("use"):
- initiate_use()
- if !has_control:
- return
- if Input.is_action_just_pressed("fly"):
- flying = !flying
- if Input.is_action_just_pressed("fire"):
- if $Camera/MeleeRay.is_colliding():
- grappling = true
- grapple_point = $Camera/MeleeRay.get_collision_point()
- grapple_length = (grapple_point-global_transform.origin).length() + 1
- elif Input.is_action_just_released("fire"):
- grappling = false
- if Input.is_action_just_pressed("altfire"):
- cam.fov = 20 if cam.fov == FOV else FOV
- if countdown > 0:
- countdown -= _delta
- move_axis.x = Input.get_action_strength("move_forward") - Input.get_action_strength("move_backward")
- move_axis.y = Input.get_action_strength("move_right") - Input.get_action_strength("move_left")
- is_duck = Input.get_action_strength("duck")
-
-
-# Called every physics tick. 'delta' is constant
-func _physics_process(delta: float) -> void:
- if !has_control:
- move_axis = Vector2.ZERO
- if flying:
- fly(delta)
- else:
- walk(delta)
-
-static func compare_floats(a, b, epsilon = 0.00001):
- return abs(a - b) <= epsilon
-
-func regain_control(gt):
- #world.add_child(self)
- global_transform.origin = gt
- has_control = true
- vehicle = null
-
-func initiate_use():
- if !has_control:
- vehicle.relinquish_control()
- return
- if $Camera/UseRay.is_colliding():
- var type = $Camera/UseRay.get_collider().name
- match type:
- "SteerArea":
- if flying or $Camera/UseRay.get_collider().get_parent().is_in_use():
- return
- has_control = false
- vehicle = $Camera/UseRay.get_collider().get_parent().take_control(self)
- var gt = global_transform.origin
- velocity = Vector3.ZERO
- #get_parent().remove_child(self)
- #vehicle.add_child(self)
- global_transform.origin = gt
- _:
- pass
-
-# Called when there is an input event
-func _input(event: InputEvent) -> void:
- if event is InputEventMouseMotion:
- mouse_axis = event.relative
- camera_rotation()
-
-
-func walk(delta: float) -> void:
- knockback_mult = 1.35 if is_duck else 1
- if grappling:
- var grapple_vec = global_transform.origin - grapple_point
- var grapple_dist = grapple_vec.length()
- if grapple_dist >= grapple_length:
- velocity -= grapple_vec.dot(velocity)*grapple_vec/(grapple_dist*grapple_dist)
- var v = velocity.abs()
- velocity -= grapple_vec.normalized()*delta*v*v/grapple_dist
- # Duck
- if not compare_floats(duck_progress, is_duck):
- var h = $CollisionBox.get_shape().get_extents().y
- var dir = -1 if is_duck else 1
- var dh = dir*duck_speed*delta
- var desh = duck_height if is_duck else 0.9
- if abs(h+dh - desh) < .05:
- dh = desh-h
- $CollisionBox.get_shape().set_extents(Vector3(.325,h+dh,.325))
- $CollisionBox.translate_object_local(Vector3(0,-dh/2,0))
- duck_progress = 1-(h+dh-duck_height)/(0.9-duck_height)
-
- # Input
- direction = Vector3()
- var aim: Basis = get_global_transform().basis
- if move_axis.x >= 0.5:
- direction -= aim.z
- elif move_axis.x <= -0.5:
- direction += aim.z
- if move_axis.y <= -0.5:
- direction -= aim.x
- elif move_axis.y >= 0.5:
- direction += aim.x
- direction.y = 0
- direction = direction.normalized()
-
- # Jump
- if is_on_floor():
- snap = Vector3.DOWN
- if Input.is_action_just_pressed("move_jump"):
- snap = Vector3.ZERO
- velocity.y += jump_vel
-
- velocity.y -= gravity * delta
- if abs(velocity.y) > 1:
- snap = Vector3.ZERO
-
-
- #max walk speed
- var _speed = walk_speed if not is_duck else walk_speed*0.5
-
-
- var _temp_accel: float = acceleration
-
-
- if not is_on_floor() or Input.is_action_just_pressed("move_jump"):
- _temp_accel *= air_control
- else: #apply friction
- var _cspeed = sqrt(pow(velocity.x,2)+pow(velocity.z,2))
- if _cspeed != 0:
- var walkdir = Vector2(velocity.x,velocity.z)
- var fvar = _cspeed*friction if direction.length() != 0 else _cspeed*2*friction
- #fvar *= 4 if is_duck else 1
- velocity.x -= walkdir.normalized().x*fvar*delta
- velocity.z -= walkdir.normalized().y*fvar*delta
-
- var projVel = Vector2(velocity.x,velocity.z).dot(Vector2(direction.x,direction.z))
- _temp_accel *= delta
-
- if is_on_floor():
- if _speed - (projVel + _temp_accel) > 0:
- velocity.x += direction.x*_temp_accel
- velocity.z += direction.z*_temp_accel
- else:
- velocity.x += direction.x*(_speed-projVel)
- velocity.z += direction.z*(_speed-projVel)
- elif _airspeed_cap - projVel > 0:
- velocity.x += direction.x*_temp_accel
- velocity.z += direction.z*_temp_accel
-
-
-
-
- # clamping (to stop on slopes)
- if direction.dot(velocity) == 0:
- var _vel_clamp := 0.25
- if abs(velocity.x) < _vel_clamp:
- velocity.x = 0
- if abs(velocity.z) < _vel_clamp:
- velocity.z = 0
-
- # Move
- var landed = is_on_floor() == false
- #remove_collision_exception_with(rigid_body)
- var moving = move_and_slide_with_snap(velocity, snap,Vector3.UP, true, 4, FLOOR_MAX_ANGLE, false)
- landed = landed and is_on_floor()
-# if is_on_wall():
-# #velocity.x = moving.x
-# #velocity.z = moving.z
-# velocity = moving
- if landed:
- velocity -= get_slide_collision(0).collider_velocity
- else:
- velocity = moving
-
-
-
-func fly(delta: float) -> void:
- # Input
- direction = Vector3()
- var aim = cam.get_global_transform().basis
- if move_axis.x >= 0.5:
- direction -= aim.z
- elif move_axis.x <= -0.5:
- direction += aim.z
- if move_axis.y <= -0.5:
- direction -= aim.x
- elif move_axis.y >= 0.5:
- direction += aim.x
- direction = direction.normalized()
-
- # Acceleration and Deacceleration
- var target: Vector3 = direction * 300
- velocity = velocity.linear_interpolate(target, fly_accel * delta)
-
- # Move
- velocity = move_and_slide(velocity, Vector3.UP, false, 4, 45.0, false)
-
-
-func camera_rotation() -> void:
- if Input.get_mouse_mode() != Input.MOUSE_MODE_CAPTURED:
- return
- if mouse_axis.length() > 0:
- var horizontal: float = -mouse_axis.x * (mouse_sensitivity / 100)
- var vertical: float = -mouse_axis.y * (mouse_sensitivity / 100)
-
- mouse_axis = Vector2()
-
- rotate_y(deg2rad(horizontal))
- cam.rotate_x(deg2rad(vertical))
-
- # Clamp mouse rotation
- var temp_rot: Vector3 = cam.rotation_degrees
- temp_rot.x = clamp(temp_rot.x, -90, 90)
- cam.rotation_degrees = temp_rot
-
diff --git a/godot/bin/playercam._gdnlib b/godot/bin/playercam._gdnlib
deleted file mode 100644
index 105b98f..0000000
--- a/godot/bin/playercam._gdnlib
+++ /dev/null
@@ -1,14 +0,0 @@
-[general]
-
-singleton=false
-load_once=true
-symbol_prefix="godot_"
-reloadable=true
-
-[entry]
-
-X11.64="res://bin/x11/libplayercam.so"
-
-[dependencies]
-
-X11.64=[ ]
diff --git a/godot/bin/playercam.gdns b/godot/bin/playercam.gdns
deleted file mode 100644
index 46fa989..0000000
--- a/godot/bin/playercam.gdns
+++ /dev/null
@@ -1,8 +0,0 @@
-[gd_resource type="NativeScript" load_steps=2 format=2]
-
-[ext_resource path="res://bin/playercontroller.gdnlib" type="GDNativeLibrary" id=1]
-
-[resource]
-resource_name = "playercam"
-class_name = "PlayerCam"
-library = ExtResource( 1 )
diff --git a/godot/bin/playercontroller.gdnlib b/godot/bin/playercontroller.gdnlib
deleted file mode 100644
index 37c30d5..0000000
--- a/godot/bin/playercontroller.gdnlib
+++ /dev/null
@@ -1,14 +0,0 @@
-[general]
-
-singleton=false
-load_once=false
-symbol_prefix="godot_"
-reloadable=true
-
-[entry]
-
-X11.64="res://bin/x11/libplayercontroller.so"
-
-[dependencies]
-
-X11.64=[ ]
diff --git a/godot/bin/playercontroller.gdns b/godot/bin/playercontroller.gdns
deleted file mode 100644
index eaf0649..0000000
--- a/godot/bin/playercontroller.gdns
+++ /dev/null
@@ -1,8 +0,0 @@
-[gd_resource type="NativeScript" load_steps=2 format=2]
-
-[ext_resource path="res://bin/playercontroller.gdnlib" type="GDNativeLibrary" id=1]
-
-[resource]
-resource_name = "playercontroller"
-class_name = "PlayerController"
-library = ExtResource( 1 )
diff --git a/godot/bin/x11/libnetmachine.so b/godot/bin/x11/libnetmachine.so
deleted file mode 100755
index b8cc579..0000000
--- a/godot/bin/x11/libnetmachine.so
+++ /dev/null
Binary files differ
diff --git a/godot/bin/x11/libplayercam.so b/godot/bin/x11/libplayercam.so
deleted file mode 100755
index b48d39a..0000000
--- a/godot/bin/x11/libplayercam.so
+++ /dev/null
Binary files differ
diff --git a/godot/bin/x11/libplayercontroller.so b/godot/bin/x11/libplayercontroller.so
deleted file mode 100755
index 69262c1..0000000
--- a/godot/bin/x11/libplayercontroller.so
+++ /dev/null
Binary files differ
diff --git a/godot/export_presets.cfg b/godot/export_presets.cfg
index 1532051..145666c 100644
--- a/godot/export_presets.cfg
+++ b/godot/export_presets.cfg
@@ -7,7 +7,7 @@ custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
-export_path="./boats.x86_64"
+export_path="../../../boats.x86_64"
script_export_mode=1
script_encryption_key=""
diff --git a/godot/libnetmachine.so b/godot/libnetmachine.so
deleted file mode 100644
index b8cc579..0000000
--- a/godot/libnetmachine.so
+++ /dev/null
Binary files differ
diff --git a/godot/maps/Main.tscn b/godot/maps/Main.tscn
index 9e7ea06..c84ea11 100644
--- a/godot/maps/Main.tscn
+++ b/godot/maps/Main.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=32 format=2]
+[gd_scene load_steps=57 format=2]
[ext_resource path="res://scripts/World.gd" type="Script" id=1]
[ext_resource path="res://scenes/machines/Cannon.tscn" type="PackedScene" id=2]
@@ -16,6 +16,10 @@
[ext_resource path="res://scenes/vehicles/Airplane.tscn" type="PackedScene" id=14]
[ext_resource path="res://scenes/weapons/hands.gd" type="Script" id=15]
[ext_resource path="res://scenes/ballistics/Cannonball.tscn" type="PackedScene" id=16]
+[ext_resource path="res://scenes/weapons/pistol.gd" type="Script" id=17]
+[ext_resource path="res://scenes/weapons/rockets.gd" type="Script" id=18]
+[ext_resource path="res://scenes/weapons/grapplinghook.gd" type="Script" id=19]
+[ext_resource path="res://scenes/worldprops/ball_bucket.tscn" type="PackedScene" id=20]
[sub_resource type="PhysicsMaterial" id=17]
resource_local_to_scene = true
@@ -25,38 +29,122 @@ rough = true
resource_local_to_scene = true
script = ExtResource( 15 )
+[sub_resource type="Resource" id=21]
+resource_local_to_scene = true
+script = ExtResource( 17 )
+
+[sub_resource type="Resource" id=22]
+resource_local_to_scene = true
+script = ExtResource( 18 )
+
+[sub_resource type="Resource" id=41]
+resource_local_to_scene = true
+script = ExtResource( 19 )
+
[sub_resource type="PhysicsMaterial" id=18]
resource_local_to_scene = true
rough = true
-[sub_resource type="Resource" id=21]
+[sub_resource type="Resource" id=23]
resource_local_to_scene = true
script = ExtResource( 15 )
+[sub_resource type="Resource" id=24]
+resource_local_to_scene = true
+script = ExtResource( 17 )
+
+[sub_resource type="Resource" id=25]
+resource_local_to_scene = true
+script = ExtResource( 18 )
+
+[sub_resource type="Resource" id=42]
+resource_local_to_scene = true
+script = ExtResource( 19 )
+
[sub_resource type="PhysicsMaterial" id=19]
resource_local_to_scene = true
rough = true
-[sub_resource type="Resource" id=22]
+[sub_resource type="Resource" id=26]
resource_local_to_scene = true
script = ExtResource( 15 )
-[sub_resource type="Resource" id=23]
+[sub_resource type="Resource" id=27]
+resource_local_to_scene = true
+script = ExtResource( 17 )
+
+[sub_resource type="Resource" id=28]
+resource_local_to_scene = true
+script = ExtResource( 18 )
+
+[sub_resource type="Resource" id=43]
+resource_local_to_scene = true
+script = ExtResource( 19 )
+
+[sub_resource type="Resource" id=29]
resource_local_to_scene = true
script = ExtResource( 15 )
-[sub_resource type="Resource" id=24]
+[sub_resource type="Resource" id=30]
+resource_local_to_scene = true
+script = ExtResource( 17 )
+
+[sub_resource type="Resource" id=31]
+resource_local_to_scene = true
+script = ExtResource( 18 )
+
+[sub_resource type="Resource" id=44]
+resource_local_to_scene = true
+script = ExtResource( 19 )
+
+[sub_resource type="Resource" id=32]
resource_local_to_scene = true
script = ExtResource( 15 )
-[sub_resource type="Resource" id=25]
+[sub_resource type="Resource" id=33]
+resource_local_to_scene = true
+script = ExtResource( 17 )
+
+[sub_resource type="Resource" id=34]
+resource_local_to_scene = true
+script = ExtResource( 18 )
+
+[sub_resource type="Resource" id=45]
+resource_local_to_scene = true
+script = ExtResource( 19 )
+
+[sub_resource type="Resource" id=35]
resource_local_to_scene = true
script = ExtResource( 15 )
-[sub_resource type="Resource" id=26]
+[sub_resource type="Resource" id=36]
+resource_local_to_scene = true
+script = ExtResource( 17 )
+
+[sub_resource type="Resource" id=37]
+resource_local_to_scene = true
+script = ExtResource( 18 )
+
+[sub_resource type="Resource" id=46]
+resource_local_to_scene = true
+script = ExtResource( 19 )
+
+[sub_resource type="Resource" id=38]
resource_local_to_scene = true
script = ExtResource( 15 )
+[sub_resource type="Resource" id=39]
+resource_local_to_scene = true
+script = ExtResource( 17 )
+
+[sub_resource type="Resource" id=40]
+resource_local_to_scene = true
+script = ExtResource( 18 )
+
+[sub_resource type="Resource" id=47]
+resource_local_to_scene = true
+script = ExtResource( 19 )
+
[sub_resource type="NavigationMesh" id=14]
vertices = PoolVector3Array( 7.53034, -0.161953, -20.3654, 6.53034, -0.411953, -23.3654, 2.53034, 0.338047, -21.3654, -3.46966, 0.588047, -19.3654, 7.53034, -0.161953, -20.3654, 2.53034, 0.338047, -21.3654, -3.46966, -0.161953, -22.3654, 1.53034, 1.83805, -16.3654, 5.53034, 2.08805, -15.3654, 4.53034, 1.58805, -17.3654, 6.53034, 2.58805, -11.3654, 13.5303, 1.83805, -10.3654, 12.5303, 1.33805, -14.3654, 5.53034, 2.08805, -15.3654, -16.4697, -1.41195, -12.3654, -16.4697, -0.911953, -10.3654, -12.4697, -0.411953, -11.3654, -16.4697, -1.41195, -12.3654, -12.4697, -0.411953, -11.3654, -16.4697, -1.91195, -14.3654, -18.4697, -2.16195, -12.3654, -16.4697, -1.41195, -12.3654, -16.4697, -1.91195, -14.3654, -23.4697, -1.91195, -14.3654, -19.9697, -2.41195, -14.3654, -23.4697, -1.91195, -14.3654, -23.4697, -0.411953, -5.36539, -17.4697, -1.16195, -8.36539, -18.4697, -2.16195, -12.3654, -9.46966, 3.83805, -3.36539, -9.46966, 3.83805, -2.36539, -8.46966, 3.83805, -2.36539, -7.46966, 3.83805, -4.36539, -9.46966, 3.83805, -4.36539, -9.46966, 3.83805, -3.36539, -8.46966, 3.83805, -2.36539, 17.5303, 1.58805, 0.634615, 12.5303, 2.58805, -0.365385, 10.5303, 3.08805, 0.634615, 9.53034, 3.08805, 2.63461, 12.5303, 2.08805, 9.63461, 16.5303, 1.33805, 8.63461, 17.0303, 1.58805, 4.63461, -7.46966, 3.83805, -4.36539, -8.46966, 3.83805, -2.36539, -7.46966, 3.83805, -1.36539, -5.46966, 3.33805, -7.36539, 0.530344, 3.83805, -9.36539, 2.53034, 3.83805, -9.36539, 1.53034, 3.83805, -13.3654, -10.4697, 2.58805, -9.36539, -9.46966, 3.08805, -6.36539, -7.46966, 3.33805, -6.36539, -5.46966, 3.33805, -7.36539, -7.46966, 2.08805, -14.3654, -6.46966, 3.08805, -10.8654, 1.53034, 3.58805, -4.36539, 2.53034, 3.83805, -6.36539, 0.530344, 3.83805, -9.36539, -5.46966, 3.33805, -7.36539, -0.469656, 3.33805, 4.63461, -2.46966, 3.33805, 3.63461, -1.46966, 2.83805, 6.63461, 0.530344, 2.83805, 10.6346, 1.53034, 3.58805, -4.36539, -5.46966, 3.33805, -7.36539, -7.46966, 3.83805, -1.36539, -2.46966, 3.33805, 3.63461, -0.469656, 3.33805, 4.63461, 4.53034, 3.33805, 0.634615, -5.46966, 3.33805, -7.36539, -7.46966, 3.33805, -6.36539, -7.46966, 3.83805, -4.36539, 4.53034, 3.33805, 0.634615, 2.53034, 3.83805, -3.36539, 1.53034, 3.58805, -4.36539, 16.5303, 1.58805, -7.36539, 14.5303, 2.08805, -7.36539, 12.5303, 2.58805, -0.365385, 17.5303, 1.58805, 0.634615, 0.530344, 3.83805, -9.36539, 1.53034, 3.83805, -13.3654, -4.46966, 3.83805, -13.3654, -5.46966, 3.33805, -7.36539, -1.46966, 2.83805, 6.63461, -3.46966, 3.33805, 4.63461, -8.46966, 2.83805, 6.63461, -3.46966, 2.08805, 15.6346, 0.530344, 2.83805, 10.6346, -2.46966, 1.83805, 16.6346, 4.53034, 1.83805, 16.6346, 0.530344, 2.83805, 10.6346, -3.46966, 2.08805, 15.6346, 4.53034, 3.33805, 0.634615, -0.469656, 3.33805, 4.63461, 1.53034, 3.08805, 6.63461, 9.53034, 3.08805, 2.63461, 10.5303, 3.08805, 0.634615, 5.53034, 3.33805, 4.63461, -8.46966, 3.33805, -0.365385, -8.46966, 3.83805, -2.36539, -9.46966, 3.83805, -2.36539, -11.4697, 3.33805, -3.36539, -9.46966, 3.83805, -3.36539, -9.46966, 3.83805, -4.36539, -5.46966, 1.33805, 17.6346, -2.46966, 1.83805, 16.6346, -3.46966, 2.08805, 15.6346, -6.46966, 1.58805, 15.6346, -8.46966, 2.83805, 6.63461, -3.46966, 3.33805, 4.63461, -2.46966, 3.33805, 3.63461, -7.46966, 3.83805, -1.36539, -8.46966, 3.33805, -0.365385, -11.4697, 2.58805, 5.63461, -6.46966, 1.58805, 15.6346, -3.46966, 2.08805, 15.6346, -7.46966, 1.58805, 13.6346, -11.4697, 3.33805, -3.36539, -9.46966, 3.83805, -4.36539, -9.46966, 3.08805, -6.36539, -10.4697, 2.58805, -9.36539, -14.4697, 1.83805, -8.36539, -13.4697, 2.58805, -5.36539, -8.46966, 3.33805, -0.365385, -9.46966, 3.83805, -2.36539, -11.4697, 3.33805, -3.36539, -20.4697, 1.58805, -1.36539, -20.4697, 1.08805, 3.63461, -17.4697, 2.08805, 1.63461, -18.4697, 2.08805, -3.36539, -11.4697, 1.08805, 15.6346, -6.46966, 1.58805, 15.6346, -7.46966, 1.58805, 13.6346, -11.4697, 1.83805, 12.6346, -24.4697, 1.58805, -3.36539, -25.4697, 1.58805, -13.3654, -27.4697, 1.58805, -13.3654, -28.4697, 1.58805, -2.36539, -14.4697, 2.33805, 4.63461, -14.4697, 1.33805, 11.6346, -11.4697, 2.08805, 7.63461, -11.4697, 2.58805, 5.63461, -17.4697, 2.08805, 1.63461, -14.4697, 2.33805, 4.63461, -11.4697, 2.58805, 5.63461, -8.46966, 3.33805, -0.365385, -11.4697, 3.33805, -3.36539, -18.4697, 2.08805, -3.36539, -13.4697, 2.58805, -5.36539, -16.4697, 1.58805, -6.36539, -18.4697, 2.08805, -3.36539, -11.4697, 3.33805, -3.36539, -11.4697, 1.83805, 12.6346, -7.46966, 1.58805, 13.6346, -8.46966, 2.58805, 8.63461, -11.4697, 2.08805, 7.63461, -14.4697, 1.33805, 11.6346, -24.4697, 1.58805, -3.36539, -28.4697, 1.58805, -2.36539, -20.4697, 1.58805, -1.36539, -18.4697, 2.08805, -3.36539, 4.53034, 4.33805, -5.36539, 1.53034, 3.58805, -4.36539, 2.53034, 3.83805, -3.36539, 4.53034, 4.33805, -3.36539, 6.53034, 4.08805, -7.36539, 4.53034, 4.33805, -5.36539, 4.53034, 4.33805, -3.36539, 6.53034, 4.08805, -7.36539, 4.53034, 3.83805, -13.3654, 1.53034, 3.83805, -13.3654, 2.53034, 3.83805, -9.36539, 4.53034, 4.33805, -5.36539, 4.53034, 4.33805, -3.36539, 4.53034, 4.08805, -1.36539, 9.53034, 4.08805, -2.36539, 10.5303, 3.58805, -8.36539, 6.53034, 4.08805, -7.36539, 3.53034, 2.83805, 8.63461, 5.53034, 2.33805, 12.6346, 9.53034, 2.33805, 10.6346, 8.53034, 2.83805, 6.63461, -19.4697, -0.661953, 7.63461, -19.4697, -1.41195, 10.6346, -17.4697, -0.911953, 10.6346, -16.4697, 0.088047, 13.6346, -12.4697, 0.338047, 16.6346, -13.4697, 0.838047, 13.6346 )
polygons = [ PoolIntArray( 2, 1, 0 ), PoolIntArray( 6, 5, 3 ), PoolIntArray( 3, 5, 4 ), PoolIntArray( 7, 9, 8 ), PoolIntArray( 13, 12, 10 ), PoolIntArray( 10, 12, 11 ), PoolIntArray( 16, 15, 14 ), PoolIntArray( 19, 18, 17 ), PoolIntArray( 21, 20, 22 ), PoolIntArray( 22, 20, 24 ), PoolIntArray( 24, 20, 23 ), PoolIntArray( 28, 27, 25 ), PoolIntArray( 25, 27, 26 ), PoolIntArray( 31, 30, 29 ), PoolIntArray( 34, 33, 35 ), PoolIntArray( 35, 33, 32 ), PoolIntArray( 38, 37, 39 ), PoolIntArray( 39, 37, 36 ), PoolIntArray( 39, 36, 42 ), PoolIntArray( 39, 42, 41 ), PoolIntArray( 39, 41, 40 ), PoolIntArray( 44, 43, 45 ), PoolIntArray( 45, 43, 46 ), PoolIntArray( 49, 48, 47 ), PoolIntArray( 52, 51, 53 ), PoolIntArray( 53, 51, 50 ), PoolIntArray( 53, 50, 55 ), PoolIntArray( 55, 50, 54 ), PoolIntArray( 57, 56, 58 ), PoolIntArray( 58, 56, 59 ), PoolIntArray( 61, 60, 62 ), PoolIntArray( 62, 60, 63 ), PoolIntArray( 68, 67, 69 ), PoolIntArray( 69, 67, 64 ), PoolIntArray( 64, 67, 66 ), PoolIntArray( 64, 66, 65 ), PoolIntArray( 71, 70, 72 ), PoolIntArray( 73, 75, 74 ), PoolIntArray( 77, 76, 78 ), PoolIntArray( 78, 76, 79 ), PoolIntArray( 81, 80, 82 ), PoolIntArray( 82, 80, 83 ), PoolIntArray( 84, 88, 85 ), PoolIntArray( 85, 88, 86 ), PoolIntArray( 86, 88, 87 ), PoolIntArray( 92, 91, 89 ), PoolIntArray( 89, 91, 90 ), PoolIntArray( 96, 98, 97 ), PoolIntArray( 97, 98, 93 ), PoolIntArray( 93, 98, 95 ), PoolIntArray( 93, 95, 94 ), PoolIntArray( 101, 100, 99 ), PoolIntArray( 104, 103, 102 ), PoolIntArray( 106, 105, 107 ), PoolIntArray( 107, 105, 108 ), PoolIntArray( 110, 109, 111 ), PoolIntArray( 111, 109, 114 ), PoolIntArray( 111, 114, 113 ), PoolIntArray( 111, 113, 112 ), PoolIntArray( 117, 116, 115 ), PoolIntArray( 119, 118, 120 ), PoolIntArray( 120, 118, 123 ), PoolIntArray( 120, 123, 121 ), PoolIntArray( 121, 123, 122 ), PoolIntArray( 126, 125, 124 ), PoolIntArray( 130, 129, 127 ), PoolIntArray( 127, 129, 128 ), PoolIntArray( 134, 133, 131 ), PoolIntArray( 131, 133, 132 ), PoolIntArray( 136, 135, 137 ), PoolIntArray( 137, 135, 138 ), PoolIntArray( 142, 141, 139 ), PoolIntArray( 139, 141, 140 ), PoolIntArray( 144, 143, 145 ), PoolIntArray( 145, 143, 146 ), PoolIntArray( 146, 143, 147 ), PoolIntArray( 147, 143, 148 ), PoolIntArray( 149, 152, 150 ), PoolIntArray( 150, 152, 151 ), PoolIntArray( 157, 156, 153 ), PoolIntArray( 153, 156, 155 ), PoolIntArray( 153, 155, 154 ), PoolIntArray( 161, 160, 158 ), PoolIntArray( 158, 160, 159 ), PoolIntArray( 164, 163, 165 ), PoolIntArray( 165, 163, 162 ), PoolIntArray( 168, 167, 166 ), PoolIntArray( 171, 170, 172 ), PoolIntArray( 172, 170, 169 ), PoolIntArray( 172, 169, 173 ), PoolIntArray( 175, 174, 176 ), PoolIntArray( 176, 174, 178 ), PoolIntArray( 176, 178, 177 ), PoolIntArray( 180, 179, 181 ), PoolIntArray( 181, 179, 182 ), PoolIntArray( 185, 184, 183 ), PoolIntArray( 188, 187, 186 ) ]
@@ -105,6 +193,15 @@ transform = Transform( -0.866025, 0, -0.5, 0, 3.5, 0, 0.5, 0, -0.866025, 6.42983
[node name="Runway" parent="WORLDGEO" instance=ExtResource( 13 )]
transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 32.5651, 0, 36.5712 )
+[node name="Runway2" parent="WORLDGEO" instance=ExtResource( 13 )]
+transform = Transform( -1, 0, -1.50996e-07, 0, 1, 0, 1.50996e-07, 0, -1, -13.8197, 32.8116, 41.3509 )
+
+[node name="Runway3" parent="WORLDGEO" instance=ExtResource( 13 )]
+transform = Transform( 1.94707e-07, 0, -1, 0, 1, 0, 1, 0, 1.94707e-07, 49.6462, 19.1714, 35.7231 )
+
+[node name="ball_bucket" parent="WORLDGEO" instance=ExtResource( 20 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.216192, 3.60375, -12.2556 )
+
[node name="MACHINES" type="Spatial" parent="."]
[node name="Cannon" parent="MACHINES" instance=ExtResource( 2 )]
@@ -136,43 +233,145 @@ transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -49.9367, 0.0469036, -33.3132
[node name="Cannonball" parent="BALLISTICS" instance=ExtResource( 16 )]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 3.1422, 4.06477, -6.08684 )
+[node name="Cannonball2" parent="BALLISTICS" instance=ExtResource( 16 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.303401, 4.06477, -12.7643 )
+
+[node name="Cannonball3" parent="BALLISTICS" instance=ExtResource( 16 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.303401, 4.06477, -12.2326 )
+
+[node name="Cannonball4" parent="BALLISTICS" instance=ExtResource( 16 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.162657, 4.06477, -12.2326 )
+
+[node name="Cannonball5" parent="BALLISTICS" instance=ExtResource( 16 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.162657, 4.06477, -11.7252 )
+
+[node name="Cannonball6" parent="BALLISTICS" instance=ExtResource( 16 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.369819, 4.06477, -11.7252 )
+
+[node name="Cannonball7" parent="BALLISTICS" instance=ExtResource( 16 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.792434, 4.06477, -11.7252 )
+
+[node name="Cannonball8" parent="BALLISTICS" instance=ExtResource( 16 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.792434, 4.06477, -12.1919 )
+
+[node name="Cannonball9" parent="BALLISTICS" instance=ExtResource( 16 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.792434, 4.06477, -12.7322 )
+
+[node name="Cannonball10" parent="BALLISTICS" instance=ExtResource( 16 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.206795, 4.06477, -12.7322 )
+
+[node name="Cannonball11" parent="BALLISTICS" instance=ExtResource( 16 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.303401, 4.47363, -12.7643 )
+
+[node name="Cannonball12" parent="BALLISTICS" instance=ExtResource( 16 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.303401, 4.47363, -12.2326 )
+
+[node name="Cannonball13" parent="BALLISTICS" instance=ExtResource( 16 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.162657, 4.47363, -12.2326 )
+
+[node name="Cannonball14" parent="BALLISTICS" instance=ExtResource( 16 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.162657, 4.47363, -11.7252 )
+
+[node name="Cannonball15" parent="BALLISTICS" instance=ExtResource( 16 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.369819, 4.47363, -11.7252 )
+
+[node name="Cannonball16" parent="BALLISTICS" instance=ExtResource( 16 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.792434, 4.47363, -11.7252 )
+
+[node name="Cannonball17" parent="BALLISTICS" instance=ExtResource( 16 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.792434, 4.47363, -12.1919 )
+
+[node name="Cannonball18" parent="BALLISTICS" instance=ExtResource( 16 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.792434, 4.47363, -12.7322 )
+
+[node name="Cannonball19" parent="BALLISTICS" instance=ExtResource( 16 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.206795, 4.47363, -12.7322 )
+
+[node name="Cannonball20" parent="BALLISTICS" instance=ExtResource( 16 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.303401, 4.92571, -12.7643 )
+
+[node name="Cannonball21" parent="BALLISTICS" instance=ExtResource( 16 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.303401, 4.92571, -12.2326 )
+
+[node name="Cannonball22" parent="BALLISTICS" instance=ExtResource( 16 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.162657, 4.92571, -12.2326 )
+
+[node name="Cannonball23" parent="BALLISTICS" instance=ExtResource( 16 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.162657, 4.92571, -11.7252 )
+
+[node name="Cannonball24" parent="BALLISTICS" instance=ExtResource( 16 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.369819, 4.92571, -11.7252 )
+
+[node name="Cannonball25" parent="BALLISTICS" instance=ExtResource( 16 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.792434, 4.92571, -11.7252 )
+
+[node name="Cannonball26" parent="BALLISTICS" instance=ExtResource( 16 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.792434, 4.92571, -12.1919 )
+
+[node name="Cannonball27" parent="BALLISTICS" instance=ExtResource( 16 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.792434, 4.92571, -12.7322 )
+
+[node name="Cannonball28" parent="BALLISTICS" instance=ExtResource( 16 )]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.206795, 4.92571, -12.7322 )
+
[node name="PLAYERS" type="Spatial" parent="."]
[node name="Player" parent="PLAYERS" instance=ExtResource( 5 )]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 28.8794, 2.55194, 2.65124 )
physics_material_override = SubResource( 17 )
-weapon = SubResource( 20 )
+weapon_slot1 = SubResource( 20 )
+weapon_slot2 = SubResource( 21 )
+weapon_slot3 = SubResource( 22 )
+weapon_slot4 = SubResource( 41 )
[node name="Player2" parent="PLAYERS" instance=ExtResource( 5 )]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -10.1844, 3.62129, 0.930942 )
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 49.2067, 27.526, 45.9431 )
physics_material_override = SubResource( 18 )
team = "BLUE"
-weapon = SubResource( 21 )
+weapon_slot1 = SubResource( 23 )
+weapon_slot2 = SubResource( 24 )
+weapon_slot3 = SubResource( 25 )
+weapon_slot4 = SubResource( 42 )
[node name="Player3" parent="PLAYERS" instance=ExtResource( 5 )]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.426252, 5.22026, -3.48068 )
physics_material_override = SubResource( 19 )
-weapon = SubResource( 22 )
+weapon_slot1 = SubResource( 26 )
+weapon_slot2 = SubResource( 27 )
+weapon_slot3 = SubResource( 28 )
+weapon_slot4 = SubResource( 43 )
[node name="Player5" parent="PLAYERS" instance=ExtResource( 5 )]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -1.86776, 6.37388, -1.22525 )
physics_material_override = SubResource( 19 )
-weapon = SubResource( 23 )
+weapon_slot1 = SubResource( 29 )
+weapon_slot2 = SubResource( 30 )
+weapon_slot3 = SubResource( 31 )
+weapon_slot4 = SubResource( 44 )
[node name="Player7" parent="PLAYERS" instance=ExtResource( 5 )]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -1.11742, 6.37388, 0.816121 )
physics_material_override = SubResource( 19 )
-weapon = SubResource( 24 )
+weapon_slot1 = SubResource( 32 )
+weapon_slot2 = SubResource( 33 )
+weapon_slot3 = SubResource( 34 )
+weapon_slot4 = SubResource( 45 )
[node name="Player8" parent="PLAYERS" instance=ExtResource( 5 )]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.888317, 6.37388, 1.86328 )
physics_material_override = SubResource( 19 )
-weapon = SubResource( 25 )
+weapon_slot1 = SubResource( 35 )
+weapon_slot2 = SubResource( 36 )
+weapon_slot3 = SubResource( 37 )
+weapon_slot4 = SubResource( 46 )
[node name="Player9" parent="PLAYERS" instance=ExtResource( 5 )]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.819816, 6.37388, 2.89708 )
physics_material_override = SubResource( 19 )
-weapon = SubResource( 26 )
+weapon_slot1 = SubResource( 38 )
+weapon_slot2 = SubResource( 39 )
+weapon_slot3 = SubResource( 40 )
+weapon_slot4 = SubResource( 47 )
[node name="worldnavmesh" type="NavigationMeshInstance" parent="."]
navmesh = SubResource( 14 )
@@ -206,7 +405,7 @@ visible = false
mesh = SubResource( 16 )
[node name="DEFAULTCAM" type="Camera" parent="."]
-transform = Transform( -0.507541, -0.600446, 0.617953, -0.0365804, 0.731562, 0.680792, -0.860851, 0.322925, -0.393262, 12.1857, 17.0183, -13.3083 )
+transform = Transform( -0.507541, -0.344177, 0.789902, -0.0365804, 0.924536, 0.379336, -0.860851, 0.163633, -0.48183, 12.1857, 17.0183, -13.3083 )
current = true
far = 8192.0
diff --git a/godot/meshes/laetine.obj b/godot/meshes/laetine.obj
deleted file mode 100644
index b55e973..0000000
--- a/godot/meshes/laetine.obj
+++ /dev/null
@@ -1,346 +0,0 @@
-# Blender v2.92.0 OBJ File: 'laetine.blend'
-# www.blender.org
-mtllib laetine.mtl
-o Cube
-v 16.000000 0.982453 -1.912256
-v 16.000000 -0.682236 -1.641230
-v 16.000000 0.982453 1.882782
-v 16.000000 -0.682236 1.610786
-v -16.000000 1.455369 -0.617766
-v -16.000000 0.897865 -0.530011
-v -16.000000 1.455369 0.557376
-v -16.000000 0.897865 0.476983
-v 0.000000 -0.941928 -2.142920
-v 0.000000 0.982453 2.500000
-v 0.000000 -0.941928 2.141643
-v 0.000000 0.982453 -2.500000
-v 8.000000 -0.941928 2.141643
-v 8.000000 0.982453 -2.500000
-v 8.000000 -0.941928 -2.142920
-v 8.000000 0.982453 2.500000
-v -8.000000 -0.728505 -1.831360
-v -8.000000 0.982453 2.138350
-v -8.000000 -0.728505 1.831740
-v -8.000000 0.982453 -2.136415
-v -12.000000 -0.389587 -1.452316
-v -12.000000 1.142182 1.675897
-v -12.000000 -0.389587 1.435458
-v -12.000000 1.142182 -1.694078
-v -3.851343 -0.941928 2.033623
-v -3.851343 0.982453 -2.377693
-v -3.851343 -0.941928 -2.038114
-v -3.851343 0.982453 2.373943
-v 4.000000 -0.941928 -2.142920
-v 4.000000 0.982453 2.500000
-v 4.000000 -0.941928 2.141643
-v 4.000000 0.982453 -2.500000
-v 12.000000 -0.941928 2.009462
-v 12.000000 0.982453 -2.355201
-v 12.000000 -0.941928 -2.019429
-v 12.000000 0.982453 2.346436
-v 12.000000 0.982453 2.078222
-v 8.000000 0.982453 2.213053
-v 16.000000 0.982453 1.627357
-v -16.000000 1.455369 0.353375
-v 0.000000 0.982453 2.194380
-v -12.000000 1.142182 1.347721
-v -8.000000 0.982453 1.851137
-v -3.851343 0.982453 2.072511
-v 4.000000 0.982453 2.234215
-v -8.000000 0.982453 -1.893030
-v -16.000000 1.455369 -0.446854
-v 16.000000 0.982453 -1.675475
-v -12.000000 1.142182 -1.478664
-v 4.000000 0.982453 -2.174777
-v 8.000000 0.982453 -2.176962
-v 0.000000 0.982453 -2.083515
-v -3.851343 0.982453 -1.994098
-v 12.000000 0.982453 -2.031110
-v -13.354506 1.478747 -0.894318
-v -13.287239 1.483561 0.789345
-v 15.634655 0.982453 -1.716910
-v 15.633256 0.982453 1.693027
-v 12.000000 -0.355757 1.945383
-v 8.000000 -0.355757 2.019444
-v 0.000000 -0.355757 2.065702
-v -12.000000 -0.355757 1.268733
-v -8.000000 -0.355757 1.722697
-v -3.851343 -0.355757 1.950985
-v 4.000000 -0.355757 2.038746
-v -8.000000 -0.355757 -1.764913
-v -12.000000 -0.355757 -1.391772
-v 4.000000 -0.355757 -1.982917
-v 8.000000 -0.355757 -1.984911
-v 0.000000 -0.355757 -1.961124
-v -3.851343 -0.355757 -1.876955
-v 12.000000 -0.355757 -1.900816
-v -13.354506 0.806437 -0.838368
-v -13.287239 0.811252 0.746481
-v 15.634655 -0.450049 -1.616035
-v 15.633256 -0.355757 1.593773
-v -3.851343 -1.123510 0.081178
-v 4.000000 -1.123510 0.081178
-v -8.000000 -0.910087 0.081178
-v 16.000000 -0.863819 0.081178
-v -12.000000 -0.571169 0.081178
-v 0.000000 -1.123510 0.081178
-v 8.000000 -1.123510 0.081178
-v -16.000000 0.716283 0.081178
-v 12.000000 -1.123510 0.081178
-vt 0.843750 0.500000
-vt 0.875000 0.500000
-vt 0.875000 0.536360
-vt 0.872226 0.536077
-vt 0.843750 0.533173
-vt 0.375000 0.968750
-vt 0.625000 0.968750
-vt 0.625000 1.000000
-vt 0.375000 1.000000
-vt 0.375000 0.000000
-vt 0.625000 0.000000
-vt 0.625000 0.043399
-vt 0.625000 0.213640
-vt 0.625000 0.250000
-vt 0.375000 0.250000
-vt 0.375000 0.065260
-vt 0.343750 0.500000
-vt 0.375000 0.500000
-vt 0.375000 0.625745
-vt 0.343750 0.625777
-vt 0.625000 0.500000
-vt 0.625000 0.537350
-vt 0.625000 0.694368
-vt 0.625000 0.750000
-vt 0.375000 0.750000
-vt 0.375000 0.468750
-vt 0.625000 0.468750
-vt 0.375000 0.344911
-vt 0.625000 0.344911
-vt 0.625000 0.375000
-vt 0.375000 0.375000
-vt 0.219911 0.500000
-vt 0.250000 0.500000
-vt 0.250000 0.629194
-vt 0.219911 0.630768
-vt 0.375000 0.843750
-vt 0.625000 0.843750
-vt 0.625000 0.875000
-vt 0.375000 0.875000
-vt 0.718750 0.500000
-vt 0.750000 0.500000
-vt 0.750000 0.532123
-vt 0.718750 0.532990
-vt 0.656250 0.500000
-vt 0.687500 0.500000
-vt 0.687500 0.536579
-vt 0.656250 0.535812
-vt 0.375000 0.781250
-vt 0.625000 0.781250
-vt 0.625000 0.812500
-vt 0.375000 0.812500
-vt 0.375000 0.406250
-vt 0.625000 0.406250
-vt 0.625000 0.437500
-vt 0.375000 0.437500
-vt 0.281250 0.500000
-vt 0.312500 0.500000
-vt 0.312500 0.626716
-vt 0.281250 0.627955
-vt 0.156250 0.500000
-vt 0.187500 0.500000
-vt 0.187500 0.633207
-vt 0.156250 0.638918
-vt 0.375000 0.281250
-vt 0.625000 0.281250
-vt 0.625000 0.312500
-vt 0.375000 0.312500
-vt 0.375000 0.905089
-vt 0.625000 0.905089
-vt 0.625000 0.937500
-vt 0.375000 0.937500
-vt 0.780089 0.500000
-vt 0.812500 0.500000
-vt 0.812500 0.545259
-vt 0.780089 0.531167
-vt 0.125000 0.500000
-vt 0.125000 0.684740
-vt 0.631189 0.537046
-vt 0.718750 0.698992
-vt 0.750000 0.705949
-vt 0.750000 0.750000
-vt 0.718750 0.750000
-vt 0.656250 0.692220
-vt 0.687500 0.694741
-vt 0.687500 0.750000
-vt 0.656250 0.750000
-vt 0.843750 0.693080
-vt 0.871700 0.705173
-vt 0.875000 0.706601
-vt 0.875000 0.750000
-vt 0.843750 0.750000
-vt 0.638611 0.693432
-vt 0.812500 0.706742
-vt 0.812500 0.750000
-vt 0.780089 0.707511
-vt 0.780089 0.750000
-vt 0.812500 0.706742
-vt 0.843750 0.693080
-vt 0.687500 0.536579
-vt 0.656250 0.535812
-vt 0.872226 0.536077
-vt 0.843750 0.533173
-vt 0.750000 0.532123
-vt 0.718750 0.532990
-vt 0.871700 0.705173
-vt 0.656250 0.692220
-vt 0.687500 0.694741
-vt 0.780089 0.531167
-vt 0.631189 0.537046
-vt 0.638611 0.693432
-vt 0.812500 0.545259
-vt 0.718750 0.698992
-vt 0.750000 0.705949
-vt 0.780089 0.707511
-vt 0.187500 0.750000
-vt 0.156250 0.750000
-vt 0.250000 0.750000
-vt 0.219911 0.750000
-vt 0.125000 0.750000
-vt 0.281250 0.750000
-vt 0.343750 0.750000
-vt 0.312500 0.750000
-vn -0.0163 0.9374 -0.3478
-vn -0.2759 -0.1459 0.9501
-vn -1.0000 0.0000 0.0000
-vn 0.0689 -0.9931 -0.0943
-vn 1.0000 0.0000 0.0000
-vn 0.1060 -0.1658 -0.9805
-vn -0.0290 -0.1780 -0.9836
-vn -0.0011 -0.9965 -0.0833
-vn 0.0000 -0.1831 0.9831
-vn 0.0000 1.0000 0.0000
-vn 0.0351 -0.1777 0.9835
-vn 0.0000 -0.1824 -0.9832
-vn 0.0000 -0.9967 -0.0814
-vn -0.0889 -0.9906 -0.1044
-vn -0.1109 -0.1653 -0.9800
-vn -0.0563 -0.1749 0.9830
-vn -0.2678 -0.1501 -0.9517
-vn -0.3190 -0.9344 -0.1582
-vn -0.1154 -0.1652 0.9795
-vn 0.0399 0.9992 0.0000
-vn -0.0299 -0.1785 0.9835
-vn -0.0534 -0.9945 -0.0896
-vn -0.0576 -0.1743 -0.9830
-vn 0.1110 -0.1662 0.9798
-vn 0.0330 -0.1771 -0.9836
-vn 0.0013 -0.9965 -0.0837
-vn 0.0006 0.9546 0.2980
-vn 0.1199 0.0724 -0.9901
-vn -0.0285 0.1195 0.9924
-vn 0.4145 0.0598 0.9081
-vn 0.0140 0.1166 0.9931
-vn 0.4118 0.0511 -0.9098
-vn -0.0259 0.1210 -0.9923
-vn 0.0224 0.0891 0.9958
-vn -0.0096 1.0000 -0.0017
-vn -1.0000 0.0000 -0.0004
-vn 0.0256 0.0912 0.9955
-vn 0.9992 -0.0004 -0.0411
-vn -0.0050 0.1439 -0.9896
-vn -0.0808 0.0829 0.9933
-vn 0.0306 0.0930 -0.9952
-vn 0.0992 0.0752 0.9922
-vn -0.1005 0.0860 -0.9912
-vn 0.0539 0.0929 -0.9942
-vn 0.0005 0.1420 0.9899
-vn 0.0016 0.1202 -0.9927
-vn 0.0128 0.9998 -0.0134
-vn 0.6612 0.7501 -0.0113
-vn -0.0895 -0.9892 0.1157
-vn -0.0013 -0.9959 0.0901
-vn -0.3215 -0.9272 0.1924
-vn 0.0000 -0.9961 0.0878
-vn 0.0015 -0.9959 0.0907
-vn 0.0696 -0.9921 0.1042
-vn -0.0535 -0.9938 0.0975
-usemtl Material
-s off
-f 24/1/1 5/2/1 47/3/1 55/4/1 49/5/1
-f 23/6/2 22/7/2 7/8/2 8/9/2
-f 8/10/3 7/11/3 40/12/3 47/13/3 5/14/3 6/15/3 84/16/3
-f 35/17/4 2/18/4 80/19/4 85/20/4
-f 2/18/5 1/21/5 48/22/5 39/23/5 3/24/5 4/25/5 80/19/5
-f 35/26/6 34/27/6 1/21/6 2/18/6
-f 27/28/7 26/29/7 12/30/7 9/31/7
-f 27/32/8 9/33/8 82/34/8 77/35/8
-f 31/36/9 30/37/9 10/38/9 11/39/9
-f 32/40/10 12/41/10 52/42/10 50/43/10
-f 34/44/10 14/45/10 51/46/10 54/47/10
-f 33/48/11 36/49/11 16/50/11 13/51/11
-f 29/52/12 32/53/12 14/54/12 15/55/12
-f 29/56/13 15/57/13 83/58/13 78/59/13
-f 21/60/14 17/61/14 79/62/14 81/63/14
-f 21/64/15 24/65/15 20/66/15 17/67/15
-f 25/68/16 28/69/16 18/70/16 19/71/16
-f 26/72/10 20/73/10 46/74/10 53/75/10
-f 6/15/17 5/14/17 24/65/17 21/64/17
-f 6/76/18 21/60/18 81/63/18 84/77/18
-f 19/71/19 18/70/19 22/7/19 23/6/19
-f 20/73/20 24/1/20 49/5/20 46/74/20
-f 12/41/10 26/72/10 53/75/10 52/42/10
-f 11/39/21 10/38/21 28/69/21 25/68/21
-f 17/61/22 27/32/22 77/35/22 79/62/22
-f 17/67/23 20/66/23 26/29/23 27/28/23
-f 9/33/13 29/56/13 78/59/13 82/34/13
-f 9/31/12 12/30/12 32/53/12 29/52/12
-f 14/45/10 32/40/10 50/43/10 51/46/10
-f 13/51/9 16/50/9 30/37/9 31/36/9
-f 4/25/24 3/24/24 36/49/24 33/48/24
-f 1/21/10 34/44/10 54/47/10 57/78/10 48/22/10
-f 15/55/25 14/54/25 34/27/25 35/26/25
-f 15/57/26 35/17/26 85/20/26 83/58/26
-f 45/79/10 41/80/10 10/81/10 30/82/10
-f 37/83/10 38/84/10 16/85/10 36/86/10
-f 42/87/27 56/88/27 40/89/27 7/90/27 22/91/27
-f 39/23/10 58/92/10 37/83/10 36/86/10 3/24/10
-f 43/93/20 42/87/20 22/91/20 18/94/20
-f 38/84/10 45/79/10 30/82/10 16/85/10
-f 41/80/10 44/95/10 28/96/10 10/81/10
-f 44/95/10 43/93/10 18/94/10 28/96/10
-f 42/87/28 43/93/28 63/97/28 62/98/28
-f 54/47/29 51/46/29 69/99/29 72/100/29
-f 49/5/30 55/4/30 73/101/30 67/102/30
-f 48/22/10 57/78/10 58/92/10 39/23/10
-f 50/43/31 52/42/31 70/103/31 68/104/31
-f 56/88/32 42/87/32 62/98/32 74/105/32
-f 38/84/33 37/83/33 59/106/33 60/107/33
-f 52/42/34 53/75/34 71/108/34 70/103/34
-f 56/88/35 55/4/35 47/3/35 40/89/35
-f 58/92/36 57/78/36 75/109/36 76/110/36
-f 53/75/37 46/74/37 66/111/37 71/108/37
-f 55/4/38 56/88/38 74/105/38 73/101/38
-f 45/79/39 38/84/39 60/107/39 65/112/39
-f 57/78/40 54/47/40 72/100/40 75/109/40
-f 44/95/41 41/80/41 61/113/41 64/114/41
-f 46/74/42 49/5/42 67/102/42 66/111/42
-f 37/83/43 58/92/43 76/110/43 59/106/43
-f 43/93/44 44/95/44 64/114/44 63/97/44
-f 51/46/45 50/43/45 68/104/45 69/99/45
-f 41/80/46 45/79/46 65/112/46 61/113/46
-f 75/109/47 72/100/47 59/106/47 76/110/47
-f 60/107/10 59/106/10 72/100/10 69/99/10
-f 65/112/10 60/107/10 69/99/10 68/104/10
-f 61/113/10 65/112/10 68/104/10 70/103/10
-f 64/114/10 61/113/10 70/103/10 71/108/10
-f 63/97/10 64/114/10 71/108/10 66/111/10
-f 62/98/10 63/97/10 66/111/10 67/102/10
-f 74/105/48 62/98/48 67/102/48 73/101/48
-f 81/63/49 79/62/49 19/115/49 23/116/49
-f 77/35/50 82/34/50 11/117/50 25/118/50
-f 84/77/51 81/63/51 23/116/51 8/119/51
-f 82/34/52 78/59/52 31/120/52 11/117/52
-f 83/58/53 85/20/53 33/121/53 13/122/53
-f 78/59/52 83/58/52 13/122/52 31/120/52
-f 85/20/54 80/19/54 4/25/54 33/121/54
-f 79/62/55 77/35/55 25/118/55 19/115/55
diff --git a/godot/meshes/laetine.obj.import b/godot/meshes/laetine.obj.import
deleted file mode 100644
index 9445c41..0000000
--- a/godot/meshes/laetine.obj.import
+++ /dev/null
@@ -1,20 +0,0 @@
-[remap]
-
-importer="wavefront_obj"
-type="Mesh"
-path="res://.import/laetine.obj-e2f2547cb01c5b6ffec4bdf5b2a3aec9.mesh"
-
-[deps]
-
-files=[ "res://.import/laetine.obj-e2f2547cb01c5b6ffec4bdf5b2a3aec9.mesh" ]
-
-source_file="res://meshes/laetine.obj"
-dest_files=[ "res://.import/laetine.obj-e2f2547cb01c5b6ffec4bdf5b2a3aec9.mesh", "res://.import/laetine.obj-e2f2547cb01c5b6ffec4bdf5b2a3aec9.mesh" ]
-
-[params]
-
-generate_tangents=true
-scale_mesh=Vector3( 1, 1, 1 )
-offset_mesh=Vector3( 0, 0, 0 )
-octahedral_compression=true
-optimize_mesh_flags=4286
diff --git a/godot/meshes/laetine_mask.obj b/godot/meshes/laetine_mask.obj
deleted file mode 100644
index 44be1a1..0000000
--- a/godot/meshes/laetine_mask.obj
+++ /dev/null
@@ -1,97 +0,0 @@
-# Blender v2.92.0 OBJ File: 'laetine.blend'
-# www.blender.org
-mtllib laetine_mask.mtl
-o Cube.001
-v -13.287994 0.205399 0.979553
-v -13.287994 1.000000 0.979553
-v -13.287994 0.205399 -0.979553
-v -13.287994 1.000000 -0.979553
-v 15.695301 -0.570796 1.568131
-v 15.736877 1.000000 1.803618
-v 15.695301 -0.570796 -1.568131
-v 15.736877 1.000000 -1.803618
-v 0.000000 -0.880590 -2.129694
-v 0.000000 1.000000 -2.319838
-v 0.000000 -0.880590 2.129694
-v 0.000000 1.000000 2.270563
-v -8.087383 -0.725956 -1.089942
-v -8.655064 1.000000 1.984209
-v -8.655064 1.000000 -1.984209
-v -8.087383 -0.725956 1.089942
-v 10.447272 1.000000 -2.279417
-v 8.087383 -0.869857 2.032708
-v 8.087383 -0.869857 -2.032708
-v 10.447272 1.000000 2.253140
-vt 0.375000 0.000000
-vt 0.625000 0.000000
-vt 0.625000 0.250000
-vt 0.375000 0.250000
-vt 0.375000 0.437500
-vt 0.625000 0.437500
-vt 0.625000 0.500000
-vt 0.375000 0.500000
-vt 0.625000 0.750000
-vt 0.375000 0.750000
-vt 0.375000 0.937500
-vt 0.625000 0.937500
-vt 0.625000 1.000000
-vt 0.375000 1.000000
-vt 0.312500 0.500000
-vt 0.312500 0.750000
-vt 0.812500 0.500000
-vt 0.875000 0.500000
-vt 0.875000 0.750000
-vt 0.812500 0.750000
-vt 0.687500 0.500000
-vt 0.750000 0.500000
-vt 0.750000 0.750000
-vt 0.687500 0.750000
-vt 0.187500 0.500000
-vt 0.250000 0.500000
-vt 0.250000 0.750000
-vt 0.187500 0.750000
-vt 0.375000 0.812500
-vt 0.625000 0.812500
-vt 0.625000 0.875000
-vt 0.375000 0.875000
-vt 0.375000 0.312500
-vt 0.625000 0.312500
-vt 0.625000 0.375000
-vt 0.375000 0.375000
-vt 0.125000 0.500000
-vt 0.125000 0.750000
-vn -1.0000 0.0000 0.0000
-vn 0.0758 -0.1901 -0.9788
-vn 0.9996 -0.0265 0.0000
-vn -0.1386 -0.3587 0.9231
-vn 0.0393 -0.9992 0.0000
-vn 0.0000 1.0000 0.0000
-vn -0.0191 -0.9998 0.0000
-vn 0.0062 -0.0998 0.9950
-vn -0.0809 -0.2987 -0.9509
-vn -0.1386 -0.3587 -0.9231
-vn -0.1763 -0.9843 0.0000
-vn -0.0783 -0.2864 0.9549
-vn 0.0737 -0.1814 0.9806
-vn 0.0013 -1.0000 0.0000
-vn 0.0074 -0.1203 -0.9927
-usemtl None
-s off
-f 1/1/1 2/2/1 4/3/1 3/4/1
-f 19/5/2 17/6/2 8/7/2 7/8/2
-f 7/8/3 8/7/3 6/9/3 5/10/3
-f 16/11/4 14/12/4 2/13/4 1/14/4
-f 19/15/5 7/8/5 5/10/5 18/16/5
-f 15/17/6 4/18/6 2/19/6 14/20/6
-f 17/21/6 10/22/6 12/23/6 20/24/6
-f 13/25/7 9/26/7 11/27/7 16/28/7
-f 18/29/8 20/30/8 12/31/8 11/32/8
-f 13/33/9 15/34/9 10/35/9 9/36/9
-f 3/4/10 4/3/10 15/34/10 13/33/10
-f 3/37/11 13/25/11 16/28/11 1/38/11
-f 10/22/6 15/17/6 14/20/6 12/23/6
-f 11/32/12 12/31/12 14/12/12 16/11/12
-f 5/10/13 6/9/13 20/30/13 18/29/13
-f 8/7/6 17/21/6 20/24/6 6/9/6
-f 9/26/14 19/15/14 18/16/14 11/27/14
-f 9/36/15 10/35/15 17/6/15 19/5/15
diff --git a/godot/project.godot b/godot/project.godot
index c9aa7ca..a6d3c33 100644
--- a/godot/project.godot
+++ b/godot/project.godot
@@ -214,6 +214,7 @@ reload={
[physics]
+3d/smooth_trimesh_collision=true
3d/active_soft_world=false
[rendering]
diff --git a/godot/scenes/ballistics/Cannonball.tscn b/godot/scenes/ballistics/Cannonball.tscn
index 4e5d06a..b9d5a0d 100644
--- a/godot/scenes/ballistics/Cannonball.tscn
+++ b/godot/scenes/ballistics/Cannonball.tscn
@@ -34,7 +34,6 @@ mass = 10.0
continuous_cd = true
contacts_reported = 2
contact_monitor = true
-can_sleep = false
script = ExtResource( 1 )
[node name="CollisionShape" type="CollisionShape" parent="."]
@@ -44,12 +43,12 @@ shape = SubResource( 1 )
mesh = SubResource( 2 )
material/0 = SubResource( 3 )
-[node name="PickupArea" type="Area" parent="."]
+[node name="CarryArea" type="Area" parent="."]
collision_layer = 2
collision_mask = 2
monitoring = false
-[node name="CollisionShape" type="CollisionShape" parent="PickupArea"]
+[node name="CollisionShape" type="CollisionShape" parent="CarryArea"]
shape = SubResource( 6 )
[connection signal="body_entered" from="." to="." method="_on_collision"]
diff --git a/godot/scenes/characters/PlayerRigid.tscn b/godot/scenes/characters/PlayerRigid.tscn
index 6e9fe48..87a463d 100644
--- a/godot/scenes/characters/PlayerRigid.tscn
+++ b/godot/scenes/characters/PlayerRigid.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=13 format=2]
+[gd_scene load_steps=14 format=2]
[ext_resource path="res://scripts/characters/player_controller_new.gd" type="Script" id=1]
[ext_resource path="res://theming/FreeMono.otf" type="DynamicFontData" id=2]
@@ -7,6 +7,7 @@
[ext_resource path="res://scenes/weapons/hands.res" type="Resource" id=5]
[ext_resource path="res://scenes/weapons/pistol.tres" type="Resource" id=6]
[ext_resource path="res://scenes/weapons/rockets.tres" type="Resource" id=7]
+[ext_resource path="res://scenes/weapons/grapplinghook.tres" type="Resource" id=8]
[sub_resource type="PhysicsMaterial" id=8]
resource_local_to_scene = true
@@ -46,6 +47,7 @@ script = ExtResource( 1 )
weapon_slot1 = ExtResource( 5 )
weapon_slot2 = ExtResource( 6 )
weapon_slot3 = ExtResource( 7 )
+weapon_slot4 = ExtResource( 8 )
[node name="Collision" type="CollisionShape" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.9, 0 )
diff --git a/godot/scenes/characters/viewmodel_arms.tscn b/godot/scenes/characters/viewmodel_arms.tscn
index 1808785..b4d3257 100644
--- a/godot/scenes/characters/viewmodel_arms.tscn
+++ b/godot/scenes/characters/viewmodel_arms.tscn
@@ -49,7 +49,7 @@ bones/3/name = "Wrist.R"
bones/3/parent = 2
bones/3/rest = Transform( 0.942879, -0.20747, 0.260645, 0.237384, 0.967355, -0.0887301, -0.233727, 0.145535, 0.961348, 2.68221e-07, 1.29325, 0 )
bones/3/enabled = true
-bones/3/bound_children = [ NodePath("GunBone") ]
+bones/3/bound_children = [ ]
bones/4/name = "Thumb.R"
bones/4/parent = 3
bones/4/rest = Transform( 0.771494, -0.608265, -0.186579, 0.518122, 0.770842, -0.370612, 0.369253, 0.189254, 0.909854, -0.138479, 0.349082, 0.150327 )
@@ -176,5 +176,5 @@ mesh = ExtResource( 3 )
skin = ExtResource( 4 )
[node name="GunBone" type="BoneAttachment" parent="Skeleton"]
-transform = Transform( -0.978, -0.15941, 0.134542, 0.1673, -0.214165, 0.962363, -0.124596, 0.963702, 0.236124, -1.28918, -0.187637, 3.05885 )
+transform = Transform( -0.988177, 0.144629, -0.0508501, -0.0291988, 0.148051, 0.988548, 0.150501, 0.978347, -0.142077, -1.28918, -0.187637, 3.05885 )
bone_name = "Wrist.R"
diff --git a/godot/scenes/environment/RopeSegment.tscn b/godot/scenes/environment/RopeSegment.tscn
new file mode 100644
index 0000000..ae6d19b
--- /dev/null
+++ b/godot/scenes/environment/RopeSegment.tscn
@@ -0,0 +1,18 @@
+[gd_scene load_steps=3 format=2]
+
+[sub_resource type="BoxShape" id=1]
+extents = Vector3( 0.1, 0.1, 1 )
+
+[sub_resource type="CubeMesh" id=2]
+size = Vector3( 0.5, 0.5, 0.5 )
+
+[node name="RopeSegment" type="RigidBody"]
+collision_layer = 32768
+collision_mask = 32768
+mass = 15.0
+
+[node name="CollisionShape" type="CollisionShape" parent="."]
+shape = SubResource( 1 )
+
+[node name="MeshInstance" type="MeshInstance" parent="."]
+mesh = SubResource( 2 )
diff --git a/godot/scenes/environment/SwingRope.tscn b/godot/scenes/environment/SwingRope.tscn
new file mode 100644
index 0000000..74ec78b
--- /dev/null
+++ b/godot/scenes/environment/SwingRope.tscn
@@ -0,0 +1,3 @@
+[gd_scene format=2]
+
+[node name="SwingRope" type="Spatial"]
diff --git a/godot/scenes/vehicles/Gunboat.tscn b/godot/scenes/vehicles/Gunboat.tscn
deleted file mode 100644
index 6b447d6..0000000
--- a/godot/scenes/vehicles/Gunboat.tscn
+++ /dev/null
@@ -1,282 +0,0 @@
-[gd_scene load_steps=30 format=2]
-
-[ext_resource path="res://scripts/vehicles/Gunboat.gd" type="Script" id=1]
-[ext_resource path="res://scenes/machines/Cannon.tscn" type="PackedScene" id=2]
-[ext_resource path="res://textures/planks.jpg" type="Texture" id=3]
-[ext_resource path="res://meshes/laetine_mask.obj" type="ArrayMesh" id=4]
-[ext_resource path="res://scenes/environment/Ladder.tscn" type="PackedScene" id=5]
-
-[sub_resource type="PhysicsMaterial" id=28]
-rough = true
-
-[sub_resource type="BoxShape" id=5]
-extents = Vector3( 0.2, 0.2, 0.2 )
-
-[sub_resource type="CubeMesh" id=6]
-size = Vector3( 0.4, 0.4, 0.4 )
-
-[sub_resource type="BoxShape" id=7]
-extents = Vector3( 0.1, 0.1, 0.1 )
-
-[sub_resource type="CubeMesh" id=9]
-size = Vector3( 0.15, 24, 0.15 )
-
-[sub_resource type="OpenSimplexNoise" id=10]
-
-[sub_resource type="NoiseTexture" id=11]
-noise = SubResource( 10 )
-
-[sub_resource type="SpatialMaterial" id=12]
-albedo_color = Color( 0.266667, 0.215686, 0.215686, 1 )
-albedo_texture = SubResource( 11 )
-
-[sub_resource type="CubeMesh" id=13]
-size = Vector3( 0.05, 15, 13 )
-
-[sub_resource type="CubeMesh" id=14]
-size = Vector3( 2, 2.5, 0.15 )
-
-[sub_resource type="SpatialMaterial" id=15]
-albedo_texture = ExtResource( 3 )
-uv1_scale = Vector3( 0.1, 0.1, 0.1 )
-uv1_offset = Vector3( 1, 0, 0 )
-uv1_triplanar = true
-
-[sub_resource type="ArrayMesh" id=16]
-surfaces/0 = {
-"aabb": AABB( -16, -1.12351, -2.5, 32, 2.60707, 5 ),
-"array_data": PoolByteArray( 0, 0, 128, 193, 136, 73, 186, 63, 234, 37, 30, 191, 221, 125, 162, 67, 0, 59, 0, 56, 0, 0, 64, 193, 5, 51, 146, 63, 140, 215, 216, 191, 221, 125, 172, 68, 192, 58, 0, 56, 0, 0, 128, 193, 136, 73, 186, 63, 12, 202, 228, 190, 221, 125, 161, 67, 0, 59, 107, 55, 14, 172, 85, 193, 149, 71, 189, 63, 6, 242, 100, 191, 221, 125, 151, 65, 250, 58, 108, 55, 0, 0, 64, 193, 5, 51, 146, 63, 221, 68, 189, 191, 221, 125, 177, 69, 192, 58, 120, 55, 0, 0, 64, 193, 5, 51, 146, 63, 203, 131, 214, 63, 231, 243, 0, 118, 0, 57, 0, 40, 0, 0, 64, 193, 242, 119, 199, 190, 22, 189, 183, 63, 231, 243, 0, 118, 0, 54, 0, 40, 0, 0, 128, 193, 136, 73, 186, 63, 50, 176, 14, 63, 231, 243, 0, 118, 0, 57, 0, 0, 0, 0, 128, 193, 123, 218, 101, 63, 30, 55, 244, 62, 231, 243, 0, 118, 0, 54, 0, 0, 0, 0, 128, 193, 136, 73, 186, 63, 50, 176, 14, 63, 129, 0, 0, 118, 0, 57, 0, 60, 0, 0, 128, 193, 123, 218, 101, 63, 30, 55, 244, 62, 129, 0, 0, 123, 0, 54, 0, 60, 0, 0, 128, 193, 136, 73, 186, 63, 145, 237, 180, 62, 129, 0, 0, 118, 0, 57, 167, 59, 0, 0, 128, 193, 136, 73, 186, 63, 12, 202, 228, 190, 129, 0, 0, 118, 0, 57, 74, 58, 0, 0, 128, 193, 136, 73, 186, 63, 234, 37, 30, 191, 129, 0, 6, 127, 0, 57, 0, 58, 0, 0, 128, 193, 123, 218, 101, 63, 205, 174, 7, 191, 129, 0, 17, 127, 0, 54, 0, 58, 0, 0, 128, 193, 83, 94, 55, 63, 167, 64, 166, 61, 129, 0, 127, 63, 0, 54, 122, 59, 0, 0, 128, 65, 5, 167, 46, 191, 211, 19, 210, 191, 17, 137, 110, 66, 0, 54, 0, 56, 0, 0, 64, 65, 50, 34, 113, 191, 83, 62, 1, 192, 17, 137, 116, 67, 128, 53, 0, 56, 0, 0, 128, 65, 62, 35, 93, 191, 167, 64, 166, 61, 17, 137, 112, 67, 0, 54, 252, 53, 0, 0, 64, 65, 45, 207, 143, 191, 167, 64, 166, 61, 17, 137, 118, 67, 128, 53, 252, 53, 0, 0, 128, 65, 10, 130, 123, 63, 206, 196, 244, 191, 127, 0, 17, 127, 0, 57, 0, 56, 0, 0, 128, 65, 5, 167, 46, 191, 211, 19, 210, 191, 127, 0, 26, 127, 0, 54, 0, 56, 0, 0, 128, 65, 10, 130, 123, 63, 247, 117, 214, 191, 127, 0, 30, 127, 0, 57, 103, 55, 0, 0, 128, 65, 10, 130, 123, 63, 60, 77, 208, 63, 127, 0, 0, 95, 0, 57, 227, 52, 0, 0, 128, 65, 10, 130, 123, 63, 0, 255, 240, 63, 127, 0, 0, 107, 0, 57, 0, 52, 0, 0, 128, 65, 5, 167, 46, 191, 60, 46, 206, 63, 127, 0, 0, 118, 0, 54, 0, 52, 0, 0, 128, 65, 62, 35, 93, 191, 167, 64, 166, 61, 127, 0, 127, 63, 0, 54, 252, 53, 0, 0, 64, 65, 10, 130, 123, 63, 157, 187, 22, 192, 110, 140, 238, 126, 0, 57, 64, 56, 0, 0, 64, 65, 50, 34, 113, 191, 83, 62, 1, 192, 110, 140, 238, 126, 0, 54, 64, 56, 0, 0, 128, 65, 10, 130, 123, 63, 206, 196, 244, 191, 110, 140, 18, 126, 0, 57, 0, 56, 0, 0, 128, 65, 5, 167, 46, 191, 211, 19, 210, 191, 110, 140, 18, 126, 0, 54, 0, 56, 103, 124, 118, 192, 10, 130, 123, 63, 31, 44, 24, 192, 148, 133, 237, 126, 0, 57, 61, 57, 103, 124, 118, 192, 50, 34, 113, 191, 118, 112, 2, 192, 148, 133, 237, 126, 0, 54, 61, 57, 0, 0, 0, 0, 10, 130, 123, 63, 0, 0, 32, 192, 148, 133, 19, 126, 0, 57, 0, 57, 0, 0, 0, 0, 50, 34, 113, 191, 154, 37, 9, 192, 148, 133, 19, 126, 0, 54, 0, 57, 0, 0, 0, 0, 50, 34, 113, 191, 154, 37, 9, 192, 247, 130, 126, 65, 0, 52, 0, 56, 103, 124, 118, 192, 50, 34, 113, 191, 118, 112, 2, 192, 247, 130, 126, 63, 9, 51, 0, 56, 0, 0, 0, 0, 45, 207, 143, 191, 167, 64, 166, 61, 247, 130, 126, 64, 0, 52, 238, 53, 103, 124, 118, 192, 45, 207, 143, 191, 167, 64, 166, 61, 247, 130, 125, 63, 9, 51, 232, 53, 0, 0, 128, 64, 10, 130, 123, 63, 0, 0, 32, 64, 0, 237, 0, 117, 0, 57, 0, 49, 0, 0, 128, 64, 50, 34, 113, 191, 174, 16, 9, 64, 0, 237, 0, 117, 0, 54, 0, 49, 0, 0, 0, 0, 10, 130, 123, 63, 0, 0, 32, 64, 0, 237, 0, 117, 0, 57, 0, 48, 0, 0, 0, 0, 50, 34, 113, 191, 174, 16, 9, 64, 0, 237, 0, 117, 0, 54, 0, 48, 0, 0, 0, 0, 10, 130, 123, 63, 0, 0, 32, 192, 0, 127, 131, 63, 0, 58, 0, 56, 0, 0, 128, 64, 10, 130, 123, 63, 0, 0, 32, 192, 0, 127, 131, 63, 192, 57, 0, 56, 0, 0, 0, 0, 10, 130, 123, 63, 79, 88, 5, 192, 0, 127, 131, 63, 0, 58, 124, 55, 0, 0, 128, 64, 10, 130, 123, 63, 140, 47, 11, 192, 0, 127, 131, 63, 192, 57, 120, 55, 0, 0, 0, 65, 10, 130, 123, 63, 0, 0, 32, 192, 0, 127, 129, 64, 128, 57, 0, 56, 0, 0, 64, 65, 10, 130, 123, 63, 157, 187, 22, 192, 0, 127, 129, 67, 64, 57, 0, 56, 0, 0, 0, 65, 10, 130, 123, 63, 88, 83, 11, 192, 0, 127, 129, 64, 128, 57, 106, 55, 0, 0, 64, 65, 10, 130, 123, 63, 181, 253, 1, 192, 0, 127, 129, 67, 64, 57, 109, 55, 0, 0, 64, 65, 10, 130, 123, 63, 2, 44, 22, 64, 3, 238, 0, 117, 0, 57, 0, 51, 0, 0, 64, 65, 50, 34, 113, 191, 7, 155, 0, 64, 3, 238, 0, 117, 0, 54, 0, 51, 0, 0, 0, 65, 10, 130, 123, 63, 0, 0, 32, 64, 3, 238, 0, 117, 0, 57, 0, 50, 0, 0, 0, 65, 50, 34, 113, 191, 174, 16, 9, 64, 3, 238, 0, 117, 0, 54, 0, 50, 0, 0, 128, 64, 10, 130, 123, 63, 0, 0, 32, 192, 107, 129, 19, 127, 0, 57, 192, 56, 0, 0, 128, 64, 50, 34, 113, 191, 154, 37, 9, 192, 107, 129, 19, 127, 0, 54, 192, 56, 0, 0, 0, 65, 10, 130, 123, 63, 0, 0, 32, 192, 107, 129, 19, 127, 0, 57, 128, 56, 0, 0, 0, 65, 50, 34, 113, 191, 154, 37, 9, 192, 107, 129, 19, 127, 0, 54, 128, 56, 0, 0, 0, 65, 50, 34, 113, 191, 154, 37, 9, 192, 9, 129, 127, 63, 0, 53, 0, 56, 0, 0, 128, 64, 50, 34, 113, 191, 154, 37, 9, 192, 9, 129, 126, 63, 128, 52, 0, 56, 0, 0, 0, 65, 45, 207, 143, 191, 167, 64, 166, 61, 9, 129, 126, 63, 0, 53, 248, 53, 0, 0, 128, 64, 45, 207, 143, 191, 167, 64, 166, 61, 9, 129, 126, 63, 128, 52, 243, 53, 0, 0, 0, 193, 78, 127, 58, 191, 1, 106, 234, 191, 236, 139, 118, 54, 0, 50, 0, 56, 0, 0, 64, 193, 242, 119, 199, 190, 126, 229, 185, 191, 236, 139, 116, 57, 0, 49, 0, 56, 0, 0, 0, 193, 118, 251, 104, 191, 167, 64, 166, 61, 236, 139, 117, 55, 0, 50, 222, 53, 0, 0, 64, 193, 34, 56, 18, 191, 167, 64, 166, 61, 236, 139, 114, 58, 0, 49, 198, 53, 0, 0, 64, 193, 5, 51, 146, 63, 140, 215, 216, 191, 146, 141, 238, 126, 0, 57, 192, 57, 0, 0, 64, 193, 242, 119, 199, 190, 126, 229, 185, 191, 146, 141, 238, 126, 0, 54, 192, 57, 0, 0, 0, 193, 10, 130, 123, 63, 6, 187, 8, 192, 146, 141, 18, 126, 0, 57, 128, 57, 0, 0, 0, 193, 78, 127, 58, 191, 1, 106, 234, 191, 146, 141, 18, 126, 0, 54, 128, 57, 103, 124, 118, 192, 10, 130, 123, 63, 175, 238, 23, 64, 251, 238, 0, 117, 0, 57, 19, 46, 103, 124, 118, 192, 50, 34, 113, 191, 225, 38, 2, 64, 251, 238, 0, 117, 0, 54, 19, 46, 0, 0, 0, 193, 10, 130, 123, 63, 186, 218, 8, 64, 251, 238, 0, 117, 0, 57, 0, 44, 0, 0, 0, 193, 78, 127, 58, 191, 117, 118, 234, 63, 251, 238, 0, 117, 0, 54, 0, 44, 0, 0, 0, 193, 10, 130, 123, 63, 6, 187, 8, 192, 0, 127, 136, 63, 128, 58, 0, 56, 103, 124, 118, 192, 10, 130, 123, 63, 31, 44, 24, 192, 0, 127, 131, 63, 61, 58, 0, 56, 0, 0, 0, 193, 10, 130, 123, 63, 207, 78, 242, 191, 0, 127, 136, 63, 128, 58, 70, 55, 103, 124, 118, 192, 10, 130, 123, 63, 154, 62, 255, 191, 0, 127, 130, 63, 61, 58, 128, 55, 0, 0, 128, 193, 136, 73, 186, 63, 234, 37, 30, 191, 143, 154, 239, 126, 0, 57, 0, 58, 0, 0, 128, 193, 123, 218, 101, 63, 205, 174, 7, 191, 143, 154, 239, 126, 0, 54, 0, 58, 0, 0, 64, 193, 5, 51, 146, 63, 140, 215, 216, 191, 143, 154, 17, 126, 0, 57, 192, 57, 0, 0, 64, 193, 242, 119, 199, 190, 126, 229, 185, 191, 143, 154, 17, 126, 0, 54, 192, 57, 0, 0, 64, 193, 242, 119, 199, 190, 126, 229, 185, 191, 214, 158, 101, 41, 0, 49, 0, 56, 0, 0, 128, 193, 123, 218, 101, 63, 205, 174, 7, 191, 214, 158, 95, 46, 0, 48, 0, 56, 0, 0, 64, 193, 34, 56, 18, 191, 167, 64, 166, 61, 214, 158, 101, 42, 0, 49, 198, 53, 0, 0, 128, 193, 83, 94, 55, 63, 167, 64, 166, 61, 214, 158, 91, 47, 0, 48, 11, 53, 0, 0, 0, 193, 10, 130, 123, 63, 186, 218, 8, 64, 245, 240, 0, 117, 0, 57, 0, 44, 0, 0, 0, 193, 78, 127, 58, 191, 117, 118, 234, 63, 245, 240, 0, 117, 0, 54, 0, 44, 0, 0, 64, 193, 5, 51, 146, 63, 203, 131, 214, 63, 245, 240, 0, 117, 0, 57, 0, 40, 0, 0, 64, 193, 242, 119, 199, 190, 22, 189, 183, 63, 245, 240, 0, 117, 0, 54, 0, 40, 0, 0, 64, 193, 5, 51, 146, 63, 140, 215, 216, 191, 4, 122, 146, 65, 192, 58, 0, 56, 0, 0, 0, 193, 10, 130, 123, 63, 6, 187, 8, 192, 4, 122, 147, 65, 128, 58, 0, 56, 0, 0, 64, 193, 5, 51, 146, 63, 221, 68, 189, 191, 4, 122, 146, 65, 192, 58, 120, 55, 0, 0, 0, 193, 10, 130, 123, 63, 207, 78, 242, 191, 4, 122, 147, 65, 128, 58, 70, 55, 0, 0, 0, 0, 10, 130, 123, 63, 0, 0, 32, 64, 253, 237, 0, 117, 0, 57, 0, 48, 0, 0, 0, 0, 50, 34, 113, 191, 174, 16, 9, 64, 253, 237, 0, 117, 0, 54, 0, 48, 103, 124, 118, 192, 10, 130, 123, 63, 175, 238, 23, 64, 253, 237, 0, 117, 0, 57, 19, 46, 103, 124, 118, 192, 50, 34, 113, 191, 225, 38, 2, 64, 253, 237, 0, 117, 0, 54, 19, 46, 103, 124, 118, 192, 50, 34, 113, 191, 118, 112, 2, 192, 241, 135, 121, 57, 9, 51, 0, 56, 0, 0, 0, 193, 78, 127, 58, 191, 1, 106, 234, 191, 241, 135, 120, 59, 0, 50, 0, 56, 103, 124, 118, 192, 45, 207, 143, 191, 167, 64, 166, 61, 241, 135, 121, 58, 9, 51, 232, 53, 0, 0, 0, 193, 118, 251, 104, 191, 167, 64, 166, 61, 241, 135, 119, 60, 0, 50, 222, 53, 0, 0, 0, 193, 10, 130, 123, 63, 6, 187, 8, 192, 148, 136, 19, 126, 0, 57, 128, 57, 0, 0, 0, 193, 78, 127, 58, 191, 1, 106, 234, 191, 148, 136, 19, 126, 0, 54, 128, 57, 103, 124, 118, 192, 10, 130, 123, 63, 31, 44, 24, 192, 148, 136, 237, 126, 0, 57, 61, 57, 103, 124, 118, 192, 50, 34, 113, 191, 118, 112, 2, 192, 148, 136, 237, 126, 0, 54, 61, 57, 0, 0, 0, 0, 50, 34, 113, 191, 154, 37, 9, 192, 9, 129, 126, 63, 0, 52, 0, 56, 0, 0, 0, 0, 45, 207, 143, 191, 167, 64, 166, 61, 9, 129, 126, 63, 0, 52, 238, 53, 0, 0, 0, 0, 10, 130, 123, 63, 0, 0, 32, 192, 107, 129, 19, 127, 0, 57, 0, 57, 0, 0, 0, 0, 50, 34, 113, 191, 154, 37, 9, 192, 107, 129, 19, 127, 0, 54, 0, 57, 0, 0, 0, 65, 10, 130, 123, 63, 0, 0, 32, 64, 0, 237, 0, 117, 0, 57, 0, 50, 0, 0, 0, 65, 50, 34, 113, 191, 174, 16, 9, 64, 0, 237, 0, 117, 0, 54, 0, 50, 0, 0, 128, 65, 10, 130, 123, 63, 0, 255, 240, 63, 11, 240, 0, 117, 0, 57, 0, 52, 0, 0, 128, 65, 5, 167, 46, 191, 60, 46, 206, 63, 11, 240, 0, 117, 0, 54, 0, 52, 0, 0, 64, 65, 10, 130, 123, 63, 2, 44, 22, 64, 11, 240, 0, 117, 0, 57, 0, 51, 0, 0, 64, 65, 50, 34, 113, 191, 7, 155, 0, 64, 11, 240, 0, 117, 0, 54, 0, 51, 0, 0, 128, 65, 10, 130, 123, 63, 206, 196, 244, 191, 0, 127, 129, 69, 0, 57, 0, 56, 140, 39, 122, 65, 10, 130, 123, 63, 181, 195, 219, 191, 0, 127, 129, 68, 12, 57, 104, 55, 0, 0, 128, 65, 10, 130, 123, 63, 247, 117, 214, 191, 0, 127, 129, 68, 0, 57, 103, 55, 0, 0, 0, 65, 10, 130, 123, 63, 0, 0, 32, 192, 108, 133, 237, 126, 0, 57, 128, 56, 0, 0, 0, 65, 50, 34, 113, 191, 154, 37, 9, 192, 108, 133, 237, 126, 0, 54, 128, 56, 0, 0, 64, 65, 10, 130, 123, 63, 157, 187, 22, 192, 108, 133, 19, 126, 0, 57, 64, 56, 0, 0, 64, 65, 50, 34, 113, 191, 83, 62, 1, 192, 108, 133, 19, 126, 0, 54, 64, 56, 0, 0, 64, 65, 50, 34, 113, 191, 83, 62, 1, 192, 9, 130, 123, 63, 128, 53, 0, 56, 0, 0, 0, 65, 50, 34, 113, 191, 154, 37, 9, 192, 9, 130, 125, 63, 0, 53, 0, 56, 0, 0, 64, 65, 45, 207, 143, 191, 167, 64, 166, 61, 9, 130, 124, 63, 128, 53, 252, 53, 0, 0, 0, 65, 45, 207, 143, 191, 167, 64, 166, 61, 9, 130, 126, 63, 0, 53, 248, 53, 0, 0, 0, 0, 10, 130, 123, 63, 185, 112, 12, 64, 0, 127, 129, 65, 0, 58, 180, 52, 0, 0, 128, 64, 10, 130, 123, 63, 97, 253, 14, 64, 0, 127, 129, 63, 192, 57, 208, 52, 0, 0, 0, 0, 10, 130, 123, 63, 0, 0, 32, 64, 0, 127, 129, 65, 0, 58, 0, 52, 0, 0, 128, 64, 10, 130, 123, 63, 0, 0, 32, 64, 0, 127, 129, 63, 192, 57, 0, 52, 0, 0, 0, 65, 10, 130, 123, 63, 169, 162, 13, 64, 0, 127, 131, 63, 128, 57, 226, 52, 0, 0, 64, 65, 10, 130, 123, 63, 151, 1, 5, 64, 0, 127, 139, 63, 64, 57, 236, 52, 0, 0, 0, 65, 10, 130, 123, 63, 0, 0, 32, 64, 0, 127, 131, 63, 128, 57, 0, 52, 0, 0, 64, 65, 10, 130, 123, 63, 2, 44, 22, 64, 0, 127, 138, 63, 64, 57, 0, 52, 136, 152, 84, 193, 84, 229, 189, 63, 132, 18, 74, 63, 0, 96, 109, 61, 249, 58, 183, 52, 0, 0, 64, 193, 5, 51, 146, 63, 31, 130, 172, 63, 0, 96, 138, 81, 192, 58, 233, 52, 0, 0, 128, 193, 136, 73, 186, 63, 145, 237, 180, 62, 0, 96, 138, 80, 0, 59, 177, 52, 0, 0, 128, 193, 136, 73, 186, 63, 50, 176, 14, 63, 0, 96, 137, 79, 0, 59, 0, 52, 0, 0, 64, 193, 5, 51, 146, 63, 203, 131, 214, 63, 0, 96, 138, 80, 192, 58, 0, 52, 209, 33, 122, 65, 10, 130, 123, 63, 28, 181, 216, 63, 0, 127, 144, 63, 27, 57, 231, 52, 0, 0, 128, 65, 10, 130, 123, 63, 60, 77, 208, 63, 0, 127, 149, 63, 0, 57, 227, 52, 0, 0, 128, 65, 10, 130, 123, 63, 0, 255, 240, 63, 0, 127, 143, 63, 0, 57, 0, 52, 0, 0, 64, 193, 5, 51, 146, 63, 31, 130, 172, 63, 4, 122, 134, 71, 192, 58, 233, 52, 0, 0, 0, 193, 10, 130, 123, 63, 15, 242, 236, 63, 4, 122, 134, 72, 128, 58, 177, 52, 0, 0, 64, 193, 5, 51, 146, 63, 203, 131, 214, 63, 4, 122, 134, 71, 192, 58, 0, 52, 0, 0, 0, 193, 10, 130, 123, 63, 186, 218, 8, 64, 4, 122, 134, 72, 128, 58, 0, 52, 103, 124, 118, 192, 10, 130, 123, 63, 5, 164, 4, 64, 0, 127, 129, 66, 61, 58, 174, 52, 103, 124, 118, 192, 10, 130, 123, 63, 175, 238, 23, 64, 0, 127, 129, 66, 61, 58, 0, 52, 0, 0, 0, 193, 10, 130, 123, 63, 15, 242, 236, 63, 0, 127, 129, 66, 128, 58, 177, 52, 0, 0, 0, 193, 10, 130, 123, 63, 186, 218, 8, 64, 0, 127, 129, 66, 128, 58, 0, 52, 0, 0, 0, 193, 10, 130, 123, 63, 15, 242, 236, 63, 119, 114, 127, 63, 128, 58, 177, 52, 0, 0, 64, 193, 5, 51, 146, 63, 31, 130, 172, 63, 119, 114, 127, 63, 192, 58, 233, 52, 0, 0, 0, 193, 200, 37, 182, 190, 86, 129, 220, 63, 119, 114, 127, 63, 128, 58, 177, 52, 0, 0, 64, 193, 200, 37, 182, 190, 216, 101, 162, 63, 119, 114, 127, 63, 192, 58, 233, 52, 0, 0, 0, 65, 10, 130, 123, 63, 88, 83, 11, 192, 253, 13, 127, 193, 128, 57, 106, 55, 0, 0, 64, 65, 10, 130, 123, 63, 181, 253, 1, 192, 253, 13, 127, 193, 64, 57, 109, 55, 0, 0, 0, 65, 200, 37, 182, 190, 144, 17, 254, 191, 253, 13, 127, 193, 128, 57, 106, 55, 0, 0, 64, 65, 200, 37, 182, 190, 240, 77, 243, 191, 253, 13, 127, 193, 64, 57, 109, 55, 14, 172, 85, 193, 149, 71, 189, 63, 6, 242, 100, 191, 38, 5, 127, 193, 250, 58, 108, 55, 0, 0, 64, 193, 5, 51, 146, 63, 221, 68, 189, 191, 38, 5, 127, 193, 192, 58, 120, 55, 14, 172, 85, 193, 168, 114, 78, 63, 73, 159, 86, 191, 38, 5, 127, 193, 250, 58, 108, 55, 0, 0, 64, 193, 200, 37, 182, 190, 150, 37, 178, 191, 38, 5, 127, 193, 192, 58, 120, 55, 0, 0, 0, 0, 10, 130, 123, 63, 79, 88, 5, 192, 1, 13, 127, 193, 0, 58, 124, 55, 0, 0, 128, 64, 10, 130, 123, 63, 140, 47, 11, 192, 1, 13, 127, 193, 192, 57, 120, 55, 0, 0, 0, 0, 200, 37, 182, 190, 28, 6, 251, 191, 1, 13, 127, 193, 0, 58, 124, 55, 0, 0, 128, 64, 200, 37, 182, 190, 57, 208, 253, 191, 1, 13, 127, 193, 192, 57, 120, 55, 0, 0, 64, 193, 5, 51, 146, 63, 31, 130, 172, 63, 122, 88, 127, 63, 192, 58, 233, 52, 136, 152, 84, 193, 84, 229, 189, 63, 132, 18, 74, 63, 122, 88, 127, 63, 249, 58, 183, 52, 0, 0, 64, 193, 200, 37, 182, 190, 216, 101, 162, 63, 122, 88, 127, 63, 192, 58, 233, 52, 136, 152, 84, 193, 54, 174, 79, 63, 97, 25, 63, 63, 122, 88, 127, 63, 249, 58, 183, 52, 0, 0, 64, 65, 10, 130, 123, 63, 151, 1, 5, 64, 143, 124, 127, 63, 64, 57, 236, 52, 0, 0, 0, 65, 10, 130, 123, 63, 169, 162, 13, 64, 143, 124, 127, 63, 128, 57, 226, 52, 0, 0, 64, 65, 200, 37, 182, 190, 79, 2, 249, 63, 143, 124, 127, 63, 64, 57, 236, 52, 0, 0, 0, 65, 200, 37, 182, 190, 146, 62, 1, 64, 143, 124, 127, 63, 128, 57, 226, 52, 103, 124, 118, 192, 10, 130, 123, 63, 154, 62, 255, 191, 2, 10, 127, 193, 61, 58, 128, 55, 0, 0, 0, 0, 10, 130, 123, 63, 79, 88, 5, 192, 2, 10, 127, 193, 0, 58, 124, 55, 103, 124, 118, 192, 200, 37, 182, 190, 16, 64, 240, 191, 2, 10, 127, 193, 61, 58, 128, 55, 0, 0, 0, 0, 200, 37, 182, 190, 28, 6, 251, 191, 2, 10, 127, 193, 0, 58, 124, 55, 14, 172, 85, 193, 149, 71, 189, 63, 6, 242, 100, 191, 255, 125, 149, 62, 250, 58, 108, 55, 136, 152, 84, 193, 84, 229, 189, 63, 132, 18, 74, 63, 255, 125, 142, 62, 249, 58, 183, 52, 0, 0, 128, 193, 136, 73, 186, 63, 12, 202, 228, 190, 255, 125, 131, 59, 0, 59, 107, 55, 0, 0, 128, 193, 136, 73, 186, 63, 145, 237, 180, 62, 255, 125, 131, 54, 0, 59, 177, 52, 140, 39, 122, 65, 10, 130, 123, 63, 181, 195, 219, 191, 129, 0, 127, 63, 12, 57, 104, 55, 209, 33, 122, 65, 10, 130, 123, 63, 28, 181, 216, 63, 129, 0, 127, 63, 27, 57, 231, 52, 140, 39, 122, 65, 211, 108, 230, 190, 60, 218, 206, 191, 129, 0, 127, 63, 12, 57, 104, 55, 209, 33, 122, 65, 200, 37, 182, 190, 193, 0, 204, 63, 129, 0, 127, 63, 27, 57, 231, 52, 0, 0, 0, 193, 10, 130, 123, 63, 207, 78, 242, 191, 2, 10, 127, 193, 128, 58, 70, 55, 103, 124, 118, 192, 10, 130, 123, 63, 154, 62, 255, 191, 2, 10, 127, 193, 61, 58, 128, 55, 0, 0, 0, 193, 200, 37, 182, 190, 171, 232, 225, 191, 2, 10, 127, 193, 128, 58, 70, 55, 103, 124, 118, 192, 200, 37, 182, 190, 16, 64, 240, 191, 2, 10, 127, 193, 61, 58, 128, 55, 136, 152, 84, 193, 84, 229, 189, 63, 132, 18, 74, 63, 126, 251, 127, 63, 249, 58, 183, 52, 14, 172, 85, 193, 149, 71, 189, 63, 6, 242, 100, 191, 126, 251, 127, 63, 250, 58, 108, 55, 136, 152, 84, 193, 54, 174, 79, 63, 97, 25, 63, 63, 126, 251, 127, 63, 249, 58, 183, 52, 14, 172, 85, 193, 168, 114, 78, 63, 73, 159, 86, 191, 126, 251, 127, 63, 250, 58, 108, 55, 0, 0, 0, 65, 10, 130, 123, 63, 169, 162, 13, 64, 146, 126, 127, 63, 128, 57, 226, 52, 0, 0, 128, 64, 10, 130, 123, 63, 97, 253, 14, 64, 146, 126, 127, 63, 192, 57, 208, 52, 0, 0, 0, 65, 200, 37, 182, 190, 146, 62, 1, 64, 146, 126, 127, 63, 128, 57, 226, 52, 0, 0, 128, 64, 200, 37, 182, 190, 209, 122, 2, 64, 146, 126, 127, 63, 192, 57, 208, 52, 0, 0, 64, 65, 10, 130, 123, 63, 181, 253, 1, 192, 248, 9, 127, 193, 64, 57, 109, 55, 140, 39, 122, 65, 10, 130, 123, 63, 181, 195, 219, 191, 248, 9, 127, 193, 12, 57, 104, 55, 0, 0, 64, 65, 200, 37, 182, 190, 240, 77, 243, 191, 248, 9, 127, 193, 64, 57, 109, 55, 140, 39, 122, 65, 211, 108, 230, 190, 60, 218, 206, 191, 248, 9, 127, 193, 12, 57, 104, 55, 0, 0, 0, 0, 10, 130, 123, 63, 185, 112, 12, 64, 116, 123, 127, 63, 0, 58, 180, 52, 103, 124, 118, 192, 10, 130, 123, 63, 5, 164, 4, 64, 116, 123, 127, 63, 61, 58, 174, 52, 0, 0, 0, 0, 200, 37, 182, 190, 118, 52, 4, 64, 116, 123, 127, 63, 0, 58, 180, 52, 103, 124, 118, 192, 200, 37, 182, 190, 224, 185, 249, 63, 116, 123, 127, 63, 61, 58, 174, 52, 0, 0, 64, 193, 5, 51, 146, 63, 221, 68, 189, 191, 10, 8, 127, 193, 192, 58, 120, 55, 0, 0, 0, 193, 10, 130, 123, 63, 207, 78, 242, 191, 10, 8, 127, 193, 128, 58, 70, 55, 0, 0, 64, 193, 200, 37, 182, 190, 150, 37, 178, 191, 10, 8, 127, 193, 192, 58, 120, 55, 0, 0, 0, 193, 200, 37, 182, 190, 171, 232, 225, 191, 10, 8, 127, 193, 128, 58, 70, 55, 209, 33, 122, 65, 10, 130, 123, 63, 28, 181, 216, 63, 139, 116, 127, 63, 27, 57, 231, 52, 0, 0, 64, 65, 10, 130, 123, 63, 151, 1, 5, 64, 139, 116, 127, 63, 64, 57, 236, 52, 209, 33, 122, 65, 200, 37, 182, 190, 193, 0, 204, 63, 139, 116, 127, 63, 27, 57, 231, 52, 0, 0, 64, 65, 200, 37, 182, 190, 79, 2, 249, 63, 139, 116, 127, 63, 64, 57, 236, 52, 103, 124, 118, 192, 10, 130, 123, 63, 5, 164, 4, 64, 116, 121, 127, 63, 61, 58, 174, 52, 0, 0, 0, 193, 10, 130, 123, 63, 15, 242, 236, 63, 116, 121, 127, 63, 128, 58, 177, 52, 103, 124, 118, 192, 200, 37, 182, 190, 224, 185, 249, 63, 116, 121, 127, 63, 61, 58, 174, 52, 0, 0, 0, 193, 200, 37, 182, 190, 86, 129, 220, 63, 116, 121, 127, 63, 128, 58, 177, 52, 0, 0, 128, 64, 10, 130, 123, 63, 140, 47, 11, 192, 0, 15, 127, 193, 192, 57, 120, 55, 0, 0, 0, 65, 10, 130, 123, 63, 88, 83, 11, 192, 0, 15, 127, 193, 128, 57, 106, 55, 0, 0, 128, 64, 200, 37, 182, 190, 57, 208, 253, 191, 0, 15, 127, 193, 192, 57, 120, 55, 0, 0, 0, 65, 200, 37, 182, 190, 144, 17, 254, 191, 0, 15, 127, 193, 128, 57, 106, 55, 0, 0, 128, 64, 10, 130, 123, 63, 97, 253, 14, 64, 113, 126, 127, 63, 192, 57, 208, 52, 0, 0, 0, 0, 10, 130, 123, 63, 185, 112, 12, 64, 113, 126, 127, 63, 0, 58, 180, 52, 0, 0, 128, 64, 200, 37, 182, 190, 209, 122, 2, 64, 113, 126, 127, 63, 192, 57, 208, 52, 0, 0, 0, 0, 200, 37, 182, 190, 118, 52, 4, 64, 113, 126, 127, 63, 0, 58, 180, 52, 0, 0, 64, 65, 200, 37, 182, 190, 240, 77, 243, 191, 3, 125, 131, 68, 64, 57, 109, 55, 140, 39, 122, 65, 211, 108, 230, 190, 60, 218, 206, 191, 3, 125, 133, 64, 12, 57, 104, 55, 0, 0, 64, 65, 200, 37, 182, 190, 79, 2, 249, 63, 3, 125, 132, 64, 64, 57, 236, 52, 209, 33, 122, 65, 200, 37, 182, 190, 193, 0, 204, 63, 3, 125, 143, 64, 27, 57, 231, 52, 0, 0, 64, 65, 200, 37, 182, 190, 79, 2, 249, 63, 0, 127, 130, 63, 64, 57, 236, 52, 0, 0, 0, 65, 200, 37, 182, 190, 146, 62, 1, 64, 0, 127, 129, 64, 128, 57, 226, 52, 0, 0, 64, 65, 200, 37, 182, 190, 240, 77, 243, 191, 0, 127, 129, 64, 64, 57, 109, 55, 0, 0, 0, 65, 200, 37, 182, 190, 144, 17, 254, 191, 0, 127, 129, 64, 128, 57, 106, 55, 0, 0, 128, 64, 200, 37, 182, 190, 209, 122, 2, 64, 0, 127, 129, 64, 192, 57, 208, 52, 0, 0, 128, 64, 200, 37, 182, 190, 57, 208, 253, 191, 0, 127, 130, 63, 192, 57, 120, 55, 0, 0, 0, 0, 200, 37, 182, 190, 118, 52, 4, 64, 0, 127, 129, 65, 0, 58, 180, 52, 0, 0, 0, 0, 200, 37, 182, 190, 28, 6, 251, 191, 0, 127, 130, 63, 0, 58, 124, 55, 103, 124, 118, 192, 200, 37, 182, 190, 224, 185, 249, 63, 0, 127, 129, 65, 61, 58, 174, 52, 103, 124, 118, 192, 200, 37, 182, 190, 16, 64, 240, 191, 0, 127, 129, 64, 61, 58, 128, 55, 0, 0, 0, 193, 200, 37, 182, 190, 86, 129, 220, 63, 0, 127, 129, 66, 128, 58, 177, 52, 0, 0, 0, 193, 200, 37, 182, 190, 171, 232, 225, 191, 0, 127, 129, 64, 128, 58, 70, 55, 0, 0, 64, 193, 200, 37, 182, 190, 216, 101, 162, 63, 0, 127, 137, 63, 192, 58, 233, 52, 0, 0, 64, 193, 200, 37, 182, 190, 150, 37, 178, 191, 0, 127, 145, 63, 192, 58, 120, 55, 0, 0, 64, 193, 200, 37, 182, 190, 216, 101, 162, 63, 60, 67, 175, 100, 192, 58, 233, 52, 136, 152, 84, 193, 54, 174, 79, 63, 97, 25, 63, 63, 60, 67, 183, 96, 249, 58, 183, 52, 0, 0, 64, 193, 200, 37, 182, 190, 150, 37, 178, 191, 60, 67, 186, 95, 192, 58, 120, 55, 14, 172, 85, 193, 168, 114, 78, 63, 73, 159, 86, 191, 60, 67, 201, 88, 250, 58, 108, 55, 0, 0, 0, 193, 118, 251, 104, 191, 167, 64, 166, 61, 247, 151, 114, 58, 0, 50, 222, 53, 0, 0, 64, 193, 34, 56, 18, 191, 167, 64, 166, 61, 247, 151, 109, 59, 0, 49, 198, 53, 0, 0, 0, 193, 78, 127, 58, 191, 117, 118, 234, 63, 247, 151, 112, 58, 0, 50, 0, 52, 0, 0, 64, 193, 242, 119, 199, 190, 22, 189, 183, 63, 247, 151, 107, 59, 0, 49, 0, 52, 0, 0, 0, 0, 45, 207, 143, 191, 167, 64, 166, 61, 0, 140, 126, 63, 0, 52, 238, 53, 103, 124, 118, 192, 45, 207, 143, 191, 167, 64, 166, 61, 0, 140, 124, 63, 9, 51, 232, 53, 0, 0, 0, 0, 50, 34, 113, 191, 174, 16, 9, 64, 0, 140, 125, 63, 0, 52, 0, 52, 103, 124, 118, 192, 50, 34, 113, 191, 225, 38, 2, 64, 0, 140, 123, 63, 9, 51, 0, 52, 0, 0, 64, 193, 34, 56, 18, 191, 167, 64, 166, 61, 228, 175, 86, 49, 0, 49, 198, 53, 0, 0, 128, 193, 83, 94, 55, 63, 167, 64, 166, 61, 228, 175, 83, 50, 0, 48, 11, 53, 0, 0, 64, 193, 242, 119, 199, 190, 22, 189, 183, 63, 228, 175, 86, 49, 0, 49, 0, 52, 0, 0, 128, 193, 123, 218, 101, 63, 30, 55, 244, 62, 228, 175, 82, 51, 0, 48, 0, 52, 0, 0, 128, 64, 45, 207, 143, 191, 167, 64, 166, 61, 0, 140, 126, 63, 128, 52, 243, 53, 0, 0, 0, 0, 45, 207, 143, 191, 167, 64, 166, 61, 0, 140, 126, 63, 0, 52, 238, 53, 0, 0, 128, 64, 50, 34, 113, 191, 174, 16, 9, 64, 0, 140, 126, 63, 128, 52, 0, 52, 0, 0, 0, 0, 50, 34, 113, 191, 174, 16, 9, 64, 0, 140, 127, 63, 0, 52, 0, 52, 0, 0, 64, 65, 45, 207, 143, 191, 167, 64, 166, 61, 0, 140, 126, 63, 128, 53, 252, 53, 0, 0, 0, 65, 45, 207, 143, 191, 167, 64, 166, 61, 0, 140, 126, 62, 0, 53, 248, 53, 0, 0, 64, 65, 50, 34, 113, 191, 7, 155, 0, 64, 0, 140, 126, 64, 128, 53, 0, 52, 0, 0, 0, 65, 50, 34, 113, 191, 174, 16, 9, 64, 0, 140, 126, 61, 0, 53, 0, 52, 0, 0, 0, 65, 45, 207, 143, 191, 167, 64, 166, 61, 0, 140, 126, 63, 0, 53, 248, 53, 0, 0, 0, 65, 50, 34, 113, 191, 174, 16, 9, 64, 0, 140, 126, 63, 0, 53, 0, 52, 0, 0, 128, 65, 62, 35, 93, 191, 167, 64, 166, 61, 7, 148, 118, 67, 0, 54, 252, 53, 0, 0, 64, 65, 45, 207, 143, 191, 167, 64, 166, 61, 7, 148, 120, 71, 128, 53, 252, 53, 0, 0, 128, 65, 5, 167, 46, 191, 60, 46, 206, 63, 7, 148, 119, 69, 0, 54, 0, 52, 0, 0, 64, 65, 50, 34, 113, 191, 7, 155, 0, 64, 7, 148, 120, 72, 128, 53, 0, 52, 103, 124, 118, 192, 45, 207, 143, 191, 167, 64, 166, 61, 251, 146, 119, 60, 9, 51, 232, 53, 0, 0, 0, 193, 118, 251, 104, 191, 167, 64, 166, 61, 251, 146, 116, 60, 0, 50, 222, 53, 103, 124, 118, 192, 50, 34, 113, 191, 225, 38, 2, 64, 251, 146, 118, 60, 9, 51, 0, 52, 0, 0, 0, 193, 78, 127, 58, 191, 117, 118, 234, 63, 251, 146, 115, 60, 0, 50, 0, 52 ),
-"array_index_data": PoolByteArray( 0, 0, 1, 0, 2, 0, 2, 0, 1, 0, 3, 0, 3, 0, 1, 0, 4, 0, 5, 0, 6, 0, 7, 0, 7, 0, 6, 0, 8, 0, 9, 0, 10, 0, 11, 0, 11, 0, 10, 0, 12, 0, 12, 0, 10, 0, 13, 0, 13, 0, 10, 0, 14, 0, 14, 0, 10, 0, 15, 0, 16, 0, 17, 0, 18, 0, 18, 0, 17, 0, 19, 0, 20, 0, 21, 0, 22, 0, 22, 0, 21, 0, 23, 0, 23, 0, 21, 0, 24, 0, 24, 0, 21, 0, 25, 0, 25, 0, 21, 0, 26, 0, 27, 0, 28, 0, 29, 0, 29, 0, 28, 0, 30, 0, 31, 0, 32, 0, 33, 0, 33, 0, 32, 0, 34, 0, 35, 0, 36, 0, 37, 0, 37, 0, 36, 0, 38, 0, 39, 0, 40, 0, 41, 0, 41, 0, 40, 0, 42, 0, 43, 0, 44, 0, 45, 0, 45, 0, 44, 0, 46, 0, 47, 0, 48, 0, 49, 0, 49, 0, 48, 0, 50, 0, 51, 0, 52, 0, 53, 0, 53, 0, 52, 0, 54, 0, 55, 0, 56, 0, 57, 0, 57, 0, 56, 0, 58, 0, 59, 0, 60, 0, 61, 0, 61, 0, 60, 0, 62, 0, 63, 0, 64, 0, 65, 0, 65, 0, 64, 0, 66, 0, 67, 0, 68, 0, 69, 0, 69, 0, 68, 0, 70, 0, 71, 0, 72, 0, 73, 0, 73, 0, 72, 0, 74, 0, 75, 0, 76, 0, 77, 0, 77, 0, 76, 0, 78, 0, 79, 0, 80, 0, 81, 0, 81, 0, 80, 0, 82, 0, 83, 0, 84, 0, 85, 0, 85, 0, 84, 0, 86, 0, 87, 0, 88, 0, 89, 0, 89, 0, 88, 0, 90, 0, 91, 0, 92, 0, 93, 0, 93, 0, 92, 0, 94, 0, 76, 0, 43, 0, 78, 0, 78, 0, 43, 0, 45, 0, 95, 0, 96, 0, 97, 0, 97, 0, 96, 0, 98, 0, 99, 0, 100, 0, 101, 0, 101, 0, 100, 0, 102, 0, 103, 0, 104, 0, 105, 0, 105, 0, 104, 0, 106, 0, 60, 0, 107, 0, 62, 0, 62, 0, 107, 0, 108, 0, 109, 0, 110, 0, 55, 0, 55, 0, 110, 0, 56, 0, 44, 0, 47, 0, 46, 0, 46, 0, 47, 0, 49, 0, 111, 0, 112, 0, 39, 0, 39, 0, 112, 0, 40, 0, 113, 0, 114, 0, 115, 0, 115, 0, 114, 0, 116, 0, 48, 0, 117, 0, 50, 0, 50, 0, 117, 0, 118, 0, 118, 0, 117, 0, 119, 0, 120, 0, 121, 0, 122, 0, 122, 0, 121, 0, 123, 0, 124, 0, 125, 0, 126, 0, 126, 0, 125, 0, 127, 0, 128, 0, 129, 0, 130, 0, 130, 0, 129, 0, 131, 0, 132, 0, 133, 0, 134, 0, 134, 0, 133, 0, 135, 0, 136, 0, 137, 0, 138, 0, 138, 0, 137, 0, 139, 0, 139, 0, 137, 0, 140, 0, 141, 0, 142, 0, 133, 0, 133, 0, 142, 0, 135, 0, 135, 0, 142, 0, 143, 0, 144, 0, 145, 0, 146, 0, 146, 0, 145, 0, 147, 0, 129, 0, 132, 0, 131, 0, 131, 0, 132, 0, 134, 0, 148, 0, 128, 0, 149, 0, 149, 0, 128, 0, 130, 0, 150, 0, 148, 0, 151, 0, 151, 0, 148, 0, 149, 0, 152, 0, 153, 0, 154, 0, 154, 0, 153, 0, 155, 0, 156, 0, 157, 0, 158, 0, 158, 0, 157, 0, 159, 0, 160, 0, 161, 0, 162, 0, 162, 0, 161, 0, 163, 0, 118, 0, 119, 0, 141, 0, 141, 0, 119, 0, 142, 0, 164, 0, 165, 0, 166, 0, 166, 0, 165, 0, 167, 0, 168, 0, 169, 0, 170, 0, 170, 0, 169, 0, 171, 0, 172, 0, 173, 0, 174, 0, 174, 0, 173, 0, 175, 0, 176, 0, 177, 0, 178, 0, 178, 0, 177, 0, 179, 0, 180, 0, 181, 0, 182, 0, 182, 0, 181, 0, 183, 0, 184, 0, 185, 0, 186, 0, 186, 0, 185, 0, 187, 0, 188, 0, 189, 0, 190, 0, 190, 0, 189, 0, 191, 0, 192, 0, 193, 0, 194, 0, 194, 0, 193, 0, 195, 0, 196, 0, 197, 0, 198, 0, 198, 0, 197, 0, 199, 0, 200, 0, 201, 0, 202, 0, 202, 0, 201, 0, 203, 0, 204, 0, 205, 0, 206, 0, 206, 0, 205, 0, 207, 0, 208, 0, 209, 0, 210, 0, 210, 0, 209, 0, 211, 0, 212, 0, 213, 0, 214, 0, 214, 0, 213, 0, 215, 0, 216, 0, 217, 0, 218, 0, 218, 0, 217, 0, 219, 0, 220, 0, 221, 0, 222, 0, 222, 0, 221, 0, 223, 0, 224, 0, 225, 0, 226, 0, 226, 0, 225, 0, 227, 0, 228, 0, 229, 0, 230, 0, 230, 0, 229, 0, 231, 0, 232, 0, 233, 0, 234, 0, 234, 0, 233, 0, 235, 0, 233, 0, 236, 0, 235, 0, 235, 0, 236, 0, 237, 0, 236, 0, 238, 0, 237, 0, 237, 0, 238, 0, 239, 0, 238, 0, 240, 0, 239, 0, 239, 0, 240, 0, 241, 0, 240, 0, 242, 0, 241, 0, 241, 0, 242, 0, 243, 0, 242, 0, 244, 0, 243, 0, 243, 0, 244, 0, 245, 0, 246, 0, 247, 0, 248, 0, 248, 0, 247, 0, 249, 0, 250, 0, 251, 0, 252, 0, 252, 0, 251, 0, 253, 0, 254, 0, 255, 0, 0, 1, 0, 1, 255, 0, 1, 1, 2, 1, 3, 1, 4, 1, 4, 1, 3, 1, 5, 1, 6, 1, 7, 1, 8, 1, 8, 1, 7, 1, 9, 1, 10, 1, 11, 1, 12, 1, 12, 1, 11, 1, 13, 1, 14, 1, 6, 1, 15, 1, 15, 1, 6, 1, 8, 1, 16, 1, 17, 1, 18, 1, 18, 1, 17, 1, 19, 1, 20, 1, 21, 1, 22, 1, 22, 1, 21, 1, 23, 1 ),
-"blend_shape_data": [ ],
-"format": 2194711,
-"index_count": 498,
-"material": SubResource( 15 ),
-"name": "Material",
-"primitive": 4,
-"skeleton_aabb": [ ],
-"vertex_count": 280
-}
-
-[sub_resource type="Shader" id=18]
-code = "shader_type spatial;
-render_mode blend_mix,depth_draw_always,cull_back,diffuse_burley,specular_schlick_ggx,unshaded;
-
-void fragment()
-{
- ALBEDO.rgb = texture(SCREEN_TEXTURE, SCREEN_UV).rgb;
- //ALPHA = texture(SCREEN_TEXTURE, SCREEN_UV).a;
- //DEPTH = 0.0;
-}"
-
-[sub_resource type="ShaderMaterial" id=19]
-render_priority = -126
-shader = SubResource( 18 )
-
-[sub_resource type="BoxShape" id=20]
-extents = Vector3( 12.3896, 0.239365, 1.86841 )
-
-[sub_resource type="BoxShape" id=21]
-extents = Vector3( 7.3368, 0.780973, 0.124213 )
-
-[sub_resource type="BoxShape" id=23]
-extents = Vector3( 7.3368, 0.934506, 0.124213 )
-
-[sub_resource type="BoxShape" id=24]
-extents = Vector3( 1.57343, 0.934506, 1.35201 )
-
-[sub_resource type="BoxShape" id=25]
-extents = Vector3( 0.115313, 0.934506, 1.68658 )
-
-[sub_resource type="BoxShape" id=22]
-extents = Vector3( 2.14672, 0.239365, 1.59078 )
-
-[sub_resource type="NavigationMesh" id=26]
-vertices = PoolVector3Array( 4.5, 1.37649, -2.25, 4.5, 1.37649, -2, 6.25, 1.37649, -2, 6.25, 1.37649, -2.25, 14.5, 0.12649, -1.5, 14.5, 0.12649, -1.25, 14.75, 0.12649, -1.25, 14.75, 0.12649, -2.25, 13.75, 0.12649, -1.75, 13.75, 0.12649, -1.5, 14.5, 0.12649, -1.5, 14.75, 0.12649, -2.25, 11.5, 0.12649, -2.25, 11.5, 0.12649, -2, 12.75, 0.12649, -2, 14.75, 0.12649, -2.25, 12.75, 0.12649, -2, 12.75, 0.12649, -1.75, 13.75, 0.12649, -1.75, 14.75, 0.12649, -2.25, -6, 1.37649, 2, -6.25, 1.37649, 2, -6.25, 1.37649, 2.25, -4, 1.37649, 2.25, -4, 1.37649, 2, -4.25, 1.37649, 2, 13, 1.12649, 0.75, 13, 1.12649, -0.5, 12, 0.12649, -0.75, 11, 0.12649, 1, 12, 0.12649, 0.875, -6, 1.37649, 2, -6.25, 1.37649, 2.25, -4, 1.37649, 2.25, -4.25, 1.37649, 2, 8, 0.12649, -1.25, 8, 0.62649, -1.5, 3.5, 0.12649, -1.5, -6, 0.62649, 1, -6, 1.37649, 2, -4.25, 1.37649, 2, -4.25, 0.62649, 1, -11.75, 0.12649, -1.5, -14.25, 0.12649, 1.25, -14.25, 0.62649, 1.5, -6.5, 0.12649, 1.75, -6.5, 0.12649, 1, -4.25, 0.62649, 1, -3.75, 0.12649, 1, -4.25, 0.12649, -1.75, 11, 0.12649, 1, 12, 0.12649, -0.75, 12, 0.12649, -1, 8, 0.12649, -1.25, 8.5, 0.12649, 1.25, 8.5, 0.12649, 1.25, 11, 0.12649, 1.25, 11, 0.12649, 1, -11.75, 0.12649, -1.5, -14.25, 0.12649, -1.5, -14.25, 0.12649, -1.25, -15.25, 0.12649, -1.25, -15.25, -0.12351, 1.25, -14.25, 0.12649, 1.25, -14.25, 0.12649, -1.25, -6, 0.62649, 1, -4.25, 0.62649, 1, -4.25, 0.12649, -1.75, -5.41667, 0.12649, 0.0833333, -11.75, 0.12649, -1.5, -14.25, 0.12649, -1.25, -14.25, 0.12649, 1.25, 0, 0.12649, 1.5, 3.5, 0.12649, -1.5, 3.5, 0.62649, -1.75, -4.25, 0.12649, -1.75, -3.75, 0.12649, 1, -4.25, 0.12649, -1.75, -11.75, 0.62649, -1.75, -11.75, 0.12649, -1.5, -6.5, 0.12649, 1, -6, 0.62649, 1, -5.41667, 0.12649, 0.0833333, 8.5, 0.62649, 1.5, 8.5, 0.12649, 1.25, 8, 0.12649, -1.25, 3.5, 0.12649, -1.5, 0, 0.12649, 1.5, 7.08333, 0.12649, 1.5, -3.75, 0.12649, 1.75, 0, 0.62649, 1.75, 0, 0.12649, 1.5, -3.75, 0.12649, 1, 10.25, 1.37649, -1.75, 10.25, 1.37649, -1.5, 11.5, 1.62649, -1.5, 11.5, 1.62649, -1.75, 13.5, 1.87649, 0.75, 13, 1.87649, 1, 13, 1.87649, 1.25, 14.75, 1.87649, 1, 14.75, 1.87649, 0.75, 14.5, 1.87649, -0.75, 14.5, 1.62649, -1, 13.75, 1.87649, -1, 13.5, 1.87649, -0.75, 15.5, 1.87649, -0.5, 15.5, 1.87649, -0.75, 14.5, 1.87649, -0.75, 14.75, 1.87649, 0.75, 15.5, 1.87649, -0.5, 14.5, 1.87649, -0.75, 13.5, 1.87649, -0.75, 13.5, 1.87649, 0.75, 13.5, 1.87649, -0.75, 13.75, 1.87649, -1, 13.75, 1.62649, -1.25, 12, 1.62649, -1.5, 12, 1.62649, -1.25, 15.75, 1.87649, 0.75, 15.75, 1.87649, -0.5, 15.5, 1.87649, -0.5, 14.75, 1.87649, 0.75, 12.75, 0.12649, 2, 11.5, 0.12649, 2, 11.5, 0.12649, 2.25, 14.75, 0.12649, 2.25, 14.75, 0.12649, 2.25, 14.75, 0.12649, 1.5, 12.75, 0.12649, 1.75, 12.75, 0.12649, 2, -13, 1.37649, 2, -13, 1.37649, 2.25, -11.75, 1.37649, 2.25, -11.75, 1.37649, 2, 2.25, 1.37649, 2, 2.25, 1.37649, 2.25, 6.25, 1.37649, 2.25, 6.25, 1.37649, 2 )
-polygons = [ PoolIntArray( 3, 2, 0 ), PoolIntArray( 0, 2, 1 ), PoolIntArray( 5, 4, 6 ), PoolIntArray( 6, 4, 7 ), PoolIntArray( 9, 8, 10 ), PoolIntArray( 10, 8, 11 ), PoolIntArray( 13, 12, 14 ), PoolIntArray( 14, 12, 15 ), PoolIntArray( 17, 16, 18 ), PoolIntArray( 18, 16, 19 ), PoolIntArray( 22, 21, 20 ), PoolIntArray( 25, 24, 23 ), PoolIntArray( 26, 30, 27 ), PoolIntArray( 27, 30, 28 ), PoolIntArray( 28, 30, 29 ), PoolIntArray( 34, 33, 31 ), PoolIntArray( 31, 33, 32 ), PoolIntArray( 37, 36, 35 ), PoolIntArray( 41, 40, 38 ), PoolIntArray( 38, 40, 39 ), PoolIntArray( 43, 42, 44 ), PoolIntArray( 44, 42, 46 ), PoolIntArray( 44, 46, 45 ), PoolIntArray( 49, 48, 47 ), PoolIntArray( 51, 50, 52 ), PoolIntArray( 52, 50, 54 ), PoolIntArray( 52, 54, 53 ), PoolIntArray( 57, 56, 55 ), PoolIntArray( 60, 59, 58 ), PoolIntArray( 64, 63, 61 ), PoolIntArray( 61, 63, 62 ), PoolIntArray( 65, 68, 66 ), PoolIntArray( 66, 68, 67 ), PoolIntArray( 69, 71, 70 ), PoolIntArray( 73, 72, 74 ), PoolIntArray( 74, 72, 76 ), PoolIntArray( 74, 76, 75 ), PoolIntArray( 81, 80, 82 ), PoolIntArray( 82, 80, 77 ), PoolIntArray( 77, 80, 79 ), PoolIntArray( 77, 79, 78 ), PoolIntArray( 83, 88, 84 ), PoolIntArray( 84, 88, 85 ), PoolIntArray( 85, 88, 86 ), PoolIntArray( 86, 88, 87 ), PoolIntArray( 90, 89, 91 ), PoolIntArray( 91, 89, 92 ), PoolIntArray( 96, 95, 93 ), PoolIntArray( 93, 95, 94 ), PoolIntArray( 98, 97, 99 ), PoolIntArray( 99, 97, 100 ), PoolIntArray( 100, 97, 101 ), PoolIntArray( 103, 102, 104 ), PoolIntArray( 104, 102, 105 ), PoolIntArray( 108, 107, 106 ), PoolIntArray( 110, 109, 111 ), PoolIntArray( 111, 109, 112 ), PoolIntArray( 112, 109, 113 ), PoolIntArray( 115, 114, 116 ), PoolIntArray( 116, 114, 118 ), PoolIntArray( 116, 118, 117 ), PoolIntArray( 120, 119, 121 ), PoolIntArray( 121, 119, 122 ), PoolIntArray( 124, 123, 125 ), PoolIntArray( 125, 123, 126 ), PoolIntArray( 130, 129, 127 ), PoolIntArray( 127, 129, 128 ), PoolIntArray( 134, 133, 131 ), PoolIntArray( 131, 133, 132 ), PoolIntArray( 138, 137, 135 ), PoolIntArray( 135, 137, 136 ) ]
-agent_height = 1.8
-agent_radius = 0.18
-agent_max_slope = 46.0
-edge_max_error = 0.68
-
-[sub_resource type="CubeMesh" id=27]
-size = Vector3( 30, 0.1, 5 )
-
-[sub_resource type="CubeMesh" id=29]
-size = Vector3( 2, 0.35, 2.5 )
-
-[sub_resource type="ConvexPolygonShape" id=30]
-points = PoolVector3Array( 1, 0.174966, 1.25, 1, -0.175, 1.25, 1, 0.174966, -1.25, -1, 0.174966, 1.25, -1, -0.175, 1.25, 1, -0.175, -1.25, -1, 0.174966, -1.25, -1, -0.175, -1.25 )
-
-[node name="Gunboat" type="RigidBody"]
-mass = 13500.0
-physics_material_override = SubResource( 28 )
-can_sleep = false
-linear_damp = 1.0
-angular_damp = 1.0
-script = ExtResource( 1 )
-
-[node name="SteerArea" type="Area" parent="."]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 6.36737, 1.76137, 0 )
-monitoring = false
-
-[node name="CollisionShape" type="CollisionShape" parent="SteerArea"]
-shape = SubResource( 5 )
-
-[node name="MeshInstance" type="MeshInstance" parent="SteerArea"]
-mesh = SubResource( 6 )
-
-[node name="FloatPoints" type="Spatial" parent="."]
-
-[node name="FloatArea" type="Area" parent="FloatPoints"]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 7.4398, -0.80712, -2.36264 )
-collision_layer = 0
-collision_mask = 4
-monitorable = false
-
-[node name="CollisionShape" type="CollisionShape" parent="FloatPoints/FloatArea"]
-shape = SubResource( 7 )
-
-[node name="FloatArea2" type="Area" parent="FloatPoints"]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 7.4398, -0.80712, 2.39068 )
-collision_layer = 0
-collision_mask = 4
-monitorable = false
-
-[node name="CollisionShape" type="CollisionShape" parent="FloatPoints/FloatArea2"]
-shape = SubResource( 7 )
-
-[node name="FloatArea5" type="Area" parent="FloatPoints"]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.807551, 4.064 )
-collision_layer = 0
-collision_mask = 4
-monitorable = false
-
-[node name="CollisionShape" type="CollisionShape" parent="FloatPoints/FloatArea5"]
-shape = SubResource( 7 )
-
-[node name="FloatArea6" type="Area" parent="FloatPoints"]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.807551, -4.064 )
-collision_layer = 0
-collision_mask = 4
-monitorable = false
-
-[node name="CollisionShape" type="CollisionShape" parent="FloatPoints/FloatArea6"]
-shape = SubResource( 7 )
-
-[node name="FloatArea3" type="Area" parent="FloatPoints"]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -7.44, -0.806844, 2.391 )
-collision_layer = 0
-collision_mask = 4
-monitorable = false
-
-[node name="CollisionShape" type="CollisionShape" parent="FloatPoints/FloatArea3"]
-shape = SubResource( 7 )
-
-[node name="FloatArea4" type="Area" parent="FloatPoints"]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -7.44, -0.806844, -2.391 )
-collision_layer = 0
-collision_mask = 4
-monitorable = false
-
-[node name="CollisionShape" type="CollisionShape" parent="FloatPoints/FloatArea4"]
-shape = SubResource( 7 )
-
-[node name="Mast" type="Spatial" parent="."]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 3.63842, 5.76149, 0 )
-
-[node name="MastPole" type="MeshInstance" parent="Mast"]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5.93756, 0 )
-mesh = SubResource( 9 )
-skeleton = NodePath("../..")
-material/0 = SubResource( 12 )
-
-[node name="Sail" type="Spatial" parent="Mast"]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.113369, 8.41979, 0 )
-
-[node name="SailMesh" type="MeshInstance" parent="Mast/Sail"]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.617531, 0 )
-mesh = SubResource( 13 )
-skeleton = NodePath("../..")
-
-[node name="Rudder" type="Spatial" parent="."]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16.0094, 0, 0 )
-
-[node name="RudderMesh" type="MeshInstance" parent="Rudder"]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.651875, 0, 0 )
-mesh = SubResource( 14 )
-skeleton = NodePath("../..")
-
-[node name="laetine" type="MeshInstance" parent="."]
-transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0 )
-mesh = SubResource( 16 )
-
-[node name="laetine_mask" type="MeshInstance" parent="."]
-transform = Transform( -1, 0, -8.74228e-08, 0, 0.75, 0, 8.74228e-08, 0, -1, 0, -0.214627, 0 )
-visible = false
-mesh = ExtResource( 4 )
-skeleton = NodePath("")
-material/0 = SubResource( 19 )
-
-[node name="CollisionShape" type="CollisionShape" parent="."]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -3.60351, -0.594547, 0 )
-shape = SubResource( 20 )
-
-[node name="CollisionShape3" type="CollisionShape" parent="."]
-transform = Transform( 0.999005, 0, -0.0445958, 0, 1, 0, 0.0445958, 0, 0.999005, -8.64722, 0.222032, 2.00624 )
-shape = SubResource( 21 )
-
-[node name="CollisionShape5" type="CollisionShape" parent="."]
-transform = Transform( 0.997985, 0, 0.0634524, 0, 1, 0, -0.0634524, 0, 0.997985, 5.96797, 0.222032, 1.98993 )
-shape = SubResource( 23 )
-
-[node name="CollisionShape6" type="CollisionShape" parent="."]
-transform = Transform( 0.997734, 0, -0.0672839, 0, 1, 0, 0.0672839, 0, 0.997734, 5.96797, 0.222032, -1.96965 )
-shape = SubResource( 23 )
-
-[node name="CollisionShape7" type="CollisionShape" parent="."]
-transform = Transform( 0.997734, 0, -0.0672839, 0, 1, 0, 0.0672839, 0, 0.997734, 14.4082, 0.423598, 0.0317991 )
-shape = SubResource( 24 )
-
-[node name="CollisionShape8" type="CollisionShape" parent="."]
-transform = Transform( 0.999989, 0, 0.00459021, 0, 1, 0, -0.00459021, 0, 0.999989, -15.8389, 0.423598, -0.0761639 )
-shape = SubResource( 25 )
-
-[node name="CollisionShape4" type="CollisionShape" parent="."]
-transform = Transform( 0.999644, 0, 0.0266829, 0, 1, 0, -0.0266829, 0, 0.999644, -8.61846, 0.222032, -2.11819 )
-shape = SubResource( 21 )
-
-[node name="CollisionShape2" type="CollisionShape" parent="."]
-transform = Transform( 0.966756, -0.255699, 0, 0.255699, 0.966756, 0, 0, 0, 1, 10.733, -0.0678967, 0.0285335 )
-shape = SubResource( 22 )
-
-[node name="Cannon" parent="." instance=ExtResource( 2 )]
-transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 3.29231, 0.746166, -2.13535 )
-
-[node name="NavigationMeshInstance" type="NavigationMeshInstance" parent="."]
-navmesh = SubResource( 26 )
-
-[node name="MeshInstance" type="MeshInstance" parent="NavigationMeshInstance"]
-transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.282388, 0 )
-visible = false
-mesh = SubResource( 27 )
-
-[node name="laetine" type="MeshInstance" parent="NavigationMeshInstance"]
-transform = Transform( -1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0 )
-visible = false
-mesh = SubResource( 16 )
-
-[node name="ramp" type="MeshInstance" parent="NavigationMeshInstance"]
-transform = Transform( 1, 0, 0, 0, 0.816238, 0.577715, 0, -0.577715, 0.816238, -5.03993, 0.157205, 1.35372 )
-visible = false
-mesh = SubResource( 29 )
-
-[node name="ramp" type="MeshInstance" parent="."]
-transform = Transform( 1, 0, 0, 0, 0.771436, 0.636307, 0, -0.636307, 0.771436, -5.03993, 0.255733, 1.26566 )
-mesh = SubResource( 29 )
-
-[node name="CollisionShape9" type="CollisionShape" parent="."]
-transform = Transform( 1, 0, 0, 0, 0.855174, 0.51834, 0, -0.51834, 0.855174, -5.03993, 0.255733, 1.26566 )
-shape = SubResource( 30 )
-
-[node name="Ladder" parent="." instance=ExtResource( 5 )]
-transform = Transform( -1, 0, -8.74228e-08, 0, 3, 0, 8.74228e-08, 0, -1, -7.1768, -0.262492, -2.50338 )
diff --git a/godot/scenes/vehicles/Gunbrig.tscn b/godot/scenes/vehicles/Gunbrig.tscn
index ce417c7..91900c3 100644
--- a/godot/scenes/vehicles/Gunbrig.tscn
+++ b/godot/scenes/vehicles/Gunbrig.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=24 format=2]
+[gd_scene load_steps=25 format=2]
[ext_resource path="res://scripts/vehicles/Gunboat.gd" type="Script" id=1]
[ext_resource path="res://scenes/machines/Cannon.tscn" type="PackedScene" id=2]
@@ -53,6 +53,9 @@ agent_radius = 0.18
agent_max_slope = 46.0
region_min_size = 3.0
+[sub_resource type="BoxShape" id=36]
+extents = Vector3( 10.0294, 0.598376, 0.166381 )
+
[node name="Gunbrig" type="RigidBody"]
mass = 238000.0
physics_material_override = SubResource( 28 )
@@ -346,3 +349,11 @@ mesh = ExtResource( 8 )
transform = Transform( 0.926234, 1.7263e-09, 0.0323448, 0.0323448, -1.10483e-07, -0.926234, 1.7263e-09, 0.926799, -1.10483e-07, -10.6379, 11.734, -0.0107608 )
visible = false
mesh = ExtResource( 7 )
+
+[node name="GunwhaleR" type="CollisionShape" parent="."]
+transform = Transform( 0.999486, 0, -0.0320562, 0, 1, 0, 0.0320562, 0, 0.999486, -0.646409, 0.658986, 3.50438 )
+shape = SubResource( 36 )
+
+[node name="GunwhaleR2" type="CollisionShape" parent="."]
+transform = Transform( 0.999486, 0, 0.0320562, 0, 1, 0, -0.0320562, 0, 0.999486, -0.646409, 0.658986, -3.46571 )
+shape = SubResource( 36 )
diff --git a/godot/scenes/vehicles/ship_parts/SquareSail.gd b/godot/scenes/vehicles/ship_parts/SquareSail.gd
index b387232..72159d8 100644
--- a/godot/scenes/vehicles/ship_parts/SquareSail.gd
+++ b/godot/scenes/vehicles/ship_parts/SquareSail.gd
@@ -7,6 +7,8 @@ func _ready():
wind_bone = $Skeleton.find_bone("Bone")
func set_sheet(amount: float): #0 to 1
+ $Sheet.transform.origin.y = amount * sheet_out
+ print(amount)
$Skeleton/IKL.start(true)
$Skeleton/IKR.start(true)
- $Sheet.transform.origin.y = amount * sheet_out
+
diff --git a/godot/scenes/weapons/grapplinghook.gd b/godot/scenes/weapons/grapplinghook.gd
new file mode 100644
index 0000000..f7c1fa8
--- /dev/null
+++ b/godot/scenes/weapons/grapplinghook.gd
@@ -0,0 +1,98 @@
+extends Resource
+
+var player_owner: RigidBody = null
+const fist_damage: int = 15
+var can_throw: bool = true
+var hooking: bool = false
+
+var pin_root: PinJoint = PinJoint.new()
+var pin_mid: PinJoint = PinJoint.new()
+var pin_player: PinJoint = PinJoint.new()
+
+var rope_seg1: RigidBody = null #preload("res://scenes/environment/RopeSegment.tscn").instance()
+var rope_seg2: RigidBody = null #preload("res://scenes/environment/RopeSegment.tscn").instance()
+
+const name: String = "GRAPPLINGHOOK"
+
+func init(owner):
+ player_owner = owner
+ rope_seg1 = preload("res://scenes/environment/RopeSegment.tscn").instance()
+ rope_seg2 = preload("res://scenes/environment/RopeSegment.tscn").instance()
+
+func deselect() -> bool:
+ if can_throw and !hooking:
+ return true
+ return false
+
+func select() -> void:
+ player_owner.rpc("anim_event", {"VMANIMPLAY" : "rockets_idle_vm"})
+
+func attack1():
+ if !can_throw or hooking:
+ return
+ can_throw = false
+ player_owner.rpc("anim_event", {"VMANIMPLAY" : "rockets_launch_vm"})
+ yield(player_owner.get_tree().create_timer(0.45), "timeout")
+ hooking = true
+ player_owner.gun_ray.force_raycast_update()
+ if player_owner.gun_ray.is_colliding():
+ var hit = player_owner.gun_ray.get_collider()
+ var hitpt: Vector3 = player_owner.gun_ray.get_collision_point()
+ var vlen: float = (hitpt - player_owner.head.global_transform.origin).length()
+ player_owner.world.add_child(pin_root)
+ player_owner.world.add_child(pin_mid)
+ player_owner.world.add_child(pin_player)
+ player_owner.world.add_child(rope_seg1)
+ player_owner.world.add_child(rope_seg2)
+
+ pin_root.global_transform.origin = hitpt
+ pin_player.global_transform.origin = player_owner.head.global_transform.origin
+ pin_mid.global_transform.origin = hitpt.move_toward(player_owner.head.global_transform.origin, vlen/2)
+ pin_player.global_transform.origin += player_owner.velocity*0.0167
+ print(pin_root.global_transform.origin)
+ print(pin_player.global_transform.origin)
+ print(pin_mid.global_transform.origin)
+ #should apply to both
+ rope_seg1.get_node("CollisionShape").shape.extents = Vector3(0.1,0.1,vlen/2)
+ #rope_seg2.get_node("CollisionShape").shape.extents = Vector3(0.1,0.1,vec.length()/2)
+ rope_seg1.global_transform.origin = hitpt.move_toward(player_owner.head.global_transform.origin, vlen*0.25)
+ rope_seg2.global_transform.origin = hitpt.move_toward(player_owner.head.global_transform.origin, 0.75*vlen)
+ rope_seg1.look_at(hitpt, Vector3.UP)
+ rope_seg2.look_at(hitpt, Vector3.UP)
+
+ pin_root.set_node_a(hit.get_path())
+ pin_root.set_node_b(rope_seg1.get_path())
+ pin_mid.set_node_a(rope_seg1.get_path())
+ pin_mid.set_node_b(rope_seg2.get_path())
+ pin_player.set_node_a(rope_seg2.get_path())
+ pin_player.set_node_b(player_owner.get_path())
+ #rope_seg2.get_node("CollisionShape").shape.extents = Vector3(0.05,0.05,distance/2)
+ else:
+ can_throw = true
+
+func detach():
+ player_owner.world.remove_child(pin_root)
+ player_owner.world.remove_child(pin_mid)
+ player_owner.world.remove_child(pin_player)
+ player_owner.world.remove_child(rope_seg1)
+ player_owner.world.remove_child(rope_seg2)
+ pin_root.set_node_a("")
+ pin_root.set_node_b("")
+ pin_mid.set_node_a("")
+ pin_mid.set_node_b("")
+ pin_player.set_node_a("")
+ pin_player.set_node_b("")
+ can_throw = true
+ hooking = false
+
+func mouse_input(m1: float, _m3: float, m2: float) -> void:
+ if m2 > 0 and hooking:
+ detach()
+ if m1 > 0 and rope_seg1.get_node("CollisionShape").shape.extents.z > 0.1:
+ rope_seg1.get_node("CollisionShape").shape.extents.z -= 0.05
+ var trf1: Vector3 = (pin_root.global_transform.origin-pin_mid.global_transform.origin).normalized()
+ rope_seg1.global_transform.origin += trf1*0.025
+ var trf2: Vector3 = (pin_mid.global_transform.origin-pin_player.global_transform.origin).normalized()
+ rope_seg2.global_transform.origin += trf2*0.025
+ player_owner.linear_velocity += (trf1*0.05 + trf2*0.05)
+
diff --git a/godot/scenes/weapons/grapplinghook.tres b/godot/scenes/weapons/grapplinghook.tres
new file mode 100644
index 0000000..395998e
--- /dev/null
+++ b/godot/scenes/weapons/grapplinghook.tres
@@ -0,0 +1,7 @@
+[gd_resource type="Resource" load_steps=2 format=2]
+
+[ext_resource path="res://scenes/weapons/grapplinghook.gd" type="Script" id=1]
+
+[resource]
+resource_local_to_scene = true
+script = ExtResource( 1 )
diff --git a/godot/scenes/worldprops/ball_bucket.tscn b/godot/scenes/worldprops/ball_bucket.tscn
new file mode 100644
index 0000000..d85a2fc
--- /dev/null
+++ b/godot/scenes/worldprops/ball_bucket.tscn
@@ -0,0 +1,46 @@
+[gd_scene load_steps=4 format=2]
+
+[sub_resource type="BoxShape" id=1]
+extents = Vector3( 1, 0.1, 1 )
+
+[sub_resource type="BoxShape" id=2]
+extents = Vector3( 1, 0.4, 0.1 )
+
+[sub_resource type="SpatialMaterial" id=3]
+albedo_color = Color( 0.266667, 0.168627, 0.0235294, 1 )
+metallic_specular = 0.0
+
+[node name="ball_bucket" type="StaticBody"]
+
+[node name="CollisionShape" type="CollisionShape" parent="."]
+shape = SubResource( 1 )
+
+[node name="CollisionShape2" type="CollisionShape" parent="."]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.474515, 0.95 )
+shape = SubResource( 2 )
+
+[node name="CollisionShape3" type="CollisionShape" parent="."]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.474515, -0.897996 )
+shape = SubResource( 2 )
+
+[node name="CollisionShape4" type="CollisionShape" parent="."]
+transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -0.889, 0.475, 0 )
+shape = SubResource( 2 )
+
+[node name="CollisionShape5" type="CollisionShape" parent="."]
+transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0.889, 0.475, 0 )
+shape = SubResource( 2 )
+
+[node name="CSGCombiner" type="CSGCombiner" parent="."]
+material_override = SubResource( 3 )
+
+[node name="CSGBox" type="CSGBox" parent="CSGCombiner"]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.400668, 0 )
+height = 1.00035
+
+[node name="CSGBox2" type="CSGBox" parent="CSGCombiner"]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.975335, 0 )
+operation = 2
+width = 1.73095
+height = 1.87987
+depth = 1.54392
diff --git a/godot/scripts/GameBase.gd b/godot/scripts/GameBase.gd
index 85af89a..9f24d7b 100644
--- a/godot/scripts/GameBase.gd
+++ b/godot/scripts/GameBase.gd
@@ -103,9 +103,9 @@ func back_to_main():
queue_free()
func join_team(team):
- if player_char != null:
+ if player_char != null:
player_char.deselect_character()
- $DEFAULTCAM.current = true
+ cam.attach($DEFAULTCAM, "STATIC", NodePath("."))
player_team = team
rpc_id(1, "_call_on_server", "_client_change_teams", {"id" : client_id, "team" : team})
diff --git a/godot/scripts/ballistics/Cannonball.gd b/godot/scripts/ballistics/Cannonball.gd
index 241fc7d..b41f104 100644
--- a/godot/scripts/ballistics/Cannonball.gd
+++ b/godot/scripts/ballistics/Cannonball.gd
@@ -15,6 +15,10 @@ func get_init_info():
return {"linear_velocity" : linear_velocity, "angular_velocity" : angular_velocity, "oldvel" : oldvel, "shooter" : shooter, "shooter_id" : shooter_id}
func _on_collision(body):
+ if is_network_master() and body.has_method("load_cannonball") and !body.loaded:
+ body.rpc("load_cannonball")
+ rpc("net_remove")
+ return
if is_network_master() and oldvel.length() > 20 and !damage_exceptions.has(body) and body.has_method("damage"):
body.rpc("damage", oldvel.length(), "BLUNT", [shooter_id, shooter], "using 'cannon'")
damage_exceptions.append(body)
diff --git a/godot/scripts/characters/player_controller_new.gd b/godot/scripts/characters/player_controller_new.gd
index a61ef1d..b1a8718 100644
--- a/godot/scripts/characters/player_controller_new.gd
+++ b/godot/scripts/characters/player_controller_new.gd
@@ -105,6 +105,7 @@ func _process(_delta: float) -> void:
else:
weapon.mouse_input(Input.get_action_strength("fire"), Input.get_action_strength("fire3"),Input.get_action_strength("fire2"))
jumping = Input.get_action_strength("move_jump")
+ walk_speed = 5.0 if Input.get_action_strength("move_walk") else 7.5
if Input.is_action_just_pressed("fire"):
weapon.attack1()
if Input.is_action_just_pressed("reload") and weapon.has_method("reload"):
@@ -190,6 +191,10 @@ func lose_machine():
machine = null
func carry_process() -> void:
+ if !is_instance_valid(carrying_object):
+ carrying_object = null
+ carrying = false
+ return
var vec = (carry_point.global_transform.origin - carrying_object.global_transform.origin)
var length = vec.length()
if length > 1:
diff --git a/godot/scripts/machines/Cannon.gd b/godot/scripts/machines/Cannon.gd
index 80b9edf..6c0b350 100644
--- a/godot/scripts/machines/Cannon.gd
+++ b/godot/scripts/machines/Cannon.gd
@@ -41,6 +41,7 @@ func _ready():
add_collision_exception_with(get_parent().get_parent())
mode = RigidBody.MODE_KINEMATIC
world_ballistics = world.get_node("BALLISTICS")
+ if loaded: controllable = true
func on_new_control():
if is_network_master(): world.cam.attach(self, "STATIC", "./YawJoint/PitchJoint/CameraPoint")
@@ -65,6 +66,7 @@ func attack1():
remotesync func fire():
loaded = false
+ controllable = false
status.set_visible(true)
$YawJoint/PitchJoint/Muzzle/explosion_sound.play()
var expl = preload("res://particles/p_Explosion.tscn").instance()
@@ -79,6 +81,11 @@ remotesync func fire():
cball.shooter = user.name + " (" + world.players_info[user.get_network_master()][0] + ")"
cball.shooter_id = user.get_network_master()
if mode == RigidBody.MODE_KINEMATIC:
- get_parent().apply_impulse($YawJoint/PitchJoint.global_transform.origin - get_parent().global_transform.origin, -1*cball.mass*ball_speed*muzzle.global_transform.basis.x)
+ get_parent().get_parent().apply_impulse($YawJoint/PitchJoint.global_transform.origin - get_parent().global_transform.origin, -1*cball.mass*ball_speed*muzzle.global_transform.basis.x)
else:
if is_network_master(): apply_impulse($YawJoint/PitchJoint.global_transform.origin - global_transform.origin, -1*cball.mass*ball_speed*muzzle.global_transform.basis.x)
+
+remotesync func load_cannonball():
+ loaded = true
+ controllable = true
+ $StatusNotifier.visible = false
diff --git a/godot/scripts/vehicles/Gunboat.gd b/godot/scripts/vehicles/Gunboat.gd
index c00479e..03252e6 100644
--- a/godot/scripts/vehicles/Gunboat.gd
+++ b/godot/scripts/vehicles/Gunboat.gd
@@ -39,12 +39,18 @@ func mp_init(init_info):
# Called when the node enters the scene tree for the first time.
func _ready():
print("adding gunboat to scene",get_tree().get_network_unique_id())
+ controllable = true
+ for sail in $SAILS.get_children():
+ sail.set_sheet(sail_out)
world = get_tree().get_root().find_node("GAMEWORLD", true, false)
if get_tree().get_network_unique_id() == 0:
print("enabling navigation for server")
$NavigationMeshInstance.set_enabled(true)
func on_no_control():
+ rpc("reset_controls")
+
+remotesync func reset_controls():
rudder = 0.0
throttle = 0.0
mainsheet = 0.0
@@ -76,7 +82,7 @@ remotesync func damage(amount, _type, _shooter, _extra = ""):
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _physics_process(delta):
if is_network_master():
- if mainsheet != 0:
+ if throttle != 0:
for sail in $SAILS.get_children():
sail.set_sheet(sail_out)
$Rudder.rotation_degrees.y = rudder_turn
diff --git a/godot/sounds/footstep01.ogg b/godot/sounds/footstep01.ogg
new file mode 100644
index 0000000..4a2501c
--- /dev/null
+++ b/godot/sounds/footstep01.ogg
Binary files differ
diff --git a/godot/sounds/footstep01.ogg.import b/godot/sounds/footstep01.ogg.import
new file mode 100644
index 0000000..eafe193
--- /dev/null
+++ b/godot/sounds/footstep01.ogg.import
@@ -0,0 +1,15 @@
+[remap]
+
+importer="ogg_vorbis"
+type="AudioStreamOGGVorbis"
+path="res://.import/footstep01.ogg-d76963bf1bd06cc247473674bc496643.oggstr"
+
+[deps]
+
+source_file="res://sounds/footstep01.ogg"
+dest_files=[ "res://.import/footstep01.ogg-d76963bf1bd06cc247473674bc496643.oggstr" ]
+
+[params]
+
+loop=true
+loop_offset=0
diff --git a/godot/sounds/footstep02.ogg b/godot/sounds/footstep02.ogg
new file mode 100644
index 0000000..cda8c99
--- /dev/null
+++ b/godot/sounds/footstep02.ogg
Binary files differ
diff --git a/godot/sounds/footstep02.ogg.import b/godot/sounds/footstep02.ogg.import
new file mode 100644
index 0000000..1dfabc5
--- /dev/null
+++ b/godot/sounds/footstep02.ogg.import
@@ -0,0 +1,15 @@
+[remap]
+
+importer="ogg_vorbis"
+type="AudioStreamOGGVorbis"
+path="res://.import/footstep02.ogg-f0eec7980dcf1290786fd8f372f7b88f.oggstr"
+
+[deps]
+
+source_file="res://sounds/footstep02.ogg"
+dest_files=[ "res://.import/footstep02.ogg-f0eec7980dcf1290786fd8f372f7b88f.oggstr" ]
+
+[params]
+
+loop=true
+loop_offset=0
diff --git a/godot/sounds/footstep03.ogg b/godot/sounds/footstep03.ogg
new file mode 100644
index 0000000..812335c
--- /dev/null
+++ b/godot/sounds/footstep03.ogg
Binary files differ
diff --git a/godot/sounds/footstep03.ogg.import b/godot/sounds/footstep03.ogg.import
new file mode 100644
index 0000000..711cfc6
--- /dev/null
+++ b/godot/sounds/footstep03.ogg.import
@@ -0,0 +1,15 @@
+[remap]
+
+importer="ogg_vorbis"
+type="AudioStreamOGGVorbis"
+path="res://.import/footstep03.ogg-03ef4afe33de50dbdff6ddbbf098ad74.oggstr"
+
+[deps]
+
+source_file="res://sounds/footstep03.ogg"
+dest_files=[ "res://.import/footstep03.ogg-03ef4afe33de50dbdff6ddbbf098ad74.oggstr" ]
+
+[params]
+
+loop=true
+loop_offset=0
diff --git a/godot/sounds/footstep04.ogg b/godot/sounds/footstep04.ogg
new file mode 100644
index 0000000..dabbd70
--- /dev/null
+++ b/godot/sounds/footstep04.ogg
Binary files differ
diff --git a/godot/sounds/footstep04.ogg.import b/godot/sounds/footstep04.ogg.import
new file mode 100644
index 0000000..3c81384
--- /dev/null
+++ b/godot/sounds/footstep04.ogg.import
@@ -0,0 +1,15 @@
+[remap]
+
+importer="ogg_vorbis"
+type="AudioStreamOGGVorbis"
+path="res://.import/footstep04.ogg-16226c305e1322a536cb96a2c537b228.oggstr"
+
+[deps]
+
+source_file="res://sounds/footstep04.ogg"
+dest_files=[ "res://.import/footstep04.ogg-16226c305e1322a536cb96a2c537b228.oggstr" ]
+
+[params]
+
+loop=true
+loop_offset=0
diff --git a/godot/sounds/footstep05.ogg b/godot/sounds/footstep05.ogg
new file mode 100644
index 0000000..62b8dcc
--- /dev/null
+++ b/godot/sounds/footstep05.ogg
Binary files differ
diff --git a/godot/sounds/footstep05.ogg.import b/godot/sounds/footstep05.ogg.import
new file mode 100644
index 0000000..6f85cf5
--- /dev/null
+++ b/godot/sounds/footstep05.ogg.import
@@ -0,0 +1,15 @@
+[remap]
+
+importer="ogg_vorbis"
+type="AudioStreamOGGVorbis"
+path="res://.import/footstep05.ogg-ce0f0381235ebdd22319464e329eef5f.oggstr"
+
+[deps]
+
+source_file="res://sounds/footstep05.ogg"
+dest_files=[ "res://.import/footstep05.ogg-ce0f0381235ebdd22319464e329eef5f.oggstr" ]
+
+[params]
+
+loop=true
+loop_offset=0
diff --git a/godot/sounds/footstep06.ogg b/godot/sounds/footstep06.ogg
new file mode 100644
index 0000000..9a0ec19
--- /dev/null
+++ b/godot/sounds/footstep06.ogg
Binary files differ
diff --git a/godot/sounds/footstep06.ogg.import b/godot/sounds/footstep06.ogg.import
new file mode 100644
index 0000000..6970d5d
--- /dev/null
+++ b/godot/sounds/footstep06.ogg.import
@@ -0,0 +1,15 @@
+[remap]
+
+importer="ogg_vorbis"
+type="AudioStreamOGGVorbis"
+path="res://.import/footstep06.ogg-64d7f3763b27a0bf60b51adc0e13f809.oggstr"
+
+[deps]
+
+source_file="res://sounds/footstep06.ogg"
+dest_files=[ "res://.import/footstep06.ogg-64d7f3763b27a0bf60b51adc0e13f809.oggstr" ]
+
+[params]
+
+loop=true
+loop_offset=0
diff --git a/godot/theming/menu_font.tres b/godot/theming/menu_font.tres
index 5c850e4..b44cf0e 100644
--- a/godot/theming/menu_font.tres
+++ b/godot/theming/menu_font.tres
@@ -3,4 +3,5 @@
[ext_resource path="res://theming/FreeMono.otf" type="DynamicFontData" id=1]
[resource]
+use_mipmaps = true
font_data = ExtResource( 1 )
diff --git a/godot/ui/HUD.gd b/godot/ui/HUD.gd
index 6c45113..9bbcae1 100644
--- a/godot/ui/HUD.gd
+++ b/godot/ui/HUD.gd
@@ -69,7 +69,6 @@ func update_characters():
for btn in character_list.get_children():
btn.queue_free()
for character in world.get_node("PLAYERS").get_children():
- print(character.team)
if world.player_team == character.team:
var select_button = Button.new()
select_button.connect("pressed", world, "select_character", [character.name])
diff --git a/godot/watershadertest.tscn b/godot/watershadertest.tscn
new file mode 100644
index 0000000..2c370d9
--- /dev/null
+++ b/godot/watershadertest.tscn
@@ -0,0 +1,115 @@
+[gd_scene load_steps=10 format=2]
+
+[sub_resource type="Shader" id=1]
+code = "shader_type spatial;
+render_mode unshaded;
+
+uniform vec4 deep_color : hint_color;
+uniform vec4 shallow_color : hint_color = vec4(1);
+
+uniform float refraction_speed = 0.25;
+uniform float refraction_strength = 1.0;
+
+uniform float foam_amount = 1.0;
+uniform float foam_cutoff = 1.0;
+uniform vec4 foam_color : hint_color = vec4(1);
+
+uniform float displacement_strength = 0.25;
+
+uniform float depth_distance = 1.0;
+
+uniform vec2 movement_direction = vec2(1,0);
+
+uniform sampler2D refraction_noise : hint_normal;
+uniform sampler2D foam_noise : hint_black_albedo;
+uniform sampler2D displacement_noise : hint_black;
+
+void vertex() {
+ float displacement = textureLod(
+ displacement_noise,
+ UV + (TIME * movement_direction) * refraction_speed,
+ 0.0).r * 2.0 - 1.0;
+
+ VERTEX.y += displacement * displacement_strength;
+}
+
+void fragment() {
+ vec2 uv = SCREEN_UV + refraction_strength
+ * (texture(refraction_noise, UV + (TIME * movement_direction) * refraction_speed).rg
+ * 2.0 - 1.0);
+
+ float real_depth = texture(DEPTH_TEXTURE, SCREEN_UV).r * 2.0 - 1.0;
+ real_depth = PROJECTION_MATRIX[3][2] / (real_depth + PROJECTION_MATRIX[2][2]) + VERTEX.z;
+
+ // Get the raw linear depth from the depth texture into a [-1, 1] range
+ float depth = texture(DEPTH_TEXTURE, uv).r * 2.0 - 1.0;
+ // Recreate linear depth of the intersecting geometry using projection matrix, and subtract the vertex of the sphere
+ depth = PROJECTION_MATRIX[3][2] / (depth + PROJECTION_MATRIX[2][2]) + VERTEX.z;
+
+ depth = max(depth, real_depth);
+
+ float intersection = clamp(depth / foam_amount, 0, 1) * foam_cutoff;
+
+ vec4 out_color = mix(shallow_color, deep_color, clamp((depth / depth_distance), 0, 1));
+ vec4 scene_color = texture(SCREEN_TEXTURE, uv);
+ out_color = mix(scene_color, out_color, out_color.a);
+
+ vec3 foam = step(intersection,
+ texture(foam_noise, UV + (TIME * movement_direction) * refraction_speed).rgb)
+ * foam_color.rgb;
+
+ ALBEDO = out_color.rgb + foam;
+}"
+
+[sub_resource type="OpenSimplexNoise" id=4]
+
+[sub_resource type="NoiseTexture" id=5]
+flags = 3
+width = 1024
+height = 1024
+noise = SubResource( 4 )
+
+[sub_resource type="OpenSimplexNoise" id=6]
+
+[sub_resource type="NoiseTexture" id=7]
+width = 1024
+height = 1024
+noise = SubResource( 6 )
+
+[sub_resource type="OpenSimplexNoise" id=8]
+
+[sub_resource type="NoiseTexture" id=9]
+width = 1024
+height = 1024
+noise = SubResource( 8 )
+
+[sub_resource type="ShaderMaterial" id=2]
+shader = SubResource( 1 )
+shader_param/deep_color = Color( 0.00784314, 0, 0.196078, 1 )
+shader_param/shallow_color = Color( 0.65098, 1, 1, 1 )
+shader_param/refraction_speed = 0.25
+shader_param/refraction_strength = 1.0
+shader_param/foam_amount = 1.0
+shader_param/foam_cutoff = 1.0
+shader_param/foam_color = Color( 1, 1, 1, 1 )
+shader_param/displacement_strength = 0.25
+shader_param/depth_distance = 5.0
+shader_param/movement_direction = Vector2( 1, 0 )
+shader_param/refraction_noise = SubResource( 9 )
+shader_param/foam_noise = SubResource( 7 )
+shader_param/displacement_noise = SubResource( 5 )
+
+[sub_resource type="PlaneMesh" id=3]
+material = SubResource( 2 )
+subdivide_width = 512
+subdivide_depth = 512
+
+[node name="Spatial" type="Spatial"]
+
+[node name="MeshInstance" type="MeshInstance" parent="."]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.182733, -0.0156302 )
+mesh = SubResource( 3 )
+
+[node name="OmniLight" type="OmniLight" parent="."]
+transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.336934, 0 )
+omni_range = 0.949787