diff --git a/WEAPON_SYSTEM.md b/WEAPON_SYSTEM.md new file mode 100644 index 0000000..46de776 --- /dev/null +++ b/WEAPON_SYSTEM.md @@ -0,0 +1,165 @@ +# Weapon System Documentation + +## Overview + +The weapon system is a modular, multiplayer-friendly system that allows players to: +- Pick up weapons from the world +- Equip weapons to their right hand (WeaponPoint bone attachment) +- Drop equipped weapons +- Attack with weapon-specific stats (damage, range, cooldown) + +## Architecture + +### Core Components + +1. **WeaponData** (`level/scripts/weapon_data.gd`) - Resource + - Stores weapon stats: name, damage, attack_range, attack_cooldown + - References a mesh scene for visuals + - Reusable across multiple weapon instances + +2. **BaseWeapon** (`level/scripts/base_weapon.gd`) - Node3D + - Equipped weapon attached to player's hand + - Handles attack logic and damage application + - Networked properly for multiplayer + +3. **WorldWeapon** (`level/scripts/world_weapon.gd`) - RigidBody3D + - Physics-based pickup object in the world + - Can be picked up by players + - Automatically creates collision and pickup area + +## Creating New Weapons + +### Step 1: Create a Mesh Scene + +Create a scene with your weapon's 3D model: +``` +[Node3D] - WeaponMesh + └─ [MeshInstance3D] - Your mesh here +``` + +Example: `level/scenes/weapons/sword_mesh.tscn` + +### Step 2: Create a WeaponData Resource + +Create a `.tres` file in `level/resources/`: + +```tres +[gd_resource type="Resource" script_class="WeaponData" load_steps=3 format=3] + +[ext_resource type="Script" path="res://level/scripts/weapon_data.gd" id="1"] +[ext_resource type="PackedScene" path="res://level/scenes/weapons/your_mesh.tscn" id="2"] + +[resource] +script = ExtResource("1") +weapon_name = "Your Weapon Name" +description = "Weapon description" +damage = 15.0 +attack_range = 3.5 +attack_cooldown = 0.6 +attack_animation = "Attack1" +mesh_scene = ExtResource("2") +pickup_radius = 1.5 +weight = 2.0 +``` + +### Step 3: Create a WorldWeapon Scene (Optional) + +If you want to place weapons in the level: + +``` +[RigidBody3D] - WorldWeaponYourWeapon + └─ [CollisionShape3D] - Approximate weapon shape +``` + +Set the script to `world_weapon.gd` and assign your WeaponData resource. + +Example: `level/scenes/weapons/world_weapon_sword.tscn` + +## Testing + +### In Godot Editor + +1. Open `level/scenes/level.tscn` +2. Drag a WorldWeapon scene (e.g., `world_weapon_sword.tscn`) into the level +3. Position it somewhere visible +4. Run the game (F5) + +### Controls + +- **E** - Pick up weapon (when near one) or drop equipped weapon +- **Left Mouse** - Attack with equipped weapon (or unarmed if none) + +### Multiplayer Testing + +1. Run the game and click "Host" +2. Run another instance and click "Join" +3. Both players can: + - Pick up weapons + - Attack each other with weapons + - Drop weapons (creates a WorldWeapon others can pick up) + +## How It Works + +### Pickup Flow + +1. WorldWeapon creates an Area3D with pickup radius +2. Player has a WeaponPickupArea that detects nearby WorldWeapons +3. When player presses "E" near a weapon: + - Client calls `try_pickup()` via RPC to server + - Server validates distance and availability + - Server tells player to `equip_weapon_from_world()` + - Server removes the WorldWeapon from scene + - All clients see the weapon disappear and equipped on player + +### Attack Flow + +1. Player presses attack button +2. Player checks if `equipped_weapon` exists +3. If yes, calls `equipped_weapon.perform_attack()` +4. Weapon checks cooldown and attack range +5. Weapon finds targets using physics query +6. Weapon sends damage request to server +7. Server validates and applies damage via BaseUnit system + +### Drop Flow + +1. Player presses "E" while holding a weapon +2. Player calls `drop_weapon()` RPC +3. Server spawns a WorldWeapon at player's position +4. All clients see weapon unequip and appear in world +5. Weapon becomes a physics object that can be picked up + +## Physics Layers + +- **Layer 1** (player) - Player collisions +- **Layer 2** (world) - Environment collisions +- **Layer 3** (weapon) - Weapon pickup objects + +WorldWeapons: +- `collision_layer = 4` (layer 3) +- `collision_mask = 2` (collides with world) + +Player WeaponPickupArea: +- `collision_mask = 4` (detects layer 3) + +## Example Weapons + +### Iron Sword +- **Damage**: 15 +- **Range**: 3.5m +- **Cooldown**: 0.6s +- **Resource**: `level/resources/weapon_sword.tres` + +### Wooden Shield +- **Damage**: 8 +- **Range**: 2.5m +- **Cooldown**: 0.8s +- **Resource**: `level/resources/weapon_shield.tres` + +## Notes + +- All weapon spawning/pickup is server-authoritative +- Weapon stats are synced via WeaponData resource +- Meshes are instantiated locally on each client +- The system supports any number of weapon types +- You can extend BaseWeapon for special weapon behaviors (e.g., ranged weapons, magic weapons) diff --git a/assets/Objects/Low Poly Medieval Weapons/Axes/Axe.fbx b/assets/Objects/Low Poly Medieval Weapons/Axes/Axe.fbx new file mode 100644 index 0000000..8998f96 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Axes/Axe.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Axes/Axe.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Axes/Axe.fbx.import new file mode 100644 index 0000000..66b5a27 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Axes/Axe.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://0o7wp2i34v8j" +path="res://.godot/imported/Axe.fbx-a79bce4c20514ebcd15816620402d582.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Axes/Axe.fbx" +dest_files=["res://.godot/imported/Axe.fbx-a79bce4c20514ebcd15816620402d582.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Axes/Bardiche.fbx b/assets/Objects/Low Poly Medieval Weapons/Axes/Bardiche.fbx new file mode 100644 index 0000000..26f8ad3 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Axes/Bardiche.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Axes/Bardiche.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Axes/Bardiche.fbx.import new file mode 100644 index 0000000..c0129ca --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Axes/Bardiche.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bvwwj6ko81kk1" +path="res://.godot/imported/Bardiche.fbx-c5f0cfa1c5e8b128ec3278fcb6ba8356.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Axes/Bardiche.fbx" +dest_files=["res://.godot/imported/Bardiche.fbx-c5f0cfa1c5e8b128ec3278fcb6ba8356.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Axes/Battle Axe.fbx b/assets/Objects/Low Poly Medieval Weapons/Axes/Battle Axe.fbx new file mode 100644 index 0000000..10daa09 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Axes/Battle Axe.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Axes/Battle Axe.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Axes/Battle Axe.fbx.import new file mode 100644 index 0000000..298fbd8 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Axes/Battle Axe.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://cuslijt4ktm2r" +path="res://.godot/imported/Battle Axe.fbx-06e7ac5ce1dffa84e05bf780328d8c04.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Axes/Battle Axe.fbx" +dest_files=["res://.godot/imported/Battle Axe.fbx-06e7ac5ce1dffa84e05bf780328d8c04.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Axes/Halberd.fbx b/assets/Objects/Low Poly Medieval Weapons/Axes/Halberd.fbx new file mode 100644 index 0000000..9f96f0e Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Axes/Halberd.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Axes/Halberd.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Axes/Halberd.fbx.import new file mode 100644 index 0000000..7dbeadc --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Axes/Halberd.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bjvvcg8acjfr7" +path="res://.godot/imported/Halberd.fbx-4a586c1aec26ddcdf5d2fa638fb319e9.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Axes/Halberd.fbx" +dest_files=["res://.godot/imported/Halberd.fbx-4a586c1aec26ddcdf5d2fa638fb319e9.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Axes/Two handed Axe.fbx b/assets/Objects/Low Poly Medieval Weapons/Axes/Two handed Axe.fbx new file mode 100644 index 0000000..c1206d4 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Axes/Two handed Axe.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Axes/Two handed Axe.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Axes/Two handed Axe.fbx.import new file mode 100644 index 0000000..cf77704 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Axes/Two handed Axe.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://ckgj7l5e2gwb3" +path="res://.godot/imported/Two handed Axe.fbx-54039b153e742bbdd3843571307e11ac.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Axes/Two handed Axe.fbx" +dest_files=["res://.godot/imported/Two handed Axe.fbx-54039b153e742bbdd3843571307e11ac.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Bows/Arrow.fbx b/assets/Objects/Low Poly Medieval Weapons/Bows/Arrow.fbx new file mode 100644 index 0000000..cc5af81 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Bows/Arrow.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Bows/Arrow.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Bows/Arrow.fbx.import new file mode 100644 index 0000000..0e1a4f7 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Bows/Arrow.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://c2488oo6qq0nm" +path="res://.godot/imported/Arrow.fbx-040f5da1dca5d54113511381e1d5cfd7.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Bows/Arrow.fbx" +dest_files=["res://.godot/imported/Arrow.fbx-040f5da1dca5d54113511381e1d5cfd7.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Bows/Bolt.fbx b/assets/Objects/Low Poly Medieval Weapons/Bows/Bolt.fbx new file mode 100644 index 0000000..2ba1748 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Bows/Bolt.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Bows/Bolt.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Bows/Bolt.fbx.import new file mode 100644 index 0000000..a8f4d66 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Bows/Bolt.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://227e2fn5dtgc" +path="res://.godot/imported/Bolt.fbx-8526fc214699697432fb504686299a64.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Bows/Bolt.fbx" +dest_files=["res://.godot/imported/Bolt.fbx-8526fc214699697432fb504686299a64.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Bows/Crossbow.fbx b/assets/Objects/Low Poly Medieval Weapons/Bows/Crossbow.fbx new file mode 100644 index 0000000..0d989ba Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Bows/Crossbow.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Bows/Crossbow.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Bows/Crossbow.fbx.import new file mode 100644 index 0000000..918338e --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Bows/Crossbow.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://xo0x1xio1cwv" +path="res://.godot/imported/Crossbow.fbx-630e6d77b03e317c52a5294a5586cb05.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Bows/Crossbow.fbx" +dest_files=["res://.godot/imported/Crossbow.fbx-630e6d77b03e317c52a5294a5586cb05.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Bows/Long Bow.fbx b/assets/Objects/Low Poly Medieval Weapons/Bows/Long Bow.fbx new file mode 100644 index 0000000..b7afccd Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Bows/Long Bow.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Bows/Long Bow.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Bows/Long Bow.fbx.import new file mode 100644 index 0000000..d312547 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Bows/Long Bow.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bs6cyak3yqhia" +path="res://.godot/imported/Long Bow.fbx-e435e6ed9a2a720205d67db17174c770.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Bows/Long Bow.fbx" +dest_files=["res://.godot/imported/Long Bow.fbx-e435e6ed9a2a720205d67db17174c770.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Bows/Quiver With Arrows.fbx b/assets/Objects/Low Poly Medieval Weapons/Bows/Quiver With Arrows.fbx new file mode 100644 index 0000000..b8fa6d9 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Bows/Quiver With Arrows.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Bows/Quiver With Arrows.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Bows/Quiver With Arrows.fbx.import new file mode 100644 index 0000000..b3a56c9 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Bows/Quiver With Arrows.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bijs1byktdp2d" +path="res://.godot/imported/Quiver With Arrows.fbx-3754d0fcfabcde59bed8b3da04601dde.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Bows/Quiver With Arrows.fbx" +dest_files=["res://.godot/imported/Quiver With Arrows.fbx-3754d0fcfabcde59bed8b3da04601dde.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Bows/Quiver.fbx b/assets/Objects/Low Poly Medieval Weapons/Bows/Quiver.fbx new file mode 100644 index 0000000..a6f7b6e Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Bows/Quiver.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Bows/Quiver.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Bows/Quiver.fbx.import new file mode 100644 index 0000000..538692b --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Bows/Quiver.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://dvy025ry68ueh" +path="res://.godot/imported/Quiver.fbx-8ef5c46676ff6dcaadea22842e2aa79e.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Bows/Quiver.fbx" +dest_files=["res://.godot/imported/Quiver.fbx-8ef5c46676ff6dcaadea22842e2aa79e.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Bows/Recurve Bow.fbx b/assets/Objects/Low Poly Medieval Weapons/Bows/Recurve Bow.fbx new file mode 100644 index 0000000..0ff10c7 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Bows/Recurve Bow.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Bows/Recurve Bow.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Bows/Recurve Bow.fbx.import new file mode 100644 index 0000000..7dabe98 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Bows/Recurve Bow.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://rgvbi8exiv6n" +path="res://.godot/imported/Recurve Bow.fbx-c480134cd8b1e84836029ea08aea011b.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Bows/Recurve Bow.fbx" +dest_files=["res://.godot/imported/Recurve Bow.fbx-c480134cd8b1e84836029ea08aea011b.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Farming/Pitchfork.fbx b/assets/Objects/Low Poly Medieval Weapons/Farming/Pitchfork.fbx new file mode 100644 index 0000000..7a5a071 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Farming/Pitchfork.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Farming/Pitchfork.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Farming/Pitchfork.fbx.import new file mode 100644 index 0000000..5f3aa53 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Farming/Pitchfork.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://cyc051yj64p0v" +path="res://.godot/imported/Pitchfork.fbx-cf87d0aad335f35f726ac4a792fae909.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Farming/Pitchfork.fbx" +dest_files=["res://.godot/imported/Pitchfork.fbx-cf87d0aad335f35f726ac4a792fae909.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Farming/Scythe.fbx b/assets/Objects/Low Poly Medieval Weapons/Farming/Scythe.fbx new file mode 100644 index 0000000..e4ccc5c Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Farming/Scythe.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Farming/Scythe.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Farming/Scythe.fbx.import new file mode 100644 index 0000000..0cb8c76 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Farming/Scythe.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bn5gtm1i8rr81" +path="res://.godot/imported/Scythe.fbx-2379d1d4f0a29d2b0215e9d07536486d.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Farming/Scythe.fbx" +dest_files=["res://.godot/imported/Scythe.fbx-2379d1d4f0a29d2b0215e9d07536486d.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Farming/Sickle.fbx b/assets/Objects/Low Poly Medieval Weapons/Farming/Sickle.fbx new file mode 100644 index 0000000..9cb756e Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Farming/Sickle.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Farming/Sickle.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Farming/Sickle.fbx.import new file mode 100644 index 0000000..da181eb --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Farming/Sickle.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://dn0mfcldcndn1" +path="res://.godot/imported/Sickle.fbx-0f1dfd144de8fd5e4d89b9c9977424fc.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Farming/Sickle.fbx" +dest_files=["res://.godot/imported/Sickle.fbx-0f1dfd144de8fd5e4d89b9c9977424fc.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Hammers/Hammer.fbx b/assets/Objects/Low Poly Medieval Weapons/Hammers/Hammer.fbx new file mode 100644 index 0000000..377d1e3 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Hammers/Hammer.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Hammers/Hammer.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Hammers/Hammer.fbx.import new file mode 100644 index 0000000..0e7fa5d --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Hammers/Hammer.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://btehxs8vg7clc" +path="res://.godot/imported/Hammer.fbx-ca31be4c29c55f0774757d8e57104dbe.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Hammers/Hammer.fbx" +dest_files=["res://.godot/imported/Hammer.fbx-ca31be4c29c55f0774757d8e57104dbe.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Hammers/Two-Handed Hammer.fbx b/assets/Objects/Low Poly Medieval Weapons/Hammers/Two-Handed Hammer.fbx new file mode 100644 index 0000000..c61346c Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Hammers/Two-Handed Hammer.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Hammers/Two-Handed Hammer.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Hammers/Two-Handed Hammer.fbx.import new file mode 100644 index 0000000..308e833 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Hammers/Two-Handed Hammer.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bqhm0l7ouwxg6" +path="res://.godot/imported/Two-Handed Hammer.fbx-8200ec071910ea01b54c4dc96d6ff50a.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Hammers/Two-Handed Hammer.fbx" +dest_files=["res://.godot/imported/Two-Handed Hammer.fbx-8200ec071910ea01b54c4dc96d6ff50a.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Hammers/Warhammer.fbx b/assets/Objects/Low Poly Medieval Weapons/Hammers/Warhammer.fbx new file mode 100644 index 0000000..7eaccd5 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Hammers/Warhammer.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Hammers/Warhammer.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Hammers/Warhammer.fbx.import new file mode 100644 index 0000000..4c104f6 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Hammers/Warhammer.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bwv6npugl54u4" +path="res://.godot/imported/Warhammer.fbx-3bbf6f1fbb9b2a4b57f1d28fd76dcbf6.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Hammers/Warhammer.fbx" +dest_files=["res://.godot/imported/Warhammer.fbx-3bbf6f1fbb9b2a4b57f1d28fd76dcbf6.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Maces/Flail.fbx b/assets/Objects/Low Poly Medieval Weapons/Maces/Flail.fbx new file mode 100644 index 0000000..56e9f57 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Maces/Flail.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Maces/Flail.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Maces/Flail.fbx.import new file mode 100644 index 0000000..f8914fe --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Maces/Flail.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://pdlrft67c2x5" +path="res://.godot/imported/Flail.fbx-8b03965cef628780ce05a7b8a8915e0f.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Maces/Flail.fbx" +dest_files=["res://.godot/imported/Flail.fbx-8b03965cef628780ce05a7b8a8915e0f.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Maces/Mace.fbx b/assets/Objects/Low Poly Medieval Weapons/Maces/Mace.fbx new file mode 100644 index 0000000..a4a60e1 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Maces/Mace.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Maces/Mace.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Maces/Mace.fbx.import new file mode 100644 index 0000000..c382fb6 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Maces/Mace.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://1bse2w8x5pe2" +path="res://.godot/imported/Mace.fbx-a7ba3c0f84cd84583ef0f827aea0db8b.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Maces/Mace.fbx" +dest_files=["res://.godot/imported/Mace.fbx-a7ba3c0f84cd84583ef0f827aea0db8b.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Maces/Spiked Club.fbx b/assets/Objects/Low Poly Medieval Weapons/Maces/Spiked Club.fbx new file mode 100644 index 0000000..0d81122 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Maces/Spiked Club.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Maces/Spiked Club.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Maces/Spiked Club.fbx.import new file mode 100644 index 0000000..6ce8156 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Maces/Spiked Club.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://b2mbic3vmcsx0" +path="res://.godot/imported/Spiked Club.fbx-b91fd393f5eb99dc2a7a2458dcaff2d2.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Maces/Spiked Club.fbx" +dest_files=["res://.godot/imported/Spiked Club.fbx-b91fd393f5eb99dc2a7a2458dcaff2d2.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Maces/Spiked Mace.fbx b/assets/Objects/Low Poly Medieval Weapons/Maces/Spiked Mace.fbx new file mode 100644 index 0000000..a45edaf Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Maces/Spiked Mace.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Maces/Spiked Mace.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Maces/Spiked Mace.fbx.import new file mode 100644 index 0000000..bcf8199 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Maces/Spiked Mace.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://rna8l7auvmtl" +path="res://.godot/imported/Spiked Mace.fbx-d66df79940ec52fa977157236dc15966.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Maces/Spiked Mace.fbx" +dest_files=["res://.godot/imported/Spiked Mace.fbx-d66df79940ec52fa977157236dc15966.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Magic/Open Spellbook.fbx b/assets/Objects/Low Poly Medieval Weapons/Magic/Open Spellbook.fbx new file mode 100644 index 0000000..c0d9ab0 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Magic/Open Spellbook.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Magic/Open Spellbook.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Magic/Open Spellbook.fbx.import new file mode 100644 index 0000000..91dc3e1 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Magic/Open Spellbook.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://d00ceuf4esrif" +path="res://.godot/imported/Open Spellbook.fbx-bc6e51c9b0d12d790ffdd440816c0660.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Magic/Open Spellbook.fbx" +dest_files=["res://.godot/imported/Open Spellbook.fbx-bc6e51c9b0d12d790ffdd440816c0660.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Magic/Potion A.fbx b/assets/Objects/Low Poly Medieval Weapons/Magic/Potion A.fbx new file mode 100644 index 0000000..e496673 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Magic/Potion A.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Magic/Potion A.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Magic/Potion A.fbx.import new file mode 100644 index 0000000..17a8ade --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Magic/Potion A.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://cmtws2uauxf57" +path="res://.godot/imported/Potion A.fbx-a43dbff5e43ece0fb7cfc36cf2eba825.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Magic/Potion A.fbx" +dest_files=["res://.godot/imported/Potion A.fbx-a43dbff5e43ece0fb7cfc36cf2eba825.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Magic/Potion B.fbx b/assets/Objects/Low Poly Medieval Weapons/Magic/Potion B.fbx new file mode 100644 index 0000000..8233723 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Magic/Potion B.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Magic/Potion B.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Magic/Potion B.fbx.import new file mode 100644 index 0000000..8a5d23d --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Magic/Potion B.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bdxndijccpk0t" +path="res://.godot/imported/Potion B.fbx-50e52bdf536fe1f89f838b00c96359b2.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Magic/Potion B.fbx" +dest_files=["res://.godot/imported/Potion B.fbx-50e52bdf536fe1f89f838b00c96359b2.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Magic/Potion C.fbx b/assets/Objects/Low Poly Medieval Weapons/Magic/Potion C.fbx new file mode 100644 index 0000000..0affb66 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Magic/Potion C.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Magic/Potion C.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Magic/Potion C.fbx.import new file mode 100644 index 0000000..264942a --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Magic/Potion C.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://dprdfihu21n07" +path="res://.godot/imported/Potion C.fbx-be9f960b2000c67ef01b5ced5b671784.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Magic/Potion C.fbx" +dest_files=["res://.godot/imported/Potion C.fbx-be9f960b2000c67ef01b5ced5b671784.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Magic/Potion D.fbx b/assets/Objects/Low Poly Medieval Weapons/Magic/Potion D.fbx new file mode 100644 index 0000000..100ce12 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Magic/Potion D.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Magic/Potion D.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Magic/Potion D.fbx.import new file mode 100644 index 0000000..2cecc12 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Magic/Potion D.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bnnewhhfje5fd" +path="res://.godot/imported/Potion D.fbx-891832c3cb28d2c055367c9b12d59d18.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Magic/Potion D.fbx" +dest_files=["res://.godot/imported/Potion D.fbx-891832c3cb28d2c055367c9b12d59d18.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Magic/Potion E.fbx b/assets/Objects/Low Poly Medieval Weapons/Magic/Potion E.fbx new file mode 100644 index 0000000..60a5617 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Magic/Potion E.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Magic/Potion E.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Magic/Potion E.fbx.import new file mode 100644 index 0000000..dcb44e7 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Magic/Potion E.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://cg644pgk0sx8b" +path="res://.godot/imported/Potion E.fbx-8f17e5f625d1ed05e3855c88c102e77d.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Magic/Potion E.fbx" +dest_files=["res://.godot/imported/Potion E.fbx-8f17e5f625d1ed05e3855c88c102e77d.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Magic/Potion F.fbx b/assets/Objects/Low Poly Medieval Weapons/Magic/Potion F.fbx new file mode 100644 index 0000000..f9d1bd6 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Magic/Potion F.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Magic/Potion F.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Magic/Potion F.fbx.import new file mode 100644 index 0000000..d8bed58 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Magic/Potion F.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://xg3mn4gnc014" +path="res://.godot/imported/Potion F.fbx-3b2c157273355c82d8ce5957ce78438c.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Magic/Potion F.fbx" +dest_files=["res://.godot/imported/Potion F.fbx-3b2c157273355c82d8ce5957ce78438c.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Magic/Scroll.fbx b/assets/Objects/Low Poly Medieval Weapons/Magic/Scroll.fbx new file mode 100644 index 0000000..5e0900a Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Magic/Scroll.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Magic/Scroll.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Magic/Scroll.fbx.import new file mode 100644 index 0000000..ab0ef5b --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Magic/Scroll.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://dem8v6m1n3vjg" +path="res://.godot/imported/Scroll.fbx-ae55f916fd5c63ab9012625d7f25ad2b.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Magic/Scroll.fbx" +dest_files=["res://.godot/imported/Scroll.fbx-ae55f916fd5c63ab9012625d7f25ad2b.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Magic/Spellbook.fbx b/assets/Objects/Low Poly Medieval Weapons/Magic/Spellbook.fbx new file mode 100644 index 0000000..61951c4 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Magic/Spellbook.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Magic/Spellbook.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Magic/Spellbook.fbx.import new file mode 100644 index 0000000..faf4f37 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Magic/Spellbook.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bxkh8l50xltum" +path="res://.godot/imported/Spellbook.fbx-3c06b3778d2315fb9648dcfbcb7c0b66.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Magic/Spellbook.fbx" +dest_files=["res://.godot/imported/Spellbook.fbx-3c06b3778d2315fb9648dcfbcb7c0b66.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Miscellaneous/Broom.fbx b/assets/Objects/Low Poly Medieval Weapons/Miscellaneous/Broom.fbx new file mode 100644 index 0000000..6245012 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Miscellaneous/Broom.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Miscellaneous/Broom.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Miscellaneous/Broom.fbx.import new file mode 100644 index 0000000..8e1be07 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Miscellaneous/Broom.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bcwbt4ujsxxif" +path="res://.godot/imported/Broom.fbx-8c8fb956311f1550351dd4b96513bbc7.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Miscellaneous/Broom.fbx" +dest_files=["res://.godot/imported/Broom.fbx-8c8fb956311f1550351dd4b96513bbc7.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Miscellaneous/Mandolin.fbx b/assets/Objects/Low Poly Medieval Weapons/Miscellaneous/Mandolin.fbx new file mode 100644 index 0000000..c9425e3 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Miscellaneous/Mandolin.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Miscellaneous/Mandolin.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Miscellaneous/Mandolin.fbx.import new file mode 100644 index 0000000..b2023f0 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Miscellaneous/Mandolin.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://byrebcd3jf1un" +path="res://.godot/imported/Mandolin.fbx-4020aeeb67c27c451e1a5a84d78e154a.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Miscellaneous/Mandolin.fbx" +dest_files=["res://.godot/imported/Mandolin.fbx-4020aeeb67c27c451e1a5a84d78e154a.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Miscellaneous/Tankard.fbx b/assets/Objects/Low Poly Medieval Weapons/Miscellaneous/Tankard.fbx new file mode 100644 index 0000000..9a07f8b Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Miscellaneous/Tankard.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Miscellaneous/Tankard.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Miscellaneous/Tankard.fbx.import new file mode 100644 index 0000000..6139408 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Miscellaneous/Tankard.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://sf7mcchik18g" +path="res://.godot/imported/Tankard.fbx-ad8b44fb92f6b8e590092f22259db55c.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Miscellaneous/Tankard.fbx" +dest_files=["res://.godot/imported/Tankard.fbx-ad8b44fb92f6b8e590092f22259db55c.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Shields/Shield A.fbx b/assets/Objects/Low Poly Medieval Weapons/Shields/Shield A.fbx new file mode 100644 index 0000000..dbf94f2 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Shields/Shield A.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Shields/Shield A.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Shields/Shield A.fbx.import new file mode 100644 index 0000000..a32020e --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Shields/Shield A.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://cmskybe0ewvsv" +path="res://.godot/imported/Shield A.fbx-ae47219e1372b029abaa97938efbe8c2.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Shields/Shield A.fbx" +dest_files=["res://.godot/imported/Shield A.fbx-ae47219e1372b029abaa97938efbe8c2.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Shields/Shield B.fbx b/assets/Objects/Low Poly Medieval Weapons/Shields/Shield B.fbx new file mode 100644 index 0000000..3ccde7e Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Shields/Shield B.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Shields/Shield B.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Shields/Shield B.fbx.import new file mode 100644 index 0000000..bf46fcb --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Shields/Shield B.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://w3juhjesjpha" +path="res://.godot/imported/Shield B.fbx-a80264004fdc7f0319f8dd5b050f288f.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Shields/Shield B.fbx" +dest_files=["res://.godot/imported/Shield B.fbx-a80264004fdc7f0319f8dd5b050f288f.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Shields/Shield C.fbx b/assets/Objects/Low Poly Medieval Weapons/Shields/Shield C.fbx new file mode 100644 index 0000000..4997d17 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Shields/Shield C.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Shields/Shield C.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Shields/Shield C.fbx.import new file mode 100644 index 0000000..9582e1f --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Shields/Shield C.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://i7adv7saue61" +path="res://.godot/imported/Shield C.fbx-ab47fbf681cffe48e837430e0b87384c.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Shields/Shield C.fbx" +dest_files=["res://.godot/imported/Shield C.fbx-ab47fbf681cffe48e837430e0b87384c.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Shields/Shield D.fbx b/assets/Objects/Low Poly Medieval Weapons/Shields/Shield D.fbx new file mode 100644 index 0000000..4577c9a Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Shields/Shield D.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Shields/Shield D.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Shields/Shield D.fbx.import new file mode 100644 index 0000000..579c9ad --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Shields/Shield D.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://cpn50n58bd8yd" +path="res://.godot/imported/Shield D.fbx-b74a64d4c4adc6dac092df4a1a8a0272.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Shields/Shield D.fbx" +dest_files=["res://.godot/imported/Shield D.fbx-b74a64d4c4adc6dac092df4a1a8a0272.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Shields/Shield E.fbx b/assets/Objects/Low Poly Medieval Weapons/Shields/Shield E.fbx new file mode 100644 index 0000000..11a9d0d Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Shields/Shield E.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Shields/Shield E.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Shields/Shield E.fbx.import new file mode 100644 index 0000000..6f1f463 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Shields/Shield E.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://cob241yfucecm" +path="res://.godot/imported/Shield E.fbx-ca9b7586747d3ec0eded40d9025f51e1.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Shields/Shield E.fbx" +dest_files=["res://.godot/imported/Shield E.fbx-ca9b7586747d3ec0eded40d9025f51e1.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Shields/Shield F.fbx b/assets/Objects/Low Poly Medieval Weapons/Shields/Shield F.fbx new file mode 100644 index 0000000..e42a3d5 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Shields/Shield F.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Shields/Shield F.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Shields/Shield F.fbx.import new file mode 100644 index 0000000..2d062d3 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Shields/Shield F.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://b6scuy82w8ypu" +path="res://.godot/imported/Shield F.fbx-8e01dd254208efc2e4a732e92252ffd4.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Shields/Shield F.fbx" +dest_files=["res://.godot/imported/Shield F.fbx-8e01dd254208efc2e4a732e92252ffd4.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Ballista Bolt.fbx b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Ballista Bolt.fbx new file mode 100644 index 0000000..b30fcd1 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Ballista Bolt.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Ballista Bolt.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Ballista Bolt.fbx.import new file mode 100644 index 0000000..386305a --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Ballista Bolt.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bmdkuefxdt17n" +path="res://.godot/imported/Ballista Bolt.fbx-de1488f5b5d767dbb76d50cc4cffb9b3.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Siege Engines/Ballista Bolt.fbx" +dest_files=["res://.godot/imported/Ballista Bolt.fbx-de1488f5b5d767dbb76d50cc4cffb9b3.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Ballista.fbx b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Ballista.fbx new file mode 100644 index 0000000..f7b02c9 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Ballista.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Ballista.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Ballista.fbx.import new file mode 100644 index 0000000..a25bf69 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Ballista.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://cyrrqhtq3kla8" +path="res://.godot/imported/Ballista.fbx-cec63278470917b59aa97eae6c1b62bb.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Siege Engines/Ballista.fbx" +dest_files=["res://.godot/imported/Ballista.fbx-cec63278470917b59aa97eae6c1b62bb.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Battering Ram.fbx b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Battering Ram.fbx new file mode 100644 index 0000000..39d166e Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Battering Ram.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Battering Ram.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Battering Ram.fbx.import new file mode 100644 index 0000000..0ce9912 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Battering Ram.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bsmgtcf4045qs" +path="res://.godot/imported/Battering Ram.fbx-2e34bc3057296b7bf6b4b4b129791597.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Siege Engines/Battering Ram.fbx" +dest_files=["res://.godot/imported/Battering Ram.fbx-2e34bc3057296b7bf6b4b4b129791597.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Catapult Boulder.fbx b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Catapult Boulder.fbx new file mode 100644 index 0000000..1418706 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Catapult Boulder.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Catapult Boulder.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Catapult Boulder.fbx.import new file mode 100644 index 0000000..1858ddb --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Catapult Boulder.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://q0f37y0ccqnl" +path="res://.godot/imported/Catapult Boulder.fbx-e2e876b2b9599644a14d57f1c8642540.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Siege Engines/Catapult Boulder.fbx" +dest_files=["res://.godot/imported/Catapult Boulder.fbx-e2e876b2b9599644a14d57f1c8642540.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Catapult.fbx b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Catapult.fbx new file mode 100644 index 0000000..02d37d5 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Catapult.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Catapult.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Catapult.fbx.import new file mode 100644 index 0000000..43303fe --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Catapult.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bcjj00uaghlim" +path="res://.godot/imported/Catapult.fbx-0800cd5526eae8fef2689b5e408db4d5.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Siege Engines/Catapult.fbx" +dest_files=["res://.godot/imported/Catapult.fbx-0800cd5526eae8fef2689b5e408db4d5.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Seige Tower.fbx b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Seige Tower.fbx new file mode 100644 index 0000000..f734874 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Seige Tower.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Seige Tower.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Seige Tower.fbx.import new file mode 100644 index 0000000..7f47e88 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Seige Tower.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bs235yrgo4kgp" +path="res://.godot/imported/Seige Tower.fbx-52cf6d6044831bc6581145ae5669c5e7.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Siege Engines/Seige Tower.fbx" +dest_files=["res://.godot/imported/Seige Tower.fbx-52cf6d6044831bc6581145ae5669c5e7.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Siege Tower.fbx b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Siege Tower.fbx new file mode 100644 index 0000000..376229b Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Siege Tower.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Siege Tower.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Siege Tower.fbx.import new file mode 100644 index 0000000..2ebdb13 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Siege Tower.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bl373ou8ntuxu" +path="res://.godot/imported/Siege Tower.fbx-78f783d79d392fb01c3e02158a516280.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Siege Engines/Siege Tower.fbx" +dest_files=["res://.godot/imported/Siege Tower.fbx-78f783d79d392fb01c3e02158a516280.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Trebuchet Rock.fbx b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Trebuchet Rock.fbx new file mode 100644 index 0000000..f6ca175 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Trebuchet Rock.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Trebuchet Rock.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Trebuchet Rock.fbx.import new file mode 100644 index 0000000..1cf6fee --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Trebuchet Rock.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://dnxhylis6uxv3" +path="res://.godot/imported/Trebuchet Rock.fbx-9f7f47c0e3e1d21bd29138864f546218.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Siege Engines/Trebuchet Rock.fbx" +dest_files=["res://.godot/imported/Trebuchet Rock.fbx-9f7f47c0e3e1d21bd29138864f546218.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Trebuchet.fbx b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Trebuchet.fbx new file mode 100644 index 0000000..a78ef13 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Trebuchet.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Trebuchet.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Trebuchet.fbx.import new file mode 100644 index 0000000..febaca4 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Siege Engines/Trebuchet.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://c2w0jo5v08to7" +path="res://.godot/imported/Trebuchet.fbx-4e278fd7004ed0e2e570f4916ca1b411.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Siege Engines/Trebuchet.fbx" +dest_files=["res://.godot/imported/Trebuchet.fbx-4e278fd7004ed0e2e570f4916ca1b411.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Spears/Javelin.fbx b/assets/Objects/Low Poly Medieval Weapons/Spears/Javelin.fbx new file mode 100644 index 0000000..2e393e9 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Spears/Javelin.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Spears/Javelin.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Spears/Javelin.fbx.import new file mode 100644 index 0000000..07f7f3f --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Spears/Javelin.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://ceiahrhlgrbgj" +path="res://.godot/imported/Javelin.fbx-45160ff22d77a234a2d9f2fda5e1d69a.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Spears/Javelin.fbx" +dest_files=["res://.godot/imported/Javelin.fbx-45160ff22d77a234a2d9f2fda5e1d69a.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Spears/Lance.fbx b/assets/Objects/Low Poly Medieval Weapons/Spears/Lance.fbx new file mode 100644 index 0000000..8457a2f Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Spears/Lance.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Spears/Lance.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Spears/Lance.fbx.import new file mode 100644 index 0000000..2d93854 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Spears/Lance.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bg83i3aevkesk" +path="res://.godot/imported/Lance.fbx-835cc6765be7ffc61b3bac45871b25bc.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Spears/Lance.fbx" +dest_files=["res://.godot/imported/Lance.fbx-835cc6765be7ffc61b3bac45871b25bc.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Spears/Polearm.fbx b/assets/Objects/Low Poly Medieval Weapons/Spears/Polearm.fbx new file mode 100644 index 0000000..5288628 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Spears/Polearm.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Spears/Polearm.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Spears/Polearm.fbx.import new file mode 100644 index 0000000..ecde897 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Spears/Polearm.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://b8rtge34doiyn" +path="res://.godot/imported/Polearm.fbx-1239f23c12b2ddd3d617e4d24316eefc.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Spears/Polearm.fbx" +dest_files=["res://.godot/imported/Polearm.fbx-1239f23c12b2ddd3d617e4d24316eefc.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Spears/Spear.fbx b/assets/Objects/Low Poly Medieval Weapons/Spears/Spear.fbx new file mode 100644 index 0000000..6eb5b26 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Spears/Spear.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Spears/Spear.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Spears/Spear.fbx.import new file mode 100644 index 0000000..8d7ca72 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Spears/Spear.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bqcvk2mggsc1h" +path="res://.godot/imported/Spear.fbx-4bd7b70c1b5814a2533d568810a342bc.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Spears/Spear.fbx" +dest_files=["res://.godot/imported/Spear.fbx-4bd7b70c1b5814a2533d568810a342bc.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Swords/Claymore.fbx b/assets/Objects/Low Poly Medieval Weapons/Swords/Claymore.fbx new file mode 100644 index 0000000..162d96b Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Swords/Claymore.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Swords/Claymore.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Swords/Claymore.fbx.import new file mode 100644 index 0000000..f522aa3 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Swords/Claymore.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://3fcjlmr8wn6" +path="res://.godot/imported/Claymore.fbx-63d67eaf1a59ed3319440a6700b459dc.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Swords/Claymore.fbx" +dest_files=["res://.godot/imported/Claymore.fbx-63d67eaf1a59ed3319440a6700b459dc.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Swords/Dagger.fbx b/assets/Objects/Low Poly Medieval Weapons/Swords/Dagger.fbx new file mode 100644 index 0000000..34d59f9 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Swords/Dagger.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Swords/Dagger.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Swords/Dagger.fbx.import new file mode 100644 index 0000000..64dea6a --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Swords/Dagger.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://dlccb0nx6cq6o" +path="res://.godot/imported/Dagger.fbx-c4c8a48a897fe3747f906db4fb4c9f62.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Swords/Dagger.fbx" +dest_files=["res://.godot/imported/Dagger.fbx-c4c8a48a897fe3747f906db4fb4c9f62.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Swords/Falchion Cleaver.fbx b/assets/Objects/Low Poly Medieval Weapons/Swords/Falchion Cleaver.fbx new file mode 100644 index 0000000..d242fa3 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Swords/Falchion Cleaver.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Swords/Falchion Cleaver.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Swords/Falchion Cleaver.fbx.import new file mode 100644 index 0000000..95a6888 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Swords/Falchion Cleaver.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://c4rlritrllu5q" +path="res://.godot/imported/Falchion Cleaver.fbx-bbdf7241fb173c3b03747c820b89fc8e.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Swords/Falchion Cleaver.fbx" +dest_files=["res://.godot/imported/Falchion Cleaver.fbx-bbdf7241fb173c3b03747c820b89fc8e.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Swords/Falchion.fbx b/assets/Objects/Low Poly Medieval Weapons/Swords/Falchion.fbx new file mode 100644 index 0000000..a524498 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Swords/Falchion.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Swords/Falchion.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Swords/Falchion.fbx.import new file mode 100644 index 0000000..ed40582 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Swords/Falchion.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://crvs2otu6wmsy" +path="res://.godot/imported/Falchion.fbx-7bc14dc80fe8bc3e0663189d3f44eb0b.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Swords/Falchion.fbx" +dest_files=["res://.godot/imported/Falchion.fbx-7bc14dc80fe8bc3e0663189d3f44eb0b.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Swords/Greatsword.fbx b/assets/Objects/Low Poly Medieval Weapons/Swords/Greatsword.fbx new file mode 100644 index 0000000..3fa2df2 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Swords/Greatsword.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Swords/Greatsword.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Swords/Greatsword.fbx.import new file mode 100644 index 0000000..f8fb464 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Swords/Greatsword.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://b3mcwkaqqbgvv" +path="res://.godot/imported/Greatsword.fbx-348d9bff6b7f111ed70f638c3d587e42.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Swords/Greatsword.fbx" +dest_files=["res://.godot/imported/Greatsword.fbx-348d9bff6b7f111ed70f638c3d587e42.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Swords/Messer.fbx b/assets/Objects/Low Poly Medieval Weapons/Swords/Messer.fbx new file mode 100644 index 0000000..809d170 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Swords/Messer.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Swords/Messer.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Swords/Messer.fbx.import new file mode 100644 index 0000000..28a8573 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Swords/Messer.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bclcyq2ijqxtk" +path="res://.godot/imported/Messer.fbx-3cbec5d832caaa0cdabc5d3720aba0ee.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Swords/Messer.fbx" +dest_files=["res://.godot/imported/Messer.fbx-3cbec5d832caaa0cdabc5d3720aba0ee.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Swords/Sword.fbx b/assets/Objects/Low Poly Medieval Weapons/Swords/Sword.fbx new file mode 100644 index 0000000..6f16339 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Swords/Sword.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Swords/Sword.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Swords/Sword.fbx.import new file mode 100644 index 0000000..061437e --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Swords/Sword.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://cugd1g5h4o813" +path="res://.godot/imported/Sword.fbx-e5aff34119cb09324046082d9b49640b.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Swords/Sword.fbx" +dest_files=["res://.godot/imported/Sword.fbx-e5aff34119cb09324046082d9b49640b.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Swords/Two-Handed Sword.fbx b/assets/Objects/Low Poly Medieval Weapons/Swords/Two-Handed Sword.fbx new file mode 100644 index 0000000..3c1b6e4 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Swords/Two-Handed Sword.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Swords/Two-Handed Sword.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Swords/Two-Handed Sword.fbx.import new file mode 100644 index 0000000..a2c8b28 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Swords/Two-Handed Sword.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://ck4r6qj65m7oy" +path="res://.godot/imported/Two-Handed Sword.fbx-0283a1d161d71ea4db1e32200b27f35e.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Swords/Two-Handed Sword.fbx" +dest_files=["res://.godot/imported/Two-Handed Sword.fbx-0283a1d161d71ea4db1e32200b27f35e.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/Low Poly Medieval Weapons/Swords/War Cleaver.fbx b/assets/Objects/Low Poly Medieval Weapons/Swords/War Cleaver.fbx new file mode 100644 index 0000000..3c1d543 Binary files /dev/null and b/assets/Objects/Low Poly Medieval Weapons/Swords/War Cleaver.fbx differ diff --git a/assets/Objects/Low Poly Medieval Weapons/Swords/War Cleaver.fbx.import b/assets/Objects/Low Poly Medieval Weapons/Swords/War Cleaver.fbx.import new file mode 100644 index 0000000..1ca49e6 --- /dev/null +++ b/assets/Objects/Low Poly Medieval Weapons/Swords/War Cleaver.fbx.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://c7gp78ht7q3vn" +path="res://.godot/imported/War Cleaver.fbx-851856e1943845e59a51d02526b82bba.scn" + +[deps] + +source_file="res://assets/Objects/Low Poly Medieval Weapons/Swords/War Cleaver.fbx" +dest_files=["res://.godot/imported/War Cleaver.fbx-851856e1943845e59a51d02526b82bba.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 +fbx/naming_version=2 diff --git a/assets/Objects/shield.obj.import b/assets/Objects/shield.obj.import new file mode 100644 index 0000000..14487a5 --- /dev/null +++ b/assets/Objects/shield.obj.import @@ -0,0 +1,25 @@ +[remap] + +importer="wavefront_obj" +importer_version=1 +type="Mesh" +uid="uid://rsoymmi6yqhp" +path="res://.godot/imported/shield.obj-67543cd58819ef1b3391d4852726e07d.mesh" + +[deps] + +files=["res://.godot/imported/shield.obj-67543cd58819ef1b3391d4852726e07d.mesh"] + +source_file="res://assets/Objects/shield.obj" +dest_files=["res://.godot/imported/shield.obj-67543cd58819ef1b3391d4852726e07d.mesh", "res://.godot/imported/shield.obj-67543cd58819ef1b3391d4852726e07d.mesh"] + +[params] + +generate_tangents=true +generate_lods=true +generate_shadow_mesh=true +generate_lightmap_uv2=false +generate_lightmap_uv2_texel_size=0.2 +scale_mesh=Vector3(1, 1, 1) +offset_mesh=Vector3(0, 0, 0) +force_disable_mesh_compression=false diff --git a/assets/Objects/swordlowpoly.obj.import b/assets/Objects/swordlowpoly.obj.import new file mode 100644 index 0000000..eb1c772 --- /dev/null +++ b/assets/Objects/swordlowpoly.obj.import @@ -0,0 +1,25 @@ +[remap] + +importer="wavefront_obj" +importer_version=1 +type="Mesh" +uid="uid://cc1kxfbkvpo2d" +path="res://.godot/imported/swordlowpoly.obj-91d256700711d5dd0a2e34f3b18f3127.mesh" + +[deps] + +files=["res://.godot/imported/swordlowpoly.obj-91d256700711d5dd0a2e34f3b18f3127.mesh"] + +source_file="res://assets/Objects/swordlowpoly.obj" +dest_files=["res://.godot/imported/swordlowpoly.obj-91d256700711d5dd0a2e34f3b18f3127.mesh", "res://.godot/imported/swordlowpoly.obj-91d256700711d5dd0a2e34f3b18f3127.mesh"] + +[params] + +generate_tangents=true +generate_lods=true +generate_shadow_mesh=true +generate_lightmap_uv2=false +generate_lightmap_uv2_texel_size=0.2 +scale_mesh=Vector3(1, 1, 1) +offset_mesh=Vector3(0, 0, 0) +force_disable_mesh_compression=false diff --git a/level/resources/weapon_shield.tres b/level/resources/weapon_shield.tres new file mode 100644 index 0000000..447546b --- /dev/null +++ b/level/resources/weapon_shield.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" script_class="WeaponData" load_steps=3 format=3] + +[ext_resource type="Script" path="res://level/scripts/weapon_data.gd" id="1"] +[ext_resource type="PackedScene" path="res://level/scenes/weapons/shield_mesh.tscn" id="2"] + +[resource] +script = ExtResource("1") +weapon_name = "Wooden Shield" +description = "A sturdy wooden shield. Can be used to bash enemies." +damage = 8.0 +attack_range = 2.5 +attack_cooldown = 0.8 +attack_animation = "Attack1" +mesh_scene = ExtResource("2") +pickup_radius = 1.5 +weight = 3.0 diff --git a/level/resources/weapon_sword.tres b/level/resources/weapon_sword.tres new file mode 100644 index 0000000..17dad51 --- /dev/null +++ b/level/resources/weapon_sword.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" script_class="WeaponData" load_steps=3 format=3] + +[ext_resource type="Script" path="res://level/scripts/weapon_data.gd" id="1"] +[ext_resource type="PackedScene" path="res://level/scenes/weapons/sword_mesh.tscn" id="2"] + +[resource] +script = ExtResource("1") +weapon_name = "Iron Sword" +description = "A simple iron sword. Good for close combat." +damage = 15.0 +attack_range = 3.5 +attack_cooldown = 0.6 +attack_animation = "Attack1" +mesh_scene = ExtResource("2") +pickup_radius = 1.5 +weight = 2.0 diff --git a/level/scenes/BaseWeaponScene.tscn b/level/scenes/BaseWeaponScene.tscn new file mode 100644 index 0000000..b19a5f0 --- /dev/null +++ b/level/scenes/BaseWeaponScene.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=3 uid="uid://c76hql634gf5"] + +[ext_resource type="ArrayMesh" uid="uid://cc1kxfbkvpo2d" path="res://assets/Objects/swordlowpoly.obj" id="1_8p8s3"] + +[node name="BaseWeaponScene" type="Node3D"] + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5366993, -2.9846973, -3.4840996) +mesh = ExtResource("1_8p8s3") diff --git a/level/scenes/player.tscn b/level/scenes/player.tscn index 7b9e07e..a7019a1 100644 --- a/level/scenes/player.tscn +++ b/level/scenes/player.tscn @@ -4780,12 +4780,13 @@ properties/3/path = NodePath("3DGodotRobot:rotation") properties/3/spawn = true properties/3/replication_mode = 1 -[node name="Player" type="CharacterBody3D" node_paths=PackedStringArray("_body", "_spring_arm_offset")] +[node name="Player" type="CharacterBody3D" node_paths=PackedStringArray("_body", "_spring_arm_offset", "_weapon_attachment")] transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0) collision_mask = 3 script = ExtResource("1_tdh26") _body = NodePath("3DGodotRobot") _spring_arm_offset = NodePath("SpringArmOffset") +_weapon_attachment = NodePath("3DGodotRobot/RobotArmature/Skeleton3D/WeaponPoint") blue_texture = ExtResource("4_max2b") yellow_texture = ExtResource("3_l3dv8") green_texture = ExtResource("4_74ree") @@ -5006,6 +5007,11 @@ mesh = SubResource("ArrayMesh_0hcp6") skin = SubResource("Skin_gooby") surface_material_override/0 = SubResource("StandardMaterial3D_1ln88") +[node name="WeaponPoint" type="BoneAttachment3D" parent="3DGodotRobot/RobotArmature/Skeleton3D"] +transform = Transform3D(-0.95200163, -0.30448738, -0.031308167, 0.30294672, -0.9519023, 0.045883153, -0.043773204, 0.03419612, 0.99845606, -0.64481956, 1.0056509, 0.02542795) +bone_name = "hand.R" +bone_idx = 16 + [node name="AnimationPlayer" type="AnimationPlayer" parent="3DGodotRobot"] libraries = { &"": SubResource("AnimationLibrary_f1v7x") diff --git a/level/scenes/weapons/shield_mesh.tscn b/level/scenes/weapons/shield_mesh.tscn new file mode 100644 index 0000000..af505e4 --- /dev/null +++ b/level/scenes/weapons/shield_mesh.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=3 uid="uid://rbvk4mg40ceg"] + +[ext_resource type="ArrayMesh" uid="uid://rsoymmi6yqhp" path="res://assets/Objects/shield.obj" id="1"] + +[node name="ShieldMesh" type="Node3D"] + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.28306955, -0.70267653) +mesh = ExtResource("1") diff --git a/level/scenes/weapons/sword_mesh.tscn b/level/scenes/weapons/sword_mesh.tscn new file mode 100644 index 0000000..b668832 --- /dev/null +++ b/level/scenes/weapons/sword_mesh.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=3 uid="uid://dyjfaq654xne3"] + +[ext_resource type="ArrayMesh" uid="uid://dmottq5u3my52" path="res://assets/characters/Lobster/10029_Lobster_v1_iterations-2.obj" id="1_olchg"] + +[node name="SwordMesh" type="Node3D"] + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.3645025, -0.7985528, -1.0164871) +mesh = ExtResource("1_olchg") diff --git a/level/scenes/weapons/world_weapon_shield.tscn b/level/scenes/weapons/world_weapon_shield.tscn new file mode 100644 index 0000000..2755d59 --- /dev/null +++ b/level/scenes/weapons/world_weapon_shield.tscn @@ -0,0 +1,17 @@ +[gd_scene load_steps=4 format=3] + +[ext_resource type="Script" path="res://level/scripts/world_weapon.gd" id="1"] +[ext_resource type="Resource" path="res://level/resources/weapon_shield.tres" id="2"] + +[sub_resource type="BoxShape3D" id="1"] +size = Vector3(0.8, 1.0, 0.2) + +[node name="WorldWeaponShield" type="RigidBody3D"] +collision_layer = 4 +collision_mask = 2 +mass = 3.0 +script = ExtResource("1") +weapon_data = ExtResource("2") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +shape = SubResource("1") diff --git a/level/scenes/weapons/world_weapon_sword.tscn b/level/scenes/weapons/world_weapon_sword.tscn new file mode 100644 index 0000000..ac15ed0 --- /dev/null +++ b/level/scenes/weapons/world_weapon_sword.tscn @@ -0,0 +1,17 @@ +[gd_scene load_steps=4 format=3] + +[ext_resource type="Script" path="res://level/scripts/world_weapon.gd" id="1"] +[ext_resource type="Resource" path="res://level/resources/weapon_sword.tres" id="2"] + +[sub_resource type="BoxShape3D" id="1"] +size = Vector3(0.3, 0.3, 1.2) + +[node name="WorldWeaponSword" type="RigidBody3D"] +collision_layer = 4 +collision_mask = 2 +mass = 2.0 +script = ExtResource("1") +weapon_data = ExtResource("2") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +shape = SubResource("1") diff --git a/level/scripts/base_weapon.gd b/level/scripts/base_weapon.gd new file mode 100644 index 0000000..1f839f8 --- /dev/null +++ b/level/scripts/base_weapon.gd @@ -0,0 +1,105 @@ +extends Node3D +class_name BaseWeapon + +## Base class for equipped weapons +## Attached to player's hand via BoneAttachment3D +## Provides common weapon functionality and stats + +signal attack_performed() + +@export var weapon_data: WeaponData + +# Runtime references +var owner_character: Character = null +var _mesh_instance: Node3D = null +var _attack_timer: float = 0.0 + +func _ready(): + if weapon_data and weapon_data.mesh_scene: + _spawn_mesh() + +func _process(delta): + if _attack_timer > 0: + _attack_timer -= delta + +## Spawn the visual mesh for this weapon +func _spawn_mesh(): + # Remove old mesh if exists + if _mesh_instance: + _mesh_instance.queue_free() + + # Instantiate new mesh + _mesh_instance = weapon_data.mesh_scene.instantiate() + add_child(_mesh_instance) + +## Perform an attack with this weapon +## Called by the character who owns this weapon +func perform_attack() -> bool: + if not weapon_data or not owner_character: + return false + + # Check cooldown + if _attack_timer > 0: + return false + + _attack_timer = weapon_data.attack_cooldown + + # Play attack animation on owner + if owner_character._body: + owner_character._body.play_attack() + + # Find targets in range + _find_and_damage_targets() + + attack_performed.emit() + return true + +## Find targets in range and apply damage +func _find_and_damage_targets(): + if not owner_character: + return + + # Check if the owner character has authority (not this node) + if not owner_character.is_multiplayer_authority(): + return + + var space_state = get_world_3d().direct_space_state + var query = PhysicsShapeQueryParameters3D.new() + var sphere = SphereShape3D.new() + sphere.radius = weapon_data.attack_range + query.shape = sphere + query.transform = global_transform + query.collision_mask = 1 # Player layer + + var results = space_state.intersect_shape(query) + + for result in results: + var hit_body = result["collider"] + if hit_body != owner_character and hit_body is BaseUnit: + var attacker_id = multiplayer.get_unique_id() + + # If we're the server, apply damage directly + if multiplayer.is_server(): + owner_character._server_apply_damage(hit_body.name, weapon_data.damage, attacker_id) + else: + # Otherwise, request server to apply damage + owner_character.rpc_id(1, "_server_apply_damage", hit_body.name, weapon_data.damage, attacker_id) + break # Only hit one target per attack + +## Check if weapon can attack +func can_attack() -> bool: + return _attack_timer <= 0 + +## Set the character who owns this weapon +func set_owner_character(character: Character): + owner_character = character + +## Get weapon stats +func get_damage() -> float: + return weapon_data.damage if weapon_data else 0.0 + +func get_range() -> float: + return weapon_data.attack_range if weapon_data else 0.0 + +func get_cooldown() -> float: + return weapon_data.attack_cooldown if weapon_data else 0.0 diff --git a/level/scripts/base_weapon.gd.uid b/level/scripts/base_weapon.gd.uid new file mode 100644 index 0000000..f8b3886 --- /dev/null +++ b/level/scripts/base_weapon.gd.uid @@ -0,0 +1 @@ +uid://bknbrlgutvk6h diff --git a/level/scripts/level.gd b/level/scripts/level.gd index 74b9e04..1a44cb1 100644 --- a/level/scripts/level.gd +++ b/level/scripts/level.gd @@ -4,10 +4,14 @@ extends Node3D @onready var nick_input: LineEdit = $Menu/MainContainer/MainMenu/Option1/NickInput @onready var address_input: LineEdit = $Menu/MainContainer/MainMenu/Option3/AddressInput @onready var players_container: Node3D = $PlayersContainer +@onready var weapons_container: Node3D = null # Will be created if doesn't exist @onready var menu: Control = $Menu @onready var main_menu: VBoxContainer = $Menu/MainContainer/MainMenu @export var player_scene: PackedScene +# Weapon spawning counter (server-side only) +var _weapon_spawn_counter: int = 0 + # multiplayer chat @onready var message: LineEdit = $MultiplayerChat/VBoxContainer/HBoxContainer/Message @onready var send: Button = $MultiplayerChat/VBoxContainer/HBoxContainer/Send @@ -24,12 +28,49 @@ func _ready(): # Add quick-fill preset buttons _create_preset_buttons() + # Create or find weapons container + if has_node("WeaponsContainer"): + weapons_container = get_node("WeaponsContainer") + else: + weapons_container = Node3D.new() + weapons_container.name = "WeaponsContainer" + add_child(weapons_container) + print("Created WeaponsContainer") + if not multiplayer.is_server(): return Network.connect("player_connected", Callable(self, "_on_player_connected")) multiplayer.peer_disconnected.connect(_remove_player) + # Spawn initial weapons when server starts + _spawn_initial_weapons() + +func _spawn_initial_weapons(): + if not multiplayer.is_server(): + return + + # Wait a frame for everything to be ready + await get_tree().process_frame + + # Spawn a sword + _weapon_spawn_counter += 1 + rpc("spawn_world_weapon", + "res://level/resources/weapon_sword.tres", + Vector3(5, 1, 0), + Vector3.ZERO, + _weapon_spawn_counter + ) + + # Spawn a shield + _weapon_spawn_counter += 1 + rpc("spawn_world_weapon", + "res://level/resources/weapon_shield.tres", + Vector3(-5, 1, 0), + Vector3.ZERO, + _weapon_spawn_counter + ) + func _on_player_connected(peer_id, player_info): # for id in Network.players.keys(): # var player_data = Network.players[id] @@ -162,3 +203,33 @@ func _on_jemz_preset(): nick_input.text = "Jemz" skin_input.text = "Red" address_input.text = "127.0.0.1" + +# ---------- WEAPON SPAWNING ---------- +## Spawn a weapon in the world (called from server, syncs to all clients) +@rpc("authority", "call_local", "reliable") +func spawn_world_weapon(weapon_data_path: String, spawn_position: Vector3, initial_velocity: Vector3, weapon_id: int): + if not weapons_container: + push_error("WeaponsContainer not found in level!") + return + + # Load the weapon data resource + var weapon_data = load(weapon_data_path) as WeaponData + if not weapon_data: + push_error("Failed to load weapon data from: " + weapon_data_path) + return + + # Create WorldWeapon instance + var world_weapon = WorldWeapon.new() + world_weapon.weapon_data = weapon_data + world_weapon.name = "WorldWeapon_" + str(weapon_id) # Deterministic name + world_weapon.position = spawn_position + + # Add to weapons container + weapons_container.add_child(world_weapon, true) + + print("Spawned weapon: ", world_weapon.name, " at ", spawn_position) + + # Apply velocity after physics is ready + if initial_velocity != Vector3.ZERO: + await get_tree().process_frame + world_weapon.linear_velocity = initial_velocity diff --git a/level/scripts/player.gd b/level/scripts/player.gd index f4b41ec..5d5e9a4 100644 --- a/level/scripts/player.gd +++ b/level/scripts/player.gd @@ -13,6 +13,7 @@ enum SkinColor { BLUE, YELLOW, GREEN, RED } @export_category("Objects") @export var _body: Node3D = null @export var _spring_arm_offset: Node3D = null +@export var _weapon_attachment: BoneAttachment3D = null # WeaponPoint bone attachment @export_category("Skin Colors") @export var blue_texture : CompressedTexture2D @@ -28,6 +29,10 @@ enum SkinColor { BLUE, YELLOW, GREEN, RED } var _current_speed: float var gravity = ProjectSettings.get_setting("physics/3d/default_gravity") +# Weapon system +var equipped_weapon: BaseWeapon = null +var _nearby_weapons: Array[WorldWeapon] = [] + # Attack system @export var attack_damage: float = 10.0 @export var attack_range: float = 3.0 @@ -67,6 +72,18 @@ func _ready(): if is_multiplayer_authority(): _create_health_ui() + # Setup weapon pickup detection area + _setup_weapon_pickup_area() + + # Auto-find weapon attachment if not set + if _weapon_attachment == null: + var bone_attach = get_node_or_null("3DGodotRobot/RobotArmature/Skeleton3D/BoneAttachment3D") + if bone_attach: + _weapon_attachment = bone_attach + print("Auto-found weapon attachment point") + else: + push_warning("Could not find BoneAttachment3D for weapons!") + func _physics_process(delta): # Check if multiplayer is ready if multiplayer.multiplayer_peer == null: @@ -122,9 +139,23 @@ func _process(delta): _perform_dash() # Handle attack input - if Input.is_action_just_pressed("attack") and _attack_timer <= 0 and not is_dead and not _is_dashing: + if Input.is_action_just_pressed("attack") and not is_dead and not _is_dashing: _perform_attack() + # Handle weapon pickup/drop + if Input.is_action_just_pressed("pickup") and not is_dead: + print("Pickup pressed! Equipped: ", equipped_weapon != null, " Nearby: ", _nearby_weapons.size()) + if equipped_weapon: + # Tell server to drop (server will handle spawning) + if multiplayer.is_server(): + drop_weapon() + else: + rpc_id(1, "drop_weapon") # Only send to server + elif _nearby_weapons.size() > 0: + _pickup_nearest_weapon() + else: + print("No weapons nearby to pick up") + func freeze(): velocity.x = 0 velocity.z = 0 @@ -208,10 +239,19 @@ func _perform_attack(): if not is_multiplayer_authority() or is_dead: return + # Use equipped weapon if available + if equipped_weapon and equipped_weapon.can_attack(): + equipped_weapon.perform_attack() + return + + # Fallback to default unarmed attack # Don't attack if already attacking if _body and _body.animation_player and _body.animation_player.current_animation == "Attack1": return + if _attack_timer > 0: + return + _attack_timer = attack_cooldown # Play attack animation once @@ -399,3 +439,154 @@ func _perform_dash(): func _reset_dash_rotation(rotation_value: float): if _body: _body.rotation.x = rotation_value + +## Weapon System +func _setup_weapon_pickup_area(): + # Create an Area3D to detect nearby weapons + var pickup_area = Area3D.new() + pickup_area.name = "WeaponPickupArea" + pickup_area.collision_layer = 0 + pickup_area.collision_mask = 4 # Will detect WorldWeapons (we'll use layer 3) + add_child(pickup_area) + + # Create collision shape for pickup range + var pickup_collision = CollisionShape3D.new() + var sphere = SphereShape3D.new() + sphere.radius = 2.0 # Pickup range + pickup_collision.shape = sphere + pickup_area.add_child(pickup_collision) + + # Connect signals to track nearby weapons + pickup_area.area_entered.connect(_on_weapon_area_entered) + pickup_area.area_exited.connect(_on_weapon_area_exited) + +func _on_weapon_area_entered(area: Area3D): + # Check if the area belongs to a WorldWeapon + var weapon = area.get_parent() + if weapon is WorldWeapon and weapon not in _nearby_weapons: + _nearby_weapons.append(weapon) + if is_multiplayer_authority(): + print("Weapon nearby: ", weapon.weapon_data.weapon_name if weapon.weapon_data else "Unknown") + +func _on_weapon_area_exited(area: Area3D): + # Remove weapon from nearby list + var weapon = area.get_parent() + if weapon is WorldWeapon and weapon in _nearby_weapons: + _nearby_weapons.erase(weapon) + if is_multiplayer_authority(): + print("Weapon left range: ", weapon.weapon_data.weapon_name if weapon.weapon_data else "Unknown") + +## Equip a weapon from WorldWeapon data (receives resource path) +@rpc("any_peer", "call_local", "reliable") +func equip_weapon_from_world(weapon_data_path: String): + var data = load(weapon_data_path) as WeaponData + if data: + equip_weapon(data) + else: + push_error("Failed to load weapon data from: " + weapon_data_path) + +## Equip a weapon with given data +func equip_weapon(data: WeaponData): + # Unequip current weapon first + if equipped_weapon: + unequip_weapon() + + if not _weapon_attachment: + push_error("No weapon attachment point found!") + return + + # Create new weapon instance + var weapon = BaseWeapon.new() + weapon.weapon_data = data + weapon.name = "EquippedWeapon" + weapon.set_owner_character(self) + + # Attach to bone + _weapon_attachment.add_child(weapon) + equipped_weapon = weapon + + if is_multiplayer_authority(): + print("Equipped: ", data.weapon_name) + +## Unequip current weapon (local only) +func unequip_weapon(): + if equipped_weapon: + equipped_weapon.queue_free() + equipped_weapon = null + +## Sync unequip across all clients +@rpc("any_peer", "call_local", "reliable") +func _unequip_weapon_sync(): + unequip_weapon() + +## Drop currently equipped weapon +@rpc("any_peer", "reliable") +func drop_weapon(): + print("drop_weapon called on peer ", multiplayer.get_unique_id(), " is_server: ", multiplayer.is_server(), " has weapon: ", equipped_weapon != null) + + if not equipped_weapon: + print("No weapon equipped, cannot drop") + return + + # Only server spawns the world weapon + if multiplayer.is_server(): + print("Server spawning dropped weapon") + _spawn_world_weapon(equipped_weapon.weapon_data) + # Tell all clients to unequip + rpc("_unequip_weapon_sync") + + # Unequip locally + unequip_weapon() + + if is_multiplayer_authority(): + print("Dropped weapon") + +## Spawn a weapon in the world (server only) +func _spawn_world_weapon(data: WeaponData): + if not multiplayer.is_server(): + return + + # Get the resource path + var resource_path = data.resource_path + if resource_path == "": + push_error("WeaponData has no resource path! Make sure to save it as a .tres file") + return + + # Position in front of player + var spawn_pos = global_position + (-transform.basis.z * 2.0) + spawn_pos.y += 1.0 # Spawn at chest height + + # Calculate forward velocity + var velocity = -transform.basis.z * 3.0 + + # Tell level to spawn weapon on all clients + var level = get_tree().get_current_scene() + if level and level.has_method("spawn_world_weapon"): + # Increment the level's weapon counter + level._weapon_spawn_counter += 1 + level.rpc("spawn_world_weapon", resource_path, spawn_pos, velocity, level._weapon_spawn_counter) + +## Pick up nearest weapon +func _pickup_nearest_weapon(): + if _nearby_weapons.size() == 0: + return + + # Find closest weapon + var closest_weapon: WorldWeapon = null + var closest_distance: float = INF + + for weapon in _nearby_weapons: + if not is_instance_valid(weapon): + continue + + var distance = global_position.distance_to(weapon.global_position) + if distance < closest_distance: + closest_distance = distance + closest_weapon = weapon + + if closest_weapon: + # Request server to pickup (server validates) + if multiplayer.is_server(): + closest_weapon.try_pickup(multiplayer.get_unique_id()) + else: + closest_weapon.rpc_id(1, "try_pickup", multiplayer.get_unique_id()) diff --git a/level/scripts/weapon_data.gd b/level/scripts/weapon_data.gd new file mode 100644 index 0000000..a299ca7 --- /dev/null +++ b/level/scripts/weapon_data.gd @@ -0,0 +1,23 @@ +extends Resource +class_name WeaponData + +## Resource that stores weapon statistics and properties +## Can be reused for both equipped weapons and world pickups + +@export_category("Weapon Info") +@export var weapon_name: String = "Weapon" +@export_multiline var description: String = "" + +@export_category("Combat Stats") +@export var damage: float = 10.0 +@export var attack_range: float = 3.0 +@export var attack_cooldown: float = 0.5 +@export var attack_animation: String = "Attack1" # Animation to play when attacking + +@export_category("Visual") +@export var mesh_scene: PackedScene # The 3D mesh for this weapon +@export var icon: Texture2D # Optional icon for UI + +@export_category("Physics (for world pickups)") +@export var pickup_radius: float = 1.5 # How close player needs to be to pick up +@export var weight: float = 1.0 # Mass when dropped in world diff --git a/level/scripts/weapon_data.gd.uid b/level/scripts/weapon_data.gd.uid new file mode 100644 index 0000000..d5c5917 --- /dev/null +++ b/level/scripts/weapon_data.gd.uid @@ -0,0 +1 @@ +uid://d2homvlmrg6xs diff --git a/level/scripts/world_weapon.gd b/level/scripts/world_weapon.gd new file mode 100644 index 0000000..5c52dd0 --- /dev/null +++ b/level/scripts/world_weapon.gd @@ -0,0 +1,139 @@ +extends RigidBody3D +class_name WorldWeapon + +## Weapon as a physics object in the world +## Can be picked up by players +## Spawned when a weapon is dropped or placed in the level + +@export var weapon_data: WeaponData + +var _mesh_instance: Node3D = null +var _collision_shape: CollisionShape3D = null +var _pickup_area: Area3D = null +var _is_being_picked_up: bool = false + +func _ready(): + # Set collision layer to "weapon" (layer 3 = bit 4) + collision_layer = 4 + collision_mask = 2 # Collide with world + + # Set up physics + if weapon_data: + mass = weapon_data.weight + + # Spawn mesh + if weapon_data and weapon_data.mesh_scene: + _spawn_mesh() + + # Create collision shape if not exists + _setup_collision() + + # Create pickup area + _setup_pickup_area() + + # Only server manages pickup logic + if multiplayer.is_server(): + _pickup_area.body_entered.connect(_on_body_entered_pickup_area) + +func _spawn_mesh(): + # Remove old mesh if exists + if _mesh_instance: + _mesh_instance.queue_free() + + # Instantiate mesh + _mesh_instance = weapon_data.mesh_scene.instantiate() + add_child(_mesh_instance) + +func _setup_collision(): + # Check if we already have a collision shape + for child in get_children(): + if child is CollisionShape3D: + _collision_shape = child + return + + # Create a basic box collision if none exists + _collision_shape = CollisionShape3D.new() + var box_shape = BoxShape3D.new() + box_shape.size = Vector3(0.5, 0.5, 1.5) # Approximate weapon size + _collision_shape.shape = box_shape + add_child(_collision_shape) + +func _setup_pickup_area(): + # Create Area3D for pickup detection + _pickup_area = Area3D.new() + _pickup_area.name = "PickupArea" + _pickup_area.collision_layer = 4 # Layer 3 (weapon layer) so player can detect it + _pickup_area.collision_mask = 1 # Detect players + add_child(_pickup_area) + + # Create sphere collision for pickup range + var pickup_collision = CollisionShape3D.new() + var sphere = SphereShape3D.new() + sphere.radius = weapon_data.pickup_radius if weapon_data else 1.5 + pickup_collision.shape = sphere + _pickup_area.add_child(pickup_collision) + +func _on_body_entered_pickup_area(body: Node3D): + if _is_being_picked_up: + return + + # Check if it's a player trying to pick up + if body is Character and body.is_multiplayer_authority(): + # Let the player handle the pickup + # The player will call try_pickup() via RPC + pass + +## Called by player to attempt pickup +@rpc("any_peer", "reliable") +func try_pickup(player_id: int): + # Only server validates pickup + if not multiplayer.is_server(): + return + + if _is_being_picked_up: + return + + # Find the player + var level = get_tree().get_current_scene() + if not level or not level.has_node("PlayersContainer"): + return + + var players_container = level.get_node("PlayersContainer") + if not players_container.has_node(str(player_id)): + return + + var player = players_container.get_node(str(player_id)) + if not player is Character: + return + + # Check distance + var distance = global_position.distance_to(player.global_position) + if distance > (weapon_data.pickup_radius if weapon_data else 1.5): + return + + _is_being_picked_up = true + + # Get the resource path + var resource_path = weapon_data.resource_path + if resource_path == "": + push_error("WeaponData has no resource path!") + return + + # Tell the player to equip this weapon (on all clients) + player.rpc("equip_weapon_from_world", resource_path) + + # Remove this world weapon from all clients + rpc("_remove_from_all_clients") + +## Remove weapon from all clients +@rpc("any_peer", "call_local", "reliable") +func _remove_from_all_clients(): + queue_free() + +## Set weapon data and refresh +func set_weapon_data(data: WeaponData): + weapon_data = data + if is_inside_tree(): + _spawn_mesh() + if weapon_data: + mass = weapon_data.weight diff --git a/level/scripts/world_weapon.gd.uid b/level/scripts/world_weapon.gd.uid new file mode 100644 index 0000000..3ee855f --- /dev/null +++ b/level/scripts/world_weapon.gd.uid @@ -0,0 +1 @@ +uid://ccnnd0y4jqiot diff --git a/project.godot b/project.godot index 6e2a3bb..49a8a8f 100644 --- a/project.godot +++ b/project.godot @@ -78,8 +78,14 @@ dash={ "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":70,"key_label":0,"unicode":102,"location":0,"echo":false,"script":null) ] } +pickup={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null) +] +} [layer_names] 3d_physics/layer_1="player" 3d_physics/layer_2="world" +3d_physics/layer_3="weapon"