From 7644862ffafa7fd27887b10de848026a19a11383 Mon Sep 17 00:00:00 2001 From: ncusimano Date: Fri, 18 Aug 2023 20:59:38 -0600 Subject: [PATCH 1/5] Added a Default Player Scene --- godot/Default Orange.png | 3 +++ godot/Default Orange.png.import | 35 +++++++++++++++++++++++++++++++++ godot/Player.gd | 31 +++++++++++++++++++++++++++++ godot/player.tscn | 25 +++++++++++++++++++++++ 4 files changed, 94 insertions(+) create mode 100644 godot/Default Orange.png create mode 100644 godot/Default Orange.png.import create mode 100644 godot/Player.gd create mode 100644 godot/player.tscn diff --git a/godot/Default Orange.png b/godot/Default Orange.png new file mode 100644 index 0000000..1f222d4 --- /dev/null +++ b/godot/Default Orange.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd92a5f8727ee14e0b999726b5db2d4bdf92af815188bc73d0daff00b71a43dc +size 651 diff --git a/godot/Default Orange.png.import b/godot/Default Orange.png.import new file mode 100644 index 0000000..c7acb04 --- /dev/null +++ b/godot/Default Orange.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d3lvqr08li31r" +path.s3tc="res://.godot/imported/Default Orange.png-063fb7fe49baee9d7764c022a207ac3a.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://Default Orange.png" +dest_files=["res://.godot/imported/Default Orange.png-063fb7fe49baee9d7764c022a207ac3a.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/godot/Player.gd b/godot/Player.gd new file mode 100644 index 0000000..06a4c08 --- /dev/null +++ b/godot/Player.gd @@ -0,0 +1,31 @@ +extends CharacterBody3D + + +const SPEED = 5.0 +const JUMP_VELOCITY = 4.5 + +# Get the gravity from the project settings to be synced with RigidBody nodes. +var gravity = ProjectSettings.get_setting("physics/3d/default_gravity") + + +func _physics_process(delta): + # Add the gravity. + if not is_on_floor(): + velocity.y -= gravity * delta + + # Handle Jump. + if Input.is_action_just_pressed("ui_accept") and is_on_floor(): + velocity.y = JUMP_VELOCITY + + # Get the input direction and handle the movement/deceleration. + # As good practice, you should replace UI actions with custom gameplay actions. + var input_dir = Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down") + var direction = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized() + if direction: + velocity.x = direction.x * SPEED + velocity.z = direction.z * SPEED + else: + velocity.x = move_toward(velocity.x, 0, SPEED) + velocity.z = move_toward(velocity.z, 0, SPEED) + + move_and_slide() diff --git a/godot/player.tscn b/godot/player.tscn new file mode 100644 index 0000000..31f832d --- /dev/null +++ b/godot/player.tscn @@ -0,0 +1,25 @@ +[gd_scene load_steps=6 format=3 uid="uid://dbqnafgsttwth"] + +[ext_resource type="Script" path="res://Player.gd" id="1_7gpdp"] +[ext_resource type="Texture2D" uid="uid://d3lvqr08li31r" path="res://Default Orange.png" id="2_s5i4o"] + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_kb4ms"] + +[sub_resource type="CapsuleMesh" id="CapsuleMesh_1e11l"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_npbs0"] +albedo_texture = ExtResource("2_s5i4o") + +[node name="Player" type="CharacterBody3D"] +script = ExtResource("1_7gpdp") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +shape = SubResource("CapsuleShape3D_kb4ms") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +mesh = SubResource("CapsuleMesh_1e11l") +surface_material_override/0 = SubResource("StandardMaterial3D_npbs0") + +[node name="PlayerCam" type="Camera3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 5) +fov = 105.5 From 5b8fb7b2983adc003c24f6b142e9cccf2da3f06a Mon Sep 17 00:00:00 2001 From: ncusimano Date: Fri, 18 Aug 2023 21:27:39 -0600 Subject: [PATCH 2/5] Camera Implementation Very Basic --- godot/CameraTest.tscn | 16 ++++++++++++ godot/Models/ExoticPalmBaby.fbx.import | 32 ++++++++++++++++++++++++ godot/Models/ExoticPalmCurve.fbx.import | 32 ++++++++++++++++++++++++ godot/Models/ExoticPalmDefalt.fbx.import | 32 ++++++++++++++++++++++++ godot/Models/ExoticPalmOld.fbx.import | 32 ++++++++++++++++++++++++ godot/Models/ExoticPalmYoung.fbx.import | 32 ++++++++++++++++++++++++ godot/Player.gd | 10 ++++++++ godot/player.tscn | 11 +++++--- godot/project.godot | 5 ++++ 9 files changed, 198 insertions(+), 4 deletions(-) create mode 100644 godot/CameraTest.tscn create mode 100644 godot/Models/ExoticPalmBaby.fbx.import create mode 100644 godot/Models/ExoticPalmCurve.fbx.import create mode 100644 godot/Models/ExoticPalmDefalt.fbx.import create mode 100644 godot/Models/ExoticPalmOld.fbx.import create mode 100644 godot/Models/ExoticPalmYoung.fbx.import diff --git a/godot/CameraTest.tscn b/godot/CameraTest.tscn new file mode 100644 index 0000000..45f4782 --- /dev/null +++ b/godot/CameraTest.tscn @@ -0,0 +1,16 @@ +[gd_scene load_steps=3 format=3 uid="uid://dd64j7xcfl6io"] + +[ext_resource type="PackedScene" uid="uid://csqyxbjumla33" path="res://player.tscn" id="1_i6frr"] + +[sub_resource type="BoxShape3D" id="BoxShape3D_r81py"] +size = Vector3(10, 1, 10) + +[node name="Node3D" type="Node3D"] + +[node name="Player" parent="." instance=ExtResource("1_i6frr")] + +[node name="RigidBody3D" type="RigidBody3D" parent="."] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="RigidBody3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -5, 0) +shape = SubResource("BoxShape3D_r81py") diff --git a/godot/Models/ExoticPalmBaby.fbx.import b/godot/Models/ExoticPalmBaby.fbx.import new file mode 100644 index 0000000..adfed78 --- /dev/null +++ b/godot/Models/ExoticPalmBaby.fbx.import @@ -0,0 +1,32 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://b0je4d0hkwh33" +path="res://.godot/imported/ExoticPalmBaby.fbx-18609796ca21ea31d02469d5ce4b3a8d.scn" + +[deps] + +source_file="res://Models/ExoticPalmBaby.fbx" +dest_files=["res://.godot/imported/ExoticPalmBaby.fbx-18609796ca21ea31d02469d5ce4b3a8d.scn"] + +[params] + +nodes/root_type="Node3D" +nodes/root_name="Scene Root" +nodes/apply_root_scale=true +nodes/root_scale=1.0 +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +import_script/path="" +_subresources={} +gltf/embedded_image_handling=1 diff --git a/godot/Models/ExoticPalmCurve.fbx.import b/godot/Models/ExoticPalmCurve.fbx.import new file mode 100644 index 0000000..7888aa4 --- /dev/null +++ b/godot/Models/ExoticPalmCurve.fbx.import @@ -0,0 +1,32 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://br02kcb2orkru" +path="res://.godot/imported/ExoticPalmCurve.fbx-f171d43633fcb2564ec85725bdc79e46.scn" + +[deps] + +source_file="res://Models/ExoticPalmCurve.fbx" +dest_files=["res://.godot/imported/ExoticPalmCurve.fbx-f171d43633fcb2564ec85725bdc79e46.scn"] + +[params] + +nodes/root_type="Node3D" +nodes/root_name="Scene Root" +nodes/apply_root_scale=true +nodes/root_scale=1.0 +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +import_script/path="" +_subresources={} +gltf/embedded_image_handling=1 diff --git a/godot/Models/ExoticPalmDefalt.fbx.import b/godot/Models/ExoticPalmDefalt.fbx.import new file mode 100644 index 0000000..da27d73 --- /dev/null +++ b/godot/Models/ExoticPalmDefalt.fbx.import @@ -0,0 +1,32 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://cwprqiadeagdy" +path="res://.godot/imported/ExoticPalmDefalt.fbx-7992e041312168fc1e24b073b220a6b7.scn" + +[deps] + +source_file="res://Models/ExoticPalmDefalt.fbx" +dest_files=["res://.godot/imported/ExoticPalmDefalt.fbx-7992e041312168fc1e24b073b220a6b7.scn"] + +[params] + +nodes/root_type="Node3D" +nodes/root_name="Scene Root" +nodes/apply_root_scale=true +nodes/root_scale=1.0 +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +import_script/path="" +_subresources={} +gltf/embedded_image_handling=1 diff --git a/godot/Models/ExoticPalmOld.fbx.import b/godot/Models/ExoticPalmOld.fbx.import new file mode 100644 index 0000000..d47ba49 --- /dev/null +++ b/godot/Models/ExoticPalmOld.fbx.import @@ -0,0 +1,32 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://c8clfgxi041an" +path="res://.godot/imported/ExoticPalmOld.fbx-bcb78e65808546f55f4d71f474979326.scn" + +[deps] + +source_file="res://Models/ExoticPalmOld.fbx" +dest_files=["res://.godot/imported/ExoticPalmOld.fbx-bcb78e65808546f55f4d71f474979326.scn"] + +[params] + +nodes/root_type="Node3D" +nodes/root_name="Scene Root" +nodes/apply_root_scale=true +nodes/root_scale=1.0 +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +import_script/path="" +_subresources={} +gltf/embedded_image_handling=1 diff --git a/godot/Models/ExoticPalmYoung.fbx.import b/godot/Models/ExoticPalmYoung.fbx.import new file mode 100644 index 0000000..f5b48dd --- /dev/null +++ b/godot/Models/ExoticPalmYoung.fbx.import @@ -0,0 +1,32 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://dhimbtdsktc5s" +path="res://.godot/imported/ExoticPalmYoung.fbx-0de6081591e7c224a5fccf5cd1669985.scn" + +[deps] + +source_file="res://Models/ExoticPalmYoung.fbx" +dest_files=["res://.godot/imported/ExoticPalmYoung.fbx-0de6081591e7c224a5fccf5cd1669985.scn"] + +[params] + +nodes/root_type="Node3D" +nodes/root_name="Scene Root" +nodes/apply_root_scale=true +nodes/root_scale=1.0 +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +import_script/path="" +_subresources={} +gltf/embedded_image_handling=1 diff --git a/godot/Player.gd b/godot/Player.gd index 06a4c08..69a4ef6 100644 --- a/godot/Player.gd +++ b/godot/Player.gd @@ -3,10 +3,20 @@ extends CharacterBody3D const SPEED = 5.0 const JUMP_VELOCITY = 4.5 +var playerCam # Get the gravity from the project settings to be synced with RigidBody nodes. var gravity = ProjectSettings.get_setting("physics/3d/default_gravity") +func _ready(): + Input.mouse_mode = Input.MOUSE_MODE_CAPTURED + playerCam = get_node("CameraMount") as Node3D + +func _input(event): + # Handle the rotation of the camera using mouse movement. + if event is InputEventMouseMotion: + playerCam.rotate_y(deg_to_rad(-event.relative.x)) + playerCam.rotate_x(deg_to_rad(event.relative.y)) func _physics_process(delta): # Add the gravity. diff --git a/godot/player.tscn b/godot/player.tscn index 31f832d..ab0a92b 100644 --- a/godot/player.tscn +++ b/godot/player.tscn @@ -1,7 +1,7 @@ -[gd_scene load_steps=6 format=3 uid="uid://dbqnafgsttwth"] +[gd_scene load_steps=6 format=3 uid="uid://csqyxbjumla33"] [ext_resource type="Script" path="res://Player.gd" id="1_7gpdp"] -[ext_resource type="Texture2D" uid="uid://d3lvqr08li31r" path="res://Default Orange.png" id="2_s5i4o"] +[ext_resource type="Texture2D" path="res://Default Orange.png" id="2_s5i4o"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_kb4ms"] @@ -20,6 +20,9 @@ shape = SubResource("CapsuleShape3D_kb4ms") mesh = SubResource("CapsuleMesh_1e11l") surface_material_override/0 = SubResource("StandardMaterial3D_npbs0") -[node name="PlayerCam" type="Camera3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 5) +[node name="CameraMount" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.3, 0) + +[node name="PlayerCam" type="Camera3D" parent="CameraMount"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 5) fov = 105.5 diff --git a/godot/project.godot b/godot/project.godot index 37d2fd2..3430d8e 100644 --- a/godot/project.godot +++ b/godot/project.godot @@ -11,9 +11,14 @@ config_version=5 [application] config/name="abgj23" +run/main_scene="res://CameraTest.tscn" config/features=PackedStringArray("4.1", "Forward Plus") config/icon="res://icon.svg" +[dotnet] + +project/assembly_name="abgj23" + [filesystem] import/fbx/enabled=false From 0d0f255827e25cece486c4433fa0662f6ec83e70 Mon Sep 17 00:00:00 2001 From: ncusimano Date: Fri, 18 Aug 2023 23:15:14 -0600 Subject: [PATCH 3/5] Working Camera Camera Works! --- godot/CameraTest.tscn | 18 +++++++++++------- godot/Player.gd | 13 +++++++++++-- godot/player.tscn | 2 +- godot/project.godot | 35 +++++++++++++++++++++++++++++++++++ 4 files changed, 58 insertions(+), 10 deletions(-) diff --git a/godot/CameraTest.tscn b/godot/CameraTest.tscn index 45f4782..31d0a98 100644 --- a/godot/CameraTest.tscn +++ b/godot/CameraTest.tscn @@ -1,16 +1,20 @@ -[gd_scene load_steps=3 format=3 uid="uid://dd64j7xcfl6io"] +[gd_scene load_steps=4 format=3 uid="uid://dd64j7xcfl6io"] [ext_resource type="PackedScene" uid="uid://csqyxbjumla33" path="res://player.tscn" id="1_i6frr"] +[ext_resource type="PackedScene" uid="uid://3d51hjh2st8a" path="res://Level/Island.tscn" id="2_cjk1r"] -[sub_resource type="BoxShape3D" id="BoxShape3D_r81py"] -size = Vector3(10, 1, 10) +[sub_resource type="CylinderShape3D" id="CylinderShape3D_cxihl"] +radius = 15.365 [node name="Node3D" type="Node3D"] [node name="Player" parent="." instance=ExtResource("1_i6frr")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.93827, 12.3667, -12.0351) -[node name="RigidBody3D" type="RigidBody3D" parent="."] +[node name="Node3D" parent="." instance=ExtResource("2_cjk1r")] +transform = Transform3D(10, 0, 0, 0, 10, 0, 0, 0, 10, -0.279051, -4.39988, -1.78854) -[node name="CollisionShape3D" type="CollisionShape3D" parent="RigidBody3D"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -5, 0) -shape = SubResource("BoxShape3D_r81py") +[node name="StaticBody3D" type="StaticBody3D" parent="Node3D"] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D/StaticBody3D"] +shape = SubResource("CylinderShape3D_cxihl") diff --git a/godot/Player.gd b/godot/Player.gd index 69a4ef6..29f15a9 100644 --- a/godot/Player.gd +++ b/godot/Player.gd @@ -3,6 +3,8 @@ extends CharacterBody3D const SPEED = 5.0 const JUMP_VELOCITY = 4.5 +@export var horiz_sens = 0.25 +@export var vert_sens = 0.25 var playerCam # Get the gravity from the project settings to be synced with RigidBody nodes. @@ -11,12 +13,19 @@ var gravity = ProjectSettings.get_setting("physics/3d/default_gravity") func _ready(): Input.mouse_mode = Input.MOUSE_MODE_CAPTURED playerCam = get_node("CameraMount") as Node3D + + +func _process(delta): + # Brings your mouse out of the window if you press escape. Add pause screen function here? + if Input.is_action_pressed("ui_cancel"): + Input.mouse_mode = Input.MOUSE_MODE_VISIBLE + func _input(event): # Handle the rotation of the camera using mouse movement. if event is InputEventMouseMotion: - playerCam.rotate_y(deg_to_rad(-event.relative.x)) - playerCam.rotate_x(deg_to_rad(event.relative.y)) + rotate_y(deg_to_rad(-event.relative.x * horiz_sens)) + playerCam.rotate_x(deg_to_rad(-event.relative.y * vert_sens)) func _physics_process(delta): # Add the gravity. diff --git a/godot/player.tscn b/godot/player.tscn index ab0a92b..bd905b8 100644 --- a/godot/player.tscn +++ b/godot/player.tscn @@ -24,5 +24,5 @@ surface_material_override/0 = SubResource("StandardMaterial3D_npbs0") transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.3, 0) [node name="PlayerCam" type="Camera3D" parent="CameraMount"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 5) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 4) fov = 105.5 diff --git a/godot/project.godot b/godot/project.godot index 3430d8e..6e1d6a4 100644 --- a/godot/project.godot +++ b/godot/project.godot @@ -22,3 +22,38 @@ project/assembly_name="abgj23" [filesystem] import/fbx/enabled=false + +[input] + +ui_left={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194319,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"echo":false,"script":null) +] +} +ui_right={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194321,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"echo":false,"script":null) +] +} +ui_up={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194320,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":-1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"echo":false,"script":null) +] +} +ui_down={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194322,"physical_keycode":0,"key_label":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"echo":false,"script":null) +] +} From c96e96a9e97bce35bbba5c838d483990dbd3fe0f Mon Sep 17 00:00:00 2001 From: ncusimano Date: Sat, 19 Aug 2023 11:04:45 -0600 Subject: [PATCH 4/5] Villager Actions Not yet complete --- godot/CameraTest.tscn | 37 ++++++++++++++++++++++----------- godot/Default Orange.png.import | 2 +- godot/Default Purple.png | 3 +++ godot/Default Purple.png.import | 35 +++++++++++++++++++++++++++++++ godot/Level/Island.tscn | 28 ++++++++++--------------- godot/Villager.gd | 11 ++++++++++ godot/cultist.tscn | 21 +++++++++++++++++++ godot/player.tscn | 2 +- godot/project.godot | 2 +- godot/villager.tscn | 18 ++++++++++++++++ 10 files changed, 127 insertions(+), 32 deletions(-) create mode 100644 godot/Default Purple.png create mode 100644 godot/Default Purple.png.import create mode 100644 godot/Villager.gd create mode 100644 godot/cultist.tscn create mode 100644 godot/villager.tscn diff --git a/godot/CameraTest.tscn b/godot/CameraTest.tscn index 31d0a98..cee559a 100644 --- a/godot/CameraTest.tscn +++ b/godot/CameraTest.tscn @@ -1,20 +1,33 @@ -[gd_scene load_steps=4 format=3 uid="uid://dd64j7xcfl6io"] +[gd_scene load_steps=6 format=3 uid="uid://dd64j7xcfl6io"] -[ext_resource type="PackedScene" uid="uid://csqyxbjumla33" path="res://player.tscn" id="1_i6frr"] -[ext_resource type="PackedScene" uid="uid://3d51hjh2st8a" path="res://Level/Island.tscn" id="2_cjk1r"] +[ext_resource type="PackedScene" uid="uid://csqyxbjumla33" path="res://player.tscn" id="1_jbc4n"] +[ext_resource type="PackedScene" uid="uid://cnnsy8h0dq5y1" path="res://villager.tscn" id="2_i3gws"] +[ext_resource type="PackedScene" uid="uid://rn1bmw0lf1lr" path="res://cultist.tscn" id="3_renxb"] -[sub_resource type="CylinderShape3D" id="CylinderShape3D_cxihl"] -radius = 15.365 +[sub_resource type="CylinderShape3D" id="CylinderShape3D_62oje"] +radius = 80.229 + +[sub_resource type="CylinderMesh" id="CylinderMesh_c2b6h"] +top_radius = 80.23 [node name="Node3D" type="Node3D"] -[node name="Player" parent="." instance=ExtResource("1_i6frr")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.93827, 12.3667, -12.0351) +[node name="Player" parent="." instance=ExtResource("1_jbc4n")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5, 0) -[node name="Node3D" parent="." instance=ExtResource("2_cjk1r")] -transform = Transform3D(10, 0, 0, 0, 10, 0, 0, 0, 10, -0.279051, -4.39988, -1.78854) +[node name="StaticBody3D" type="StaticBody3D" parent="."] -[node name="StaticBody3D" type="StaticBody3D" parent="Node3D"] +[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"] +shape = SubResource("CylinderShape3D_62oje") -[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D/StaticBody3D"] -shape = SubResource("CylinderShape3D_cxihl") +[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D/CollisionShape3D"] +mesh = SubResource("CylinderMesh_c2b6h") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -0.523317, 0.852138, 0, -0.852138, -0.523317, 0, 10.6239, 0) + +[node name="Node3D" parent="." instance=ExtResource("2_i3gws")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22, 3, 43) + +[node name="Node3D2" parent="." instance=ExtResource("3_renxb")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29, 4, 33) diff --git a/godot/Default Orange.png.import b/godot/Default Orange.png.import index c7acb04..55079fd 100644 --- a/godot/Default Orange.png.import +++ b/godot/Default Orange.png.import @@ -2,7 +2,7 @@ importer="texture" type="CompressedTexture2D" -uid="uid://d3lvqr08li31r" +uid="uid://vw0x1higed4d" path.s3tc="res://.godot/imported/Default Orange.png-063fb7fe49baee9d7764c022a207ac3a.s3tc.ctex" metadata={ "imported_formats": ["s3tc_bptc"], diff --git a/godot/Default Purple.png b/godot/Default Purple.png new file mode 100644 index 0000000..3c64f78 --- /dev/null +++ b/godot/Default Purple.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f800ec4fe8752796c4c90ce1bef1a706f9c511c1edb17fd9b78b9518f2db86a6 +size 223 diff --git a/godot/Default Purple.png.import b/godot/Default Purple.png.import new file mode 100644 index 0000000..4dace10 --- /dev/null +++ b/godot/Default Purple.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://df0xror4t3gbc" +path.s3tc="res://.godot/imported/Default Purple.png-7d2233ba088e783e3b3f8448d0341adf.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://Default Purple.png" +dest_files=["res://.godot/imported/Default Purple.png-7d2233ba088e783e3b3f8448d0341adf.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/godot/Level/Island.tscn b/godot/Level/Island.tscn index 06dca66..dd9d4db 100644 --- a/godot/Level/Island.tscn +++ b/godot/Level/Island.tscn @@ -1,23 +1,17 @@ -[gd_scene load_steps=6 format=3 uid="uid://3d51hjh2st8a"] +[gd_scene load_steps=3 format=3 uid="uid://3d51hjh2st8a"] -[ext_resource type="PackedScene" uid="uid://d3ccrfjpg4hbv" path="res://Models/palm_curved.tscn" id="3_bth2b"] -[ext_resource type="PackedScene" uid="uid://c1n2lfcn4rkx7" path="res://Models/palm_default.tscn" id="4_2cnue"] -[ext_resource type="PackedScene" uid="uid://ctbyl0qbks4k6" path="res://Models/ocean.tscn" id="4_dey2i"] -[ext_resource type="PackedScene" uid="uid://difi2tur2j4dg" path="res://Models/island.tscn" id="4_lq6cy"] -[ext_resource type="PackedScene" uid="uid://hg1yr5rnxd47" path="res://Models/palm_young.tscn" id="5_prlw2"] +[ext_resource type="PackedScene" path="res://Models/PalmBaby.glb" id="2_xgklm"] +[ext_resource type="PackedScene" path="res://Models/PalmDefalt.glb" id="3_cgw64"] -[node name="Node3D" type="Node3D"] +[node name="Node3D2" type="Node3D"] -[node name="island" parent="." instance=ExtResource("4_lq6cy")] +[node name="island" type="Node3D" parent="."] -[node name="ocean" parent="." instance=ExtResource("4_dey2i")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.867198, 0) +[node name="PalmBaby" parent="." instance=ExtResource("2_xgklm")] +transform = Transform3D(0.354782, 0, 0, 0, 0.354782, 0, 0, 0, 0.354782, 0.210514, 1.44177, -0.290407) -[node name="PalmCurved" parent="." instance=ExtResource("3_bth2b")] -transform = Transform3D(0.0166766, 0, 0, 0, 0.0166766, 0, 0, 0, 0.0166766, 2.60201, 1.38633, -0.419671) +[node name="PalmDefalt" parent="." instance=ExtResource("3_cgw64")] +transform = Transform3D(0.771343, 0, 0, 0, 0.771343, 0, 0, 0, 0.771343, 0.310153, 1.61852, 0.365102) -[node name="PalmDefault" parent="." instance=ExtResource("4_2cnue")] -transform = Transform3D(0.0285645, 0, 0, 0, 0.0285645, 0, 0, 0, 0.0285645, 1.58539, 1.19143, 0.741446) - -[node name="PalmYoung" parent="." instance=ExtResource("5_prlw2")] -transform = Transform3D(0.0328739, 0, 0, 0, 0.0328739, 0, 0, 0, 0.0328739, 0.0679206, 1.38939, 0.60797) +[node name="ocean" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.904215, 0) diff --git a/godot/Villager.gd b/godot/Villager.gd new file mode 100644 index 0000000..92626b9 --- /dev/null +++ b/godot/Villager.gd @@ -0,0 +1,11 @@ +extends Node3D + + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + pass diff --git a/godot/cultist.tscn b/godot/cultist.tscn new file mode 100644 index 0000000..21dcd81 --- /dev/null +++ b/godot/cultist.tscn @@ -0,0 +1,21 @@ +[gd_scene load_steps=5 format=3 uid="uid://rn1bmw0lf1lr"] + +[ext_resource type="Texture2D" uid="uid://df0xror4t3gbc" path="res://Default Purple.png" id="1_x8j7f"] + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_y0hcm"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_vxnad"] +albedo_texture = ExtResource("1_x8j7f") + +[sub_resource type="CapsuleMesh" id="CapsuleMesh_17ljq"] +material = SubResource("StandardMaterial3D_vxnad") + +[node name="Node3D" type="Node3D"] + +[node name="RigidBody3D" type="RigidBody3D" parent="."] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="RigidBody3D"] +shape = SubResource("CapsuleShape3D_y0hcm") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="RigidBody3D/CollisionShape3D"] +mesh = SubResource("CapsuleMesh_17ljq") diff --git a/godot/player.tscn b/godot/player.tscn index bd905b8..54be7c5 100644 --- a/godot/player.tscn +++ b/godot/player.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=6 format=3 uid="uid://csqyxbjumla33"] [ext_resource type="Script" path="res://Player.gd" id="1_7gpdp"] -[ext_resource type="Texture2D" path="res://Default Orange.png" id="2_s5i4o"] +[ext_resource type="Texture2D" uid="uid://vw0x1higed4d" path="res://Default Orange.png" id="2_s5i4o"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_kb4ms"] diff --git a/godot/project.godot b/godot/project.godot index 6e1d6a4..0c01521 100644 --- a/godot/project.godot +++ b/godot/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="abgj23" -run/main_scene="res://CameraTest.tscn" +run/main_scene="res://cameraTest.tscn" config/features=PackedStringArray("4.1", "Forward Plus") config/icon="res://icon.svg" diff --git a/godot/villager.tscn b/godot/villager.tscn new file mode 100644 index 0000000..0bb07fc --- /dev/null +++ b/godot/villager.tscn @@ -0,0 +1,18 @@ +[gd_scene load_steps=4 format=3 uid="uid://cnnsy8h0dq5y1"] + +[ext_resource type="Script" path="res://Villager.gd" id="1_ardgw"] + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_s4x8n"] + +[sub_resource type="CapsuleMesh" id="CapsuleMesh_b3srs"] + +[node name="Node3D" type="Node3D"] +script = ExtResource("1_ardgw") + +[node name="RigidBody3D" type="RigidBody3D" parent="."] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="RigidBody3D"] +shape = SubResource("CapsuleShape3D_s4x8n") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="RigidBody3D/CollisionShape3D"] +mesh = SubResource("CapsuleMesh_b3srs") From aa25e5c77220d7c3a74df6f215688788044e130f Mon Sep 17 00:00:00 2001 From: ncusimano Date: Sat, 19 Aug 2023 11:17:09 -0600 Subject: [PATCH 5/5] Updates --- godot/Models/grape_animations/idle.res | Bin 815 -> 6455 bytes godot/Models/grape_animations/pickup.res | Bin 9228 -> 17343 bytes .../grape_animations/upper_body_holding.res | Bin 705 -> 5461 bytes .../grape_animations/upper_body_idle.res.res | Bin 702 -> 5459 bytes godot/Models/grape_animations/walk.res | Bin 3106 -> 9202 bytes godot/Villager.gd | 46 +++++++++++++++++- 6 files changed, 45 insertions(+), 1 deletion(-) diff --git a/godot/Models/grape_animations/idle.res b/godot/Models/grape_animations/idle.res index 17a36893746397099020e2fcc1074de0724e0b7e..2a3799d38d5994645d2ce6c1d881ba2aec2a3623 100644 GIT binary patch literal 6455 zcma)>eQ;FO8OARthN4iaq8Jb&Xlwmov)N>mK;jJstfZhN7{5^BlH4Qx8--;sYo{F|w7vg=iIkK3-Yw<|CBPPb2cx$Fj5XBOSWMg}x*%7OxGfq;>$)qAp z%hQ44K&CV4SQn#wW2rQbP# z=bbO|jzu)h&jDTPStp-(-uWW(xaHV~)h)m?P!$n74ETnIox0=14q}z4J9BHC4q;x{|w2b#zdcJ+FY4 za|@xb!k{&BudGe)>pxv%pSkSdz$9q7ekzd>|MsBuC&QOLu4H-&bdJZn{#5vK{UTOR zYttB+D~HP3$LFo8h7hkUt9yv&Ch|w^%qsth?jC#Zp6i5v;mTg+f3&j4ZfIx_{?6Ce zC_nHZ^~nnV`DG6)zduR!{lfn;xlZ{Lmr?&c!e4OoQRV+}DfKxl{HI&CDF4}esn1E_ z@1NbT{DTXr&spI|Zr`r_DYuHBiYkuW-s+$C;a}8PbmNQzoGhm;ZGfRO8H~A zQ~!O!Uwila%0K!H)xRkGk81OM_U)qn2Zev=g}@+G9>)XPwi0tgPcF8OH5?Y4F(4x1o!6hhI1`)NRj2jcFflVSRqW^sUf-2D;Dl zFeF1AtN$sqpW*(*;;N#d;R8z&9~56T)ML*_jfr6a>vJ2^w?q3G3gG<=LozI6_4Uwx zhD#rsJ`mjSZuM8+3>(jvWozQ*;`b*+n7?R;`R(}t)pW(f0Hee}yxqcJV&Cve!3EaVu>$kA_R%rhQxHn-CH^HWx(1sclLzMMd#`JP% zKf@S!F$~Gj&g$dPeg^j@RO2QL(oIO9h8R3IA<3Hjoaq#_2_Ow$0?^4?ZeR!W|GEhe z;<{-AR3ByzhL#Np#2+A`%ScJf_3(}`mcv~E&RI2?m~@;p_}#T zVLA)#XQ1CKzr>IXz0h(GRzv$4Mp)T>1=jGSqC-W6^gymbjftU;_4yUk4@3JI#=={R zAsHTF_3NPh44v!$Rz2mj?5tXA=D^%d-S&Fam>4#&K94fJ5!%l%4&EjV$*`H#Z-M>} ThS$JQMGTLjW&}n({>$XQ9+xzK delta 782 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 gY!2K{Hs$q zveCKC*!Nt@cixWk3km){DGbHc`-geHW)VN~0M_s#f@d8FMGxoy#cV5Cz<)i4dFXpe z|En`m`O1sTAB)oXSD+!%d&k|IA;>GboEdQvbe{ZPEqAf{Qk4&O%yYZ}$q{o6;PQUA1I%$QT^ zzgT>}sFu!d{h}HZwo&a7h|e$mZlXSFb~zz*wCSJw$2NHxUE@)KaJWht zY@7^ZZQD-)T-yFTS$-;v|Hm<4;25azF-U_PZ8fCJc;?H-3t+5S!!Lj>gpg{;kmWCe zv1Sc%i~eTYKS@$~D3pA^%(>iR$kA5A5*g1@**Fu%nl%^#mIWczuuPVp4dee&gBogJ za1F~L2iKqnF(W8yYUm`z3K-&LfFC&!(vnySW4w7C2qTD95YlE>!&u78g>jpj*Dy6+ zic!Hc;5Tfz7(5#uZqkm!|GY4h{wPiUdJ-oU6%!B=4O83096S{h;|)nK*VJqcP;-bM jzn$}kAKm%G@98FzOq?AMF@@5=SOK1c&<%(Gy5s)=_BH*@ literal 9228 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 diff --git a/godot/Models/grape_animations/upper_body_holding.res b/godot/Models/grape_animations/upper_body_holding.res index 76c3a46e3bd2dde3318169eb58bd05f9764a1817..c813dabe03f51e4fd9dc50eaaddface4beec6d56 100644 GIT binary patch literal 5461 zcma)=TZ|J`7{`Z;ih?NUqJj!|K@e@X_jcLc5q42fP$?oRLM_{&E!*wXwupMi7`Hi(J0|XUfCGe|CyQ7{%6j?ILXQU=bP{Q&Tr4m z{(IW&`fQ)!9aC|hgmD?hRT#^w<)M7DY*(S(V+u|`b^m&3s`0}f8T&uyw~-{e*ULp? zI?n3{t%}vOtFeA#1}=BhYF0g$uMdURI1_KP>y~@vznk^l%{rhZD_?NJjas>Cg*rPU z#x%5SmdeEv+O@S?EVH7%nwak@Zd`#5jZ(Ra1}&L2ZbYi^^V_>MT>eD=z8BgZO8N1JC?^G z&wm+-449GH4(zX2kXjzhNNmFXdIia|VMZb!W~8`0U%>H@>$@6ALB6DV> zwmWl6&z>2n<EUk0BWrK+9S&e~@8pY??XyT>8wk z(1qT2LLu`u=@@j7 zLDa`FB!hUdC4Uk+$Z!A;Vb-~H@AS}xGso}{QpgcKd=DW_O){jrpmhMt5SIYml-~pW zUk{-d_jL<^r_}l*?jyY%Iyk?0%U58?`THopA3C@IyS`c7J9%+((ZrO`-~VNNm$?!- zlA&fd%Hn&ucoFZXJ`a#y1s!A%2D2JNGCWB64?zdl03qYxAN$R7b3Q$_23pR~ZmWGHf9IICPLf{2;Iq zLoz%;`AZELa1FNf zkC;b~&OJ4E>G6|aZamhLM~-CRHP}jh21pm6gAC%I$ik2e+bF*XtyzOJat%tjFX!hq zC{vH^qz9pO^H&g;^AAye75Wlu(2X@%Cf2}4j*g*5eV!#@lu-qgKd zeB$FR_RpOQ$4AT;k)vY}zsm>8UMKwqbdX^tVuvv#!<&@<7W5?;PJ*FZFdRY7B#bP6Q2iI_qDn&m literal 705 zcmV;y0zUmxQ$s@n000005C8xV2><}80ssIgwJ-f(4+#Af0H$1PNAQw19W)CCtO%Fa z`68tJM22B;jO;pzXQ)}j+tty2gWYayT2j*HIueUk%KARcrtrUaqh$w;m;%GNs|>*o zwL(e$JRV4=P5@8Q{e+EoSm=1U@n7U+6*DEplEeQ2|406V{O|k$+qP+%rfHg%Wm%SG z*_?CEIWY{wFbun{>$DgLGQx3}>{|9&n2Tr<{m>e-eBN{NN9wFzW#Evcnfd4B0K_3v5{{>7!{u4Mj zy41cnk`x9Y%QmXQbo4RalDPSWO-ZtTPs-UR!!Y3y%#}5tc>LvK8-#w{6=3 z9!fGLn6Bmrju$dSa#l8$5Dr9*nwJfvkx0X)WfQwxtgfnB*x*zooapA$c~UE?3>Yq0 zXkqC>qZu%GR9K<#zcWEX1eFd&PRO84bf)oTO zp@5O7k+>p5Qjn5@WElf6BbnKx0}>#T90)N4Y{eKN00rKe)&3jnvTzBSn$8+HXsdwW z5Poh=-oYbwI%ZkkFNBCwfnBy}1nsDiau+4R+=VzoGe3HpFnxIU4`=|r2Rr`Ma&w5J ztl3Imq_9RF8j`7eS7P*xu9bqh3DY?hN-cgIz}Ueq7%F~Bi;GFozmpBh`=ofVH#;F< zmtEy2w{PBTTIRenQd2`i#rZ=q diff --git a/godot/Models/grape_animations/upper_body_idle.res.res b/godot/Models/grape_animations/upper_body_idle.res.res index 4be43ab3590740916bc078729b24a31d90169b6f..1148b98a43672b87d2c174b71c3891c494392ab5 100644 GIT binary patch literal 5459 zcma)=+jA3D9LE>D;H9D>7X^hPDk|D-?n!A`phZOiC5Wg9F*HlNHqFK)2vwv-@Y*U0 z_}~mr&iKF^>I}|E3p4V7FFNXr4?g*#jQ;^0$ND{+J)7_DIXGtK%zpQ`zsrZy@Xbl` z+w#4J|GE~}Syz8&A4tG zvdebEtt9%qL3`brU91gvYzp1wy}NqVsn{KzoiXDE6gCE(fkEW8bT}&>s!14asM%Mo z+O ztWq4dy~46x8E6c8Ol8-t7KYuD?MSm|e7^&LEJah>n&T!SOHSCgc zJ4fwGaZedRF)&E27BS^EjyRQuU8@>*aLhy4Un@o?57{GiZWmKnVy2EIW@=bsW|RfR z3QNq?vc$|NOI%@zYgyttmbk)#VudBHXNfB;356x0Wl88*5(*276_$jaC84k+6_%uy zC8=XcDl8~gSdw~{q{5O?SW;S+l#V5(u%K9BN$FWq3QJmHNo!fsI+nD;f?|awt!GIq zEE$C*qh-nHSTYI=iWQcOo+YEOWEGaImL;oW$to-;R#>unmaM{(Q&@6ZmYj|yr?8+{ zVae%Pa!r<7Tc#NEjhB29p}_6Pj}ex37q0jGjx1W#H-YAd=Cm9yT<=*PhkXBKBr;$| zYB_MYUO@^xn333o!}SW1Z^Mj4KFmlhBj%RA6Z0+wR?JB3#o>Ad$#-K$B0FZJmLGFV z-;fz8aAZbeOAgm7NWLjE61g%XwQQMN`o7FafiW`@J9D^RLGrzsk;t4GspZbx(zjvqR;>g)$nwxQSEZ5Be9N+9hQJ&1}X7hBr$1RN%oKo5D zK(<)M@8X<|SNI@*7!h$!6i0k|=5vuJ4$b0ggNWXRC2JQ$FUPtbtN9wU&R(48>A2K3_5IH) zFU;P$)>?uGg5gH2I*!}60Js}BvdKN9mqIsz!T`$yG#)DEJcZMfR4@=@1`V{oS&lnG<0-6LdN(X zN3F{Xzn#oL%lZ5c%pxxT06EfK(7O4n5tsA3DZd9g`Um)F<3SPjUdNA&T5F&r1MdOe zB>}@)((9n345EHLmSpIq{66UD9xVBC*_tzbd#&$I&7RtT=W;&p!DH0panesf>*jAn zT+V-z@}Gi^?!oT9QS0Q%#gmIyojP}M$7em8kRus*4>nVuEu^1@jxvb<<B9xg5K&c757%k)va%QlD2z*Px>e;#0AXB^ksguJn|B&{tuY0)r(OUPF$KVL$ab zKzal^${;?VU&oRRZ&3b0=qN+)-%j@eY&A zlwoB2*Pf++j;-!Bx+XUqJ7kR`N5?QheLf`p5p9B*Vv){|WR}7|wyATQD3) L&Md4veop-tyI@3S literal 702 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 W{0G>^bC7?DTaC|2+zkA0pZ@|5!2j3) literal 3106 zcmV+-4BhimQ$s@n000005C8zX7ytk&2LJ%v1ONaiwJ-f(01pK@0E$?o6+tlG)&UcD zkfYB_i7DWuA(mDtV-+w9#TBnx5&^mHt}lVPn}Zzo3ca-If^`6?(;}tJB50cS5Q7Re zvjP%8+f!3G0Zsu<0XEzbFABzsk3k|AYhGkYTY>ZJw=xwy=ohHjSeBCWeTVG0z25tj zQIU=k(N43hiwh94bM#{xmYU(G_YNTdSLfbaWg3eY9 z_PRZbMx)VaG^(YgrKP2%1%*PPP$=~Id_JGgr_r%DV8*4_*-bKB7cel9q!_}zY+O{rM78W<{jJoY=?=JVQ z;vdSiIF3c@TC+Fy{y@zR^*ei?am(;-8J2p6W6SQdts2g~nR=Caqlt-GP-d@aJ>7y5 z&3Z-a_TGIuGb>AZXRlf=S2K%uZ|t2m)_V`?*6a4GZ}=Pc*j%LWdhY;w7Qc3>AFf#k zy?3DAJ5TRjr}uvBJ0v=X`Q+I^N_fn0$}VUfCpsTT8^G>`Q1h6i53lG)zyon6NEEYR zmXZaHH~azUskmVb6_LzFcou!195UepO#GH4rkQKp#re7;c|UG!3OLJ++08_nFEK{x zFYXx0SmHHvf&07{@=bnaNG8t4g?T^}AfE(-oR@##ZMY~13=Rjow#aa*@-OxVgYyE&oahS}U6_Sm=IjjH1SNaC6;GdkUY^>Z~EoI!;Cxq}56S+uKHLUq&vEj&#Gn3j~1u3TJ;WWSZG z=s~|h0cYs)v_zEFE5yBAzL;PauWXZqo+5S;@_0yL1b=9r2IW3X0?p>XEK@m|lenF& z*0<7TXCh*s9EIC7N1Cr>ayI{EY0Al*j4&+opZMKOKEspyFp1)Z=+klB_#LJLe`r1? z&i$@MEPlyDkjFzBd$)Ws!7pCfhL4^il6fnOKL?{Z-?ijP>lJR_dg}hwLf3a_qDYsg zDMpNSe%GhTw+R?iOEvYlX;|<{c;WiF!e-szu(uUX{|N_G|AI`V<`A{TR(AL02z9)- zYe&82ry~Ti#-}^c=5y!`)+nmvtzA%l7SSHw4hmzv;tLOZt(W;M2qkzQc8t13fJOxg z5cJ-U$O8tbYC;~zKD(f?pKK$>zJ@g+`ANYE_1{=a-=KBJPtHjjD_5k}v!%lQiuYSp z9ohIBv)a42COidr;VY;vsok2i2v10i@&kbksIgc>5F#QYfryPs2XRJ1V?{j@pwkeE zbd;tDAp{Gq%KgtE*jYtV2iuTHR;z@Uy~Gv^5!1az;=aa*haP&!(#lwtv@(`ha$ggX zv8q08eE&Jw##6t@O^nL)d)9vA`t8xO?gme8iiF?DS`)6{i0+8n-zY6e?>8E6m)38; zE4guLy3^O+i59(sLz~j(Y0!}%LPLUzh!`z867=D+la`xB%D>&ifYf{&KOHRgK0Zwz ze-f5&CU8;jE!#rmhOGcOWBVoHX&G_6Za&6;A6UE4T+>bjR(Ijfl5Lr^TPunY+Dn2O zc2g+tG3&;!m5sUf8!CJNFa&2YL5u_uPa)27W>O%SjQrPxvfXM{y0&UH4VMPr)>_mc zkLt%4tg_H7^$Y5J%gM^}Vro!o1A>ZQ1~ds#KDH*G*o+@-&eRFt!KOC?|7^Oyrb@fe zETuORdm3x`hDML(D!rq~t69o#B=$7c@(qn1%~g6wkyo>n-$?9ftmT`~gJ)L_Fuh^} z&ur=%UylRd#vJZdyIiN8w0VGsIdT}jRG$_s5#lqwmf7sM

1aYe-JGb%W)*enM#x^*jARKIDD z?6M?THd*FTExBGrBGgx9jt$+rq4v+i0I@pR(^9W_kL)a=r88`nOGO-Yu_;b%2AH&+ zmJGs>W$vPD)1NyEbl5P4<`{z>~8=W}?)mwZ4yvxYSePnt6=r(EkJ29t`@R6ga z+HnEc?ACGx@Hdg6k3~JadBz04+KGW14588wmR$bC=@Z0ex0Ejph7#;*l#H{ z^-<}`GCg7}Ems81w9<={PV5?>ck~G1R5Jy1jHXN%{y6A7@GvloPHN80UM>T+J3wYm zeFLMDKuXL%o)ouNLB^aF^wCSjT*tlHmPxTVRVzwAz@ju~t-7{pS#`07|39aRX{o}l zS~<+$7-{ntq=)^bg~&Wciq+PxBI262(0%7YKQFgM+ubfEgJv&+5Hw;2#u2cbloJ1v z<+uuS2&*aCybGIkqK9~V_}0G>ZQSz6vaE~>g1-ry(?3=t;i4p2rlFC2QQWVqrisTD zo<{aT1sAM7SWR_2p_eTcwE;@0Ap=k`uNbuEb?C<4CI`a>3;(b4qi$*cCwU=;==B$uf7xEea-v#H#nH_s;y+v{-*WgP^zRxTY~FxMZ$0}qnoyp zLHnEbZM9bOepSM4=pGJD_O$G4UL!k8s7Z@WadtC6r0uk1jehO~^{^op&76Yv zEj}*s7wZL|ez`j9fLT}S1%RliLA`(&CYp&zX2{kJ@B)#M8S)VTrIVNhsi>fp1G5)H z6yATQ?p}bu!=K*5;PBrv4{BYpEe`ztUwzL{tJ*~$?~5>D3nQ5oK-=sa-z;BDT;6P_ zvBm_+;a|Z0#G707L4$ucb7w%QJvY2LNk zeB^?e&d4lctk^J(v6f-S*i1P 33 and task <= 50: + task = "spin" + elif task > 50: + task = "wait" + + "walk": + pass + + "spin": + if !spinning: + var spin_amount = rng.randi_range(-360, 360) + spinning = true + + if spin_amount > 0: + rotate_y(5) + spin_amount -= 5 + elif spin_amount < 0: + rotate_y(-5) + spin_amount += 5 + else: + task = "idle" + spinning = false + + "wait": + # Idle Animation goes here! + wait_time += 1 + if wait_time == 100: + task = "idle" + wait_time = 0 + + +