From 9d3621dd2ce9a8d96746e4e444e13cf7a9140b25 Mon Sep 17 00:00:00 2001 From: Zenny Date: Wed, 26 Mar 2025 23:13:01 -0700 Subject: [PATCH] Mystery item implementation --- .../states/InGameAudioLogic.State.Enabled.cs | 2 +- .../Game/GameRepo.cs | 12 +- .../Game/IGameEventRepo.cs | 3 - .../Item/EquipableItem.cs | 2 - .../Item/IInventory.cs | 2 + .../Item/InventoryItem.cs | 2 + .../Item/Tags/ItemTag.cs | 3 +- .../Player/IPlayer.cs | 6 +- .../src/enemy/NavigationAgentClient.tscn | 3 +- .../enemy_types/01. sproingy/Sproingy.tscn | 23 +- .../src/enemy/state/EnemyLogic.g.puml | 6 +- Zennysoft.Game.Ma/src/game/Game.cs | 62 ++++- Zennysoft.Game.Ma/src/game/GameEventDepot.cs | 3 - Zennysoft.Game.Ma/src/game/IGame.cs | 3 +- .../src/inventory_menu/InventoryMenu.cs | 9 +- Zennysoft.Game.Ma/src/items/EffectService.cs | 27 +- Zennysoft.Game.Ma/src/items/Inventory.cs | 9 + Zennysoft.Game.Ma/src/items/ItemDatabase.cs | 46 ++-- .../accessory/resources/MysteryAccessory.tres | 25 ++ .../src/items/accessory/textures/MASK 04.png | Bin 0 -> 8589 bytes .../accessory/textures/MASK 04.png.import | 34 +++ Zennysoft.Game.Ma/src/items/armor/Armor.cs | 7 +- Zennysoft.Game.Ma/src/items/armor/Armor.tscn | 3 - .../items/armor/resources/MysteryArmor.tres | 25 ++ .../src/items/armor/textures/MYSTERY.png | Bin 0 -> 9560 bytes .../items/armor/textures/MYSTERY.png.import | 34 +++ .../src/items/consumable/ConsumableItem.cs | 2 + .../resources/MysteryConsumable.tres | 21 ++ .../src/items/consumable/textures/Mystery.png | Bin 0 -> 4629 bytes .../consumable/textures/Mystery.png.import | 34 +++ .../src/items/effect/EffectItem.cs | 2 + .../items/effect/resources/MysteryTag.tres | 21 ++ .../items/effect/textures/mystery seal.png | Bin 0 -> 4373 bytes .../effect/textures/mystery seal.png.import | 34 +++ .../src/items/restorative/Restorative.cs | 12 - .../src/items/restorative/Restorative.tscn | 2 - .../src/items/throwable/ThrowableItem.cs | 2 + .../src/items/throwable/ThrowableItem.tscn | 4 +- .../src/items/throwable/ThrowableItemStats.cs | 6 + .../throwable/resources/GeomanticDice.tres | 17 +- .../resources/Gospel of Dimension.tres | 4 + .../throwable/resources/GospelOfEscape.tres | 4 + .../throwable/resources/MysteryDice.tres | 24 ++ .../items/throwable/textures/MysteryDice.png | Bin 0 -> 12078 bytes .../throwable/textures/MysteryDice.png.import | 34 +++ Zennysoft.Game.Ma/src/items/weapons/Weapon.cs | 9 +- .../src/items/weapons/Weapon.tscn | 3 +- .../items/weapons/resources/MysteryRod.tres | 25 ++ .../items/weapons/textures/mystery rod.png | Bin 0 -> 9652 bytes .../weapons/textures/mystery rod.png.import | 34 +++ Zennysoft.Game.Ma/src/map/Map.tscn | 2 +- .../src/map/dungeon/code/MonsterRoom.cs | 8 +- .../src/map/dungeon/floors/Floor00.tscn | 51 ++-- .../src/map/dungeon/floors/Floor01.tscn | 236 +++++++++--------- .../src/map/dungeon/floors/Floor02.tscn | 189 ++++++++------ .../rooms/Set A/04. Antechamber B.tscn | 11 +- .../dungeon/rooms/Set A/18. Corridor A.tscn | 6 +- Zennysoft.Game.Ma/src/player/Player.cs | 21 +- 58 files changed, 860 insertions(+), 309 deletions(-) create mode 100644 Zennysoft.Game.Ma/src/items/accessory/resources/MysteryAccessory.tres create mode 100644 Zennysoft.Game.Ma/src/items/accessory/textures/MASK 04.png create mode 100644 Zennysoft.Game.Ma/src/items/accessory/textures/MASK 04.png.import create mode 100644 Zennysoft.Game.Ma/src/items/armor/resources/MysteryArmor.tres create mode 100644 Zennysoft.Game.Ma/src/items/armor/textures/MYSTERY.png create mode 100644 Zennysoft.Game.Ma/src/items/armor/textures/MYSTERY.png.import create mode 100644 Zennysoft.Game.Ma/src/items/consumable/resources/MysteryConsumable.tres create mode 100644 Zennysoft.Game.Ma/src/items/consumable/textures/Mystery.png create mode 100644 Zennysoft.Game.Ma/src/items/consumable/textures/Mystery.png.import create mode 100644 Zennysoft.Game.Ma/src/items/effect/resources/MysteryTag.tres create mode 100644 Zennysoft.Game.Ma/src/items/effect/textures/mystery seal.png create mode 100644 Zennysoft.Game.Ma/src/items/effect/textures/mystery seal.png.import create mode 100644 Zennysoft.Game.Ma/src/items/throwable/resources/MysteryDice.tres create mode 100644 Zennysoft.Game.Ma/src/items/throwable/textures/MysteryDice.png create mode 100644 Zennysoft.Game.Ma/src/items/throwable/textures/MysteryDice.png.import create mode 100644 Zennysoft.Game.Ma/src/items/weapons/resources/MysteryRod.tres create mode 100644 Zennysoft.Game.Ma/src/items/weapons/textures/mystery rod.png create mode 100644 Zennysoft.Game.Ma/src/items/weapons/textures/mystery rod.png.import diff --git a/Zennysoft.Game.Ma.Implementation/Audio/state/states/InGameAudioLogic.State.Enabled.cs b/Zennysoft.Game.Ma.Implementation/Audio/state/states/InGameAudioLogic.State.Enabled.cs index 18ccbcf1..3aa74b19 100644 --- a/Zennysoft.Game.Ma.Implementation/Audio/state/states/InGameAudioLogic.State.Enabled.cs +++ b/Zennysoft.Game.Ma.Implementation/Audio/state/states/InGameAudioLogic.State.Enabled.cs @@ -24,7 +24,7 @@ public partial class InGameAudioLogic gameRepo.UnequippedItem += OnUnequippedItem; gameEventDepot.InventorySorted += OnInventorySorted; gameEventDepot.HealingItemConsumed += OnHealingItemConsumed; - gameEventDepot.RestorativePickedUp += OnRestorativePickedUp; + gameRepo.RestorativePickedUp += OnRestorativePickedUp; gameEventDepot.TeleportEntered += OnTeleportEntered; gameRepo.PlayerAttack += OnPlayerAttack; gameRepo.PlayerAttackedWall += OnPlayerAttackWall; diff --git a/Zennysoft.Game.Ma.Implementation/Game/GameRepo.cs b/Zennysoft.Game.Ma.Implementation/Game/GameRepo.cs index b2640f87..0b64dfcd 100644 --- a/Zennysoft.Game.Ma.Implementation/Game/GameRepo.cs +++ b/Zennysoft.Game.Ma.Implementation/Game/GameRepo.cs @@ -1,5 +1,6 @@ using Chickensoft.Collections; using Godot; +using Zennysoft.Game.Abstractions; namespace Zennysoft.Ma.Adapter; @@ -29,6 +30,8 @@ public interface IGameRepo : IDisposable event Action? UnequippedItem; + event Action? RestorativePickedUp; + void Pause(); void Resume(); @@ -51,6 +54,8 @@ public interface IGameRepo : IDisposable public void OnPlayerAttackedEnemy(); + public void OnRestorativePickedUp(IHealthPack restorative); + public void CloseInventory(); public void GameEnded(); @@ -76,7 +81,7 @@ public class GameRepo : IGameRepo public event Action? PlayerAttackedEnemy; public event Action? EquippedItem; public event Action? UnequippedItem; - + public event Action? RestorativePickedUp; public IAutoProp IsPaused => _isPaused; private readonly AutoProp _isPaused; @@ -146,6 +151,11 @@ public class GameRepo : IGameRepo PlayerAttackedEnemy?.Invoke(); } + public void OnRestorativePickedUp(IHealthPack restorative) + { + RestorativePickedUp?.Invoke(restorative); + } + public void CloseInventory() { CloseInventoryEvent?.Invoke(); diff --git a/Zennysoft.Game.Ma.Implementation/Game/IGameEventRepo.cs b/Zennysoft.Game.Ma.Implementation/Game/IGameEventRepo.cs index c7ef46d8..7f21862e 100644 --- a/Zennysoft.Game.Ma.Implementation/Game/IGameEventRepo.cs +++ b/Zennysoft.Game.Ma.Implementation/Game/IGameEventRepo.cs @@ -30,7 +30,4 @@ public interface IGameEventDepot : IDisposable event Action? HealingItemConsumed; public void OnHealingItemConsumed(InventoryItem item); - - event Action? RestorativePickedUp; - public void OnRestorativePickedUp(IHealthPack restorative); } diff --git a/Zennysoft.Game.Ma.Implementation/Item/EquipableItem.cs b/Zennysoft.Game.Ma.Implementation/Item/EquipableItem.cs index b0c7935d..47c01f1f 100644 --- a/Zennysoft.Game.Ma.Implementation/Item/EquipableItem.cs +++ b/Zennysoft.Game.Ma.Implementation/Item/EquipableItem.cs @@ -6,8 +6,6 @@ namespace Zennysoft.Ma.Adapter; [Meta, Id("equipable_item")] public abstract partial class EquipableItem : InventoryItem { - public abstract ItemTag ItemTag { get; } - [Save("equipable_item_is_equipped")] public bool IsEquipped { get; set; } } diff --git a/Zennysoft.Game.Ma.Implementation/Item/IInventory.cs b/Zennysoft.Game.Ma.Implementation/Item/IInventory.cs index e14ae245..e7ab535f 100644 --- a/Zennysoft.Game.Ma.Implementation/Item/IInventory.cs +++ b/Zennysoft.Game.Ma.Implementation/Item/IInventory.cs @@ -6,6 +6,8 @@ public interface IInventory public bool TryAdd(InventoryItem inventoryItem); + public bool TryInsert(InventoryItem inventoryItem, int index); + public void Remove(InventoryItem inventoryItem); public void Sort(); diff --git a/Zennysoft.Game.Ma.Implementation/Item/InventoryItem.cs b/Zennysoft.Game.Ma.Implementation/Item/InventoryItem.cs index 5a738532..2de45b5f 100644 --- a/Zennysoft.Game.Ma.Implementation/Item/InventoryItem.cs +++ b/Zennysoft.Game.Ma.Implementation/Item/InventoryItem.cs @@ -19,6 +19,8 @@ public abstract partial class InventoryItem : Node3D public abstract double ThrowDamage { get; } [Save("inventory_item_throw_speed")] public abstract float ThrowSpeed { get; } + [Save("inventory_item_tag")] + public abstract ItemTag ItemTag { get; } public abstract Texture2D GetTexture(); } diff --git a/Zennysoft.Game.Ma.Implementation/Item/Tags/ItemTag.cs b/Zennysoft.Game.Ma.Implementation/Item/Tags/ItemTag.cs index 685c83b4..052615bf 100644 --- a/Zennysoft.Game.Ma.Implementation/Item/Tags/ItemTag.cs +++ b/Zennysoft.Game.Ma.Implementation/Item/Tags/ItemTag.cs @@ -3,5 +3,6 @@ public enum ItemTag { None, - BreaksOnChange + BreaksOnChange, + MysteryItem } diff --git a/Zennysoft.Game.Ma.Implementation/Player/IPlayer.cs b/Zennysoft.Game.Ma.Implementation/Player/IPlayer.cs index 0affeaf0..b294ba8e 100644 --- a/Zennysoft.Game.Ma.Implementation/Player/IPlayer.cs +++ b/Zennysoft.Game.Ma.Implementation/Player/IPlayer.cs @@ -48,11 +48,11 @@ public interface IPlayer : IKillable public Basis CurrentBasis { get; } - public IAutoProp EquippedWeapon { get; } + public AutoProp EquippedWeapon { get; } - public IAutoProp EquippedArmor { get; } + public AutoProp EquippedArmor { get; } - public IAutoProp EquippedAccessory { get; } + public AutoProp EquippedAccessory { get; } public void Equip(EquipableItem equipable); diff --git a/Zennysoft.Game.Ma/src/enemy/NavigationAgentClient.tscn b/Zennysoft.Game.Ma/src/enemy/NavigationAgentClient.tscn index 94bf8e58..63901c3b 100644 --- a/Zennysoft.Game.Ma/src/enemy/NavigationAgentClient.tscn +++ b/Zennysoft.Game.Ma/src/enemy/NavigationAgentClient.tscn @@ -7,8 +7,7 @@ script = ExtResource("1_qwonp") [node name="NavAgent" type="NavigationAgent3D" parent="."] unique_name_in_owner = true -path_desired_distance = 2.0 -target_desired_distance = 2.5 +path_max_distance = 3.01 avoidance_enabled = true radius = 1.5 time_horizon_obstacles = 1.0 diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/01. sproingy/Sproingy.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/01. sproingy/Sproingy.tscn index 86392bf8..ed13977c 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/01. sproingy/Sproingy.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/01. sproingy/Sproingy.tscn @@ -1,9 +1,28 @@ -[gd_scene load_steps=7 format=3 uid="uid://bs56ccgosmu47"] +[gd_scene load_steps=9 format=3 uid="uid://bs56ccgosmu47"] [ext_resource type="Script" uid="uid://dssu6tgi8dapq" path="res://src/enemy/enemy_types/01. sproingy/Sproingy.cs" id="1_xsluo"] +[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="2_p4gkk"] [ext_resource type="PackedScene" uid="uid://pbnsngx5jvrh" path="res://src/enemy/NavigationAgentClient.tscn" id="3_ut5m2"] [ext_resource type="PackedScene" uid="uid://bimjnsu52y3xi" path="res://src/enemy/enemy_types/01. sproingy/SproingyModelView.tscn" id="4_o3b7p"] +[sub_resource type="Resource" id="Resource_drfkj"] +script = ExtResource("2_p4gkk") +CurrentHP = 50.0 +MaximumHP = 50 +CurrentAttack = 10 +CurrentDefense = 5 +MaxAttack = 10 +MaxDefense = 5 +ExpFromDefeat = 8 +Luck = 0.05 +_telluricResistance = 0.0 +_aeolicResistance = 0.0 +_hydricResistance = 0.0 +_igneousResistance = 0.0 +_ferrumResistance = 0.0 +DropsSoulGemChance = 0.75 +metadata/_custom_type_script = "uid://dnkmr0eq1sij0" + [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"] radius = 0.106078 height = 1.23076 @@ -23,6 +42,7 @@ axis_lock_linear_y = true axis_lock_angular_x = true axis_lock_angular_z = true script = ExtResource("1_xsluo") +_enemyStatResource = SubResource("Resource_drfkj") [node name="CollisionShape" type="CollisionShape3D" parent="."] unique_name_in_owner = true @@ -61,6 +81,7 @@ collision_mask = 3 [node name="Visual" type="Node3D" parent="."] [node name="EnemyModelView" parent="Visual" instance=ExtResource("4_o3b7p")] +unique_name_in_owner = true [node name="Timers" type="Node" parent="."] diff --git a/Zennysoft.Game.Ma/src/enemy/state/EnemyLogic.g.puml b/Zennysoft.Game.Ma/src/enemy/state/EnemyLogic.g.puml index 68bff15f..33157ae0 100644 --- a/Zennysoft.Game.Ma/src/enemy/state/EnemyLogic.g.puml +++ b/Zennysoft.Game.Ma/src/enemy/state/EnemyLogic.g.puml @@ -1,14 +1,14 @@ @startuml EnemyLogic state "EnemyLogic State" as Zennysoft_Game_Ma_EnemyLogic_State { - state "Defeated" as Zennysoft_Game_Ma_EnemyLogic_State_Defeated state "Alive" as Zennysoft_Game_Ma_EnemyLogic_State_Alive { - state "Idle" as Zennysoft_Game_Ma_EnemyLogic_State_Idle state "Activated" as Zennysoft_Game_Ma_EnemyLogic_State_Activated { - state "Patrolling" as Zennysoft_Game_Ma_EnemyLogic_State_Patrolling state "Attacking" as Zennysoft_Game_Ma_EnemyLogic_State_Attacking state "FollowPlayer" as Zennysoft_Game_Ma_EnemyLogic_State_FollowPlayer + state "Patrolling" as Zennysoft_Game_Ma_EnemyLogic_State_Patrolling } + state "Idle" as Zennysoft_Game_Ma_EnemyLogic_State_Idle } + state "Defeated" as Zennysoft_Game_Ma_EnemyLogic_State_Defeated } Zennysoft_Game_Ma_EnemyLogic_State_Alive --> Zennysoft_Game_Ma_EnemyLogic_State_Attacking : AttackTimer diff --git a/Zennysoft.Game.Ma/src/game/Game.cs b/Zennysoft.Game.Ma/src/game/Game.cs index 53863ce0..f7949c0b 100644 --- a/Zennysoft.Game.Ma/src/game/Game.cs +++ b/Zennysoft.Game.Ma/src/game/Game.cs @@ -179,7 +179,28 @@ public partial class Game : Node3D, IGame }) .Handle((in GameLogic.Output.HidePauseMenu _) => { PauseMenu.Hide(); }) .Handle((in GameLogic.Output.ExitPauseMenu _) => { PauseMenu.FadeOut(); Input.MouseMode = Input.MouseModeEnum.Visible; PauseMenu.SetProcessUnhandledInput(false); }) - .Handle((in GameLogic.Output.LoadNextFloor _) => { Map.SpawnNextFloor(); }) + .Handle((in GameLogic.Output.LoadNextFloor _) => + { + Map.SpawnNextFloor(); + if (Player.EquippedWeapon.Value.ItemTag == ItemTag.BreaksOnChange) + { + var itemToDestroy = Player.EquippedWeapon.Value; + Player.Unequip(itemToDestroy); + Player.Inventory.Remove(itemToDestroy); + } + if (Player.EquippedArmor.Value.ItemTag == ItemTag.BreaksOnChange) + { + var itemToDestroy = Player.EquippedArmor.Value; + Player.Unequip(itemToDestroy); + Player.Inventory.Remove(itemToDestroy); + } + if (Player.EquippedAccessory.Value.ItemTag == ItemTag.BreaksOnChange) + { + var itemToDestroy = Player.EquippedAccessory.Value; + Player.Unequip(itemToDestroy); + Player.Inventory.Remove(itemToDestroy); + } + }) .Handle((in GameLogic.Output.LoadMap _) => { Map.LoadMap(); }) .Handle((in GameLogic.Output.ShowFloorClearMenu _) => { FloorClearMenu.Show(); FloorClearMenu.FadeIn(); }) .Handle((in GameLogic.Output.ExitFloorClearMenu _) => { FloorClearMenu.FadeOut(); }) @@ -211,7 +232,7 @@ public partial class Game : Node3D, IGame FloorClearMenu.SaveAndExit += FloorClearMenu_SaveAndExit; FloorClearMenu.TransitionCompleted += FloorClearMenu_TransitionCompleted; - GameEventDepot.RestorativePickedUp += GameEventDepot_RestorativePickedUp; + GameRepo.RestorativePickedUp += GameEventDepot_RestorativePickedUp; DoubleEXPTimer.Timeout += DoubleEXPTimer_Timeout; @@ -236,6 +257,9 @@ public partial class Game : Node3D, IGame public async Task UseItem(InventoryItem item) { + if (item.ItemTag == ItemTag.MysteryItem) + item = RerollItem(item); + switch (item) { case ConsumableItem consumableItem: @@ -267,7 +291,7 @@ public partial class Game : Node3D, IGame { var thrownScene = GD.Load("res://src/items/thrown/ThrownItem.tscn"); var thrown = thrownScene.Instantiate(); - thrown.ItemThatIsThrown = (InventoryItem)item; + thrown.ItemThatIsThrown = item; AddChild(thrown); thrown.Position += new Vector3(0, 1.5f, 0); thrown.Throw(_effectService); @@ -275,7 +299,37 @@ public partial class Game : Node3D, IGame public IDungeonFloor CurrentFloor => Map.CurrentFloor; - public void EnemyDefeated(Vector3 defeatedLocation, EnemyStatResource resource) => Player.GainExp(resource.ExpFromDefeat * GameRepo.ExpRate); + public void EnemyDefeated(Vector3 defeatedLocation, EnemyStatResource resource) + { + Player.GainExp(resource.ExpFromDefeat * GameRepo.ExpRate); + DropRestorative(defeatedLocation); + } + + public InventoryItem RerollItem(InventoryItem itemToReroll) + { + var itemDb = new ItemDatabase(); + + var currentIndex = Player.Inventory.Items.IndexOf(itemToReroll); + Player.Inventory.Remove(itemToReroll); + InventoryItem rolledItem = null; + + if (itemToReroll is Weapon weapon) + rolledItem = itemDb.PickItem(weapon); + if (itemToReroll is Armor armor) + rolledItem = itemDb.PickItem(armor); + if (itemToReroll is Accessory accessory) + rolledItem = itemDb.PickItem(accessory); + if (itemToReroll is ThrowableItem throwableItem) + rolledItem = itemDb.PickItem(throwableItem); + if (itemToReroll is EffectItem effectItem) + rolledItem = itemDb.PickItem(effectItem); + if (itemToReroll is ConsumableItem consumableItem) + rolledItem = itemDb.PickItem(consumableItem); + + Player.Inventory.TryInsert(rolledItem, currentIndex); + + return rolledItem; + } private void DropRestorative(Vector3 vector) { diff --git a/Zennysoft.Game.Ma/src/game/GameEventDepot.cs b/Zennysoft.Game.Ma/src/game/GameEventDepot.cs index 7b47c043..c29b1268 100644 --- a/Zennysoft.Game.Ma/src/game/GameEventDepot.cs +++ b/Zennysoft.Game.Ma/src/game/GameEventDepot.cs @@ -1,6 +1,5 @@ using Godot; using System; -using Zennysoft.Game.Abstractions; namespace Zennysoft.Ma.Adapter; @@ -18,7 +17,6 @@ public class GameEventDepot : IGameEventDepot public event Action? MenuBackedOut; public event Action? InventorySorted; public event Action? HealingItemConsumed; - public event Action? RestorativePickedUp; public void OnOverworldEntered() => OverworldEntered?.Invoke(); public void OnDungeonAThemeAreaEntered() => DungeonAThemeAreaEntered?.Invoke(); @@ -32,7 +30,6 @@ public class GameEventDepot : IGameEventDepot public void OnInventorySorted() => InventorySorted?.Invoke(); public void OnHealingItemConsumed(InventoryItem item) => HealingItemConsumed?.Invoke(item); - public void OnRestorativePickedUp(IHealthPack restorative) => RestorativePickedUp?.Invoke(restorative); public void Dispose() { diff --git a/Zennysoft.Game.Ma/src/game/IGame.cs b/Zennysoft.Game.Ma/src/game/IGame.cs index f8d49b88..b0e8f773 100644 --- a/Zennysoft.Game.Ma/src/game/IGame.cs +++ b/Zennysoft.Game.Ma/src/game/IGame.cs @@ -6,7 +6,6 @@ using Chickensoft.GodotNodeInterfaces; using Chickensoft.SaveFileBuilder; using Godot; using System.Threading.Tasks; -using Zennysoft.Game.Abstractions; using Zennysoft.Ma.Adapter; public interface IGame : IProvide, IProvide, IProvide, IProvide, IProvide, IProvide>, INode3D @@ -32,4 +31,6 @@ public interface IGame : IProvide, IProvide, IProvid public void EnemyDefeated(Vector3 defeatedLocation, EnemyStatResource enemyStatResource); public void TogglePause(); + + public InventoryItem RerollItem(InventoryItem itemToReroll); } diff --git a/Zennysoft.Game.Ma/src/inventory_menu/InventoryMenu.cs b/Zennysoft.Game.Ma/src/inventory_menu/InventoryMenu.cs index e4973e2b..01a015c2 100644 --- a/Zennysoft.Game.Ma/src/inventory_menu/InventoryMenu.cs +++ b/Zennysoft.Game.Ma/src/inventory_menu/InventoryMenu.cs @@ -214,6 +214,8 @@ public partial class InventoryMenu : Control, IInventoryMenu if (@event.IsActionPressed(GameInputs.InventorySort)) { inventory.Sort(); + if (_currentIndex > inventory.Items.Count - 1) + _currentIndex = inventory.Items.Count - 1; GameEventDepot.OnInventorySorted(); RefreshInventoryScreen(); } @@ -377,6 +379,8 @@ public partial class InventoryMenu : Control, IInventoryMenu ItemEffectLabel.Text = $"{itemSlot.Item.GetType()} unequipped."; Player.Unequip(equipableItem); itemSlot.SetSelectedItemStyle(); + if (equipableItem.ItemTag == ItemTag.BreaksOnChange) + Player.Inventory.Remove(equipableItem); } else { @@ -391,16 +395,15 @@ public partial class InventoryMenu : Control, IInventoryMenu private async void UseButtonPressed() { + UseButton.Disabled = true; var currentItem = ItemSlots[_currentIndex].Item; if (currentItem is EquipableItem) await EquipOrUnequipItem(); else - { await Game.UseItem(currentItem); - //DestroyItem(currentItem); - } RefreshUIAfterUserSelection(); + UseButton.Disabled = false; } private async void ThrowButtonPressed() diff --git a/Zennysoft.Game.Ma/src/items/EffectService.cs b/Zennysoft.Game.Ma/src/items/EffectService.cs index 8fed873a..9af5aab4 100644 --- a/Zennysoft.Game.Ma/src/items/EffectService.cs +++ b/Zennysoft.Game.Ma/src/items/EffectService.cs @@ -60,6 +60,10 @@ public class EffectService public void TurnAllEnemiesInRoomIntoHealingItem() { var currentRoom = _map.GetPlayersCurrentRoom(); + + if (currentRoom is not MonsterRoom) + return; + var currentEnemies = currentRoom.EnemiesInRoom; foreach (var enemy in currentEnemies) { @@ -86,6 +90,10 @@ public class EffectService public void HealAllEnemiesAndPlayerInRoomToFull() { var currentRoom = _map.GetPlayersCurrentRoom(); + + if (currentRoom is not MonsterRoom) + return; + var currentEnemies = currentRoom.EnemiesInRoom; foreach (var enemy in currentEnemies) enemy.SetCurrentHP(enemy.GetMaximumHP()); @@ -95,6 +103,10 @@ public class EffectService public void AbsorbHPFromAllEnemiesInRoom() { var currentRoom = _map.GetPlayersCurrentRoom(); + + if (currentRoom is not MonsterRoom) + return; + var currentEnemies = currentRoom.EnemiesInRoom; var hpToAbsorb = 0.0; foreach (var enemy in currentEnemies) @@ -106,6 +118,10 @@ public class EffectService public void DealElementalDamageToAllEnemiesInRoom(ElementType elementType) { var currentRoom = _map.GetPlayersCurrentRoom(); + + if (currentRoom is not MonsterRoom) + return; + var currentEnemies = currentRoom.EnemiesInRoom; foreach (var enemy in currentEnemies) enemy.TakeDamage(20, elementType); @@ -132,20 +148,22 @@ public class EffectService public void RaiseCurrentWeaponAttack() { - if (_player.EquippedWeapon.Value.ItemName == string.Empty) + if (string.IsNullOrEmpty(_player.EquippedWeapon.Value.ItemName)) return; var currentWeapon = (Weapon)_player.EquippedWeapon.Value; currentWeapon.IncreaseWeaponAttack(1); + _player.ModifyBonusAttack(1); } public void RaiseCurrentArmorDefense() { - if (_player.EquippedArmor.Value.ItemName == string.Empty) + if (string.IsNullOrEmpty(_player.EquippedArmor.Value.ItemName)) return; var currentArmor = (Armor)_player.EquippedArmor.Value; currentArmor.IncreaseArmorDefense(1); + _player.ModifyBonusDefense(1); } public void RaiseLevel() @@ -197,12 +215,15 @@ public class EffectService public void ChangeAffinity(ThrowableItem throwableItem) { var maximumElements = Enum.GetNames(typeof(ElementType)).Length; - throwableItem.SetElementType(throwableItem.ElementType + 1 % maximumElements); + var newElement = ((int)throwableItem.ElementType + 1) % maximumElements; + throwableItem.SetElementType((ElementType)newElement); // TODO: Make this an inventory animation to cycle through elements. throwableItem.SetDescription( $"Inflicts {throwableItem.ElementType} damage when thrown." + $"{System.Environment.NewLine}Use item to change Affinity."); + + throwableItem.SetCount(throwableItem.Count + 1); } public void WarpToExit(IPlayer player) diff --git a/Zennysoft.Game.Ma/src/items/Inventory.cs b/Zennysoft.Game.Ma/src/items/Inventory.cs index 2a9ade78..14d46dde 100644 --- a/Zennysoft.Game.Ma/src/items/Inventory.cs +++ b/Zennysoft.Game.Ma/src/items/Inventory.cs @@ -34,6 +34,15 @@ public partial class Inventory : Node, IInventory return true; } + public bool TryInsert(InventoryItem inventoryItem, int index) + { + if (Items.Count >= _maxInventorySize || index >= _maxInventorySize || index < 0) + return false; + + Items.Insert(index, inventoryItem); + return true; + } + public void Remove(InventoryItem inventoryItem) => Items.Remove(inventoryItem); diff --git a/Zennysoft.Game.Ma/src/items/ItemDatabase.cs b/Zennysoft.Game.Ma/src/items/ItemDatabase.cs index 9dee3631..4dca7bde 100644 --- a/Zennysoft.Game.Ma/src/items/ItemDatabase.cs +++ b/Zennysoft.Game.Ma/src/items/ItemDatabase.cs @@ -1,30 +1,36 @@ using Godot; using System.Collections.Generic; +using System.Collections.Immutable; +using System.Linq; using Zennysoft.Ma.Adapter; namespace Zennysoft.Game.Ma; public partial class ItemDatabase : Node { - [Export] - public PackedScene WeaponScene { get; set; } + public ImmutableList Items { get; set; } - [Export] - public PackedScene ArmorScene { get; set; } + public InventoryItem PickItem(T itemToExclude = null) + where T : InventoryItem + { + var rng = new RandomNumberGenerator(); + rng.Randomize(); - [Export] - public PackedScene AccessoryScene { get; set; } + var itemsToSelectFrom = Items; - [Export] - public PackedScene ThrowableItemScene { get; set; } + if (itemToExclude is not null) + itemsToSelectFrom = [.. itemsToSelectFrom.OfType().Where(x => x.ItemName != itemToExclude.ItemName)]; - [Export] - public PackedScene ConsumableItemScene { get; set; } + var weights = itemsToSelectFrom.Select(x => x.SpawnRate).ToArray(); + var selectedItem = itemsToSelectFrom.ToArray()[rng.RandWeighted(weights)]; - [Export] - public PackedScene EffectItemScene { get; set; } + if (selectedItem is ThrowableItem throwableItem) + throwableItem.SetCount(rng.RandiRange(throwableItem.Stats.MinimumCount, throwableItem.Stats.MaximumCount)); - public InventoryItem[] Initialize() + return selectedItem; + } + + public ItemDatabase() { var database = new List(); var armorResources = DirAccess.GetFilesAt("res://src/items/armor/resources/"); @@ -37,7 +43,7 @@ public partial class ItemDatabase : Node foreach (var armor in armorResources) { var armorInfo = GD.Load($"res://src/items/armor/resources/{armor}"); - var armorScene = ArmorScene.Instantiate(); + var armorScene = ResourceLoader.Load("res://src/items/armor/Armor.tscn").Instantiate(); armorScene.Stats = armorInfo; database.Add(armorScene); } @@ -45,7 +51,7 @@ public partial class ItemDatabase : Node foreach (var weapon in weaponResources) { var weaponInfo = GD.Load($"res://src/items/weapons/resources/{weapon}"); - var weaponScene = WeaponScene.Instantiate(); + var weaponScene = ResourceLoader.Load("res://src/items/weapons/Weapon.tscn").Instantiate(); weaponScene.Stats = weaponInfo; database.Add(weaponScene); } @@ -53,7 +59,7 @@ public partial class ItemDatabase : Node foreach (var accessory in accessoryResources) { var accessoryInfo = GD.Load($"res://src/items/accessory/resources/{accessory}"); - var accessoryScene = AccessoryScene.Instantiate(); + var accessoryScene = ResourceLoader.Load("res://src/items/accessory/Accessory.tscn").Instantiate(); accessoryScene.Stats = accessoryInfo; database.Add(accessoryScene); } @@ -61,7 +67,7 @@ public partial class ItemDatabase : Node foreach (var throwable in throwableResources) { var throwableItemInfo = GD.Load($"res://src/items/throwable/resources/{throwable}"); - var throwableItemScene = ThrowableItemScene.Instantiate(); + var throwableItemScene = ResourceLoader.Load("res://src/items/throwable/ThrowableItem.tscn").Instantiate(); throwableItemScene.Stats = throwableItemInfo; database.Add(throwableItemScene); } @@ -69,7 +75,7 @@ public partial class ItemDatabase : Node foreach (var consumable in consumableResources) { var consumableItemInfo = GD.Load($"res://src/items/consumable/resources/{consumable}"); - var consumableItemScene = ConsumableItemScene.Instantiate(); + var consumableItemScene = ResourceLoader.Load("res://src/items/consumable/ConsumableItem.tscn").Instantiate(); consumableItemScene.Stats = consumableItemInfo; database.Add(consumableItemScene); } @@ -77,11 +83,11 @@ public partial class ItemDatabase : Node foreach (var effectItem in effectResources) { var effectItemInfo = GD.Load($"res://src/items/effect/resources/{effectItem}"); - var effectItemScene = EffectItemScene.Instantiate(); + var effectItemScene = ResourceLoader.Load("res://src/items/effect/EffectItem.tscn").Instantiate(); effectItemScene.Stats = effectItemInfo; database.Add(effectItemScene); } - return [.. database]; + Items = [.. database]; } } diff --git a/Zennysoft.Game.Ma/src/items/accessory/resources/MysteryAccessory.tres b/Zennysoft.Game.Ma/src/items/accessory/resources/MysteryAccessory.tres new file mode 100644 index 00000000..bbfede51 --- /dev/null +++ b/Zennysoft.Game.Ma/src/items/accessory/resources/MysteryAccessory.tres @@ -0,0 +1,25 @@ +[gd_resource type="Resource" script_class="AccessoryStats" load_steps=3 format=3 uid="uid://ecmjxvihuahv"] + +[ext_resource type="Texture2D" uid="uid://brvxh7iiurnem" path="res://src/items/accessory/textures/MASK 04.png" id="1_fbxyn"] +[ext_resource type="Script" uid="uid://b8arlmivk68b" path="res://src/items/accessory/AccessoryStats.cs" id="1_xc7fh"] + +[resource] +script = ExtResource("1_xc7fh") +Name = "Mask" +Description = "Unknown mask." +ATKUp = 0 +DEFUp = 0 +LuckUp = 0.0 +MaxHPUp = 0 +MaxVTUp = 0 +AccessoryTag = 0 +Name = "Mask" +Description = "Unknown mask." +SpawnRate = 0.5 +ThrowSpeed = 12.0 +HealHPAmount = 0 +HealVTAmount = 0 +ThrowDamage = 5 +ItemTag = 2 +Texture = ExtResource("1_fbxyn") +metadata/_custom_type_script = "uid://b8arlmivk68b" diff --git a/Zennysoft.Game.Ma/src/items/accessory/textures/MASK 04.png b/Zennysoft.Game.Ma/src/items/accessory/textures/MASK 04.png new file mode 100644 index 0000000000000000000000000000000000000000..b2ce4c9c9c06b03033483bf6b65ce7f9d77f803b GIT binary patch literal 8589 zcmeHMeM}qY89$m2LN5*$V$#ROV1*mDNFY)ZOl zf7JcMNPaoL_q@-?@Ao|Km*3c%o*caK#f=Dp1gEAX?n96@Bm8H>dg%FD-?bC|1sPL* zW=4?jh4P;ORHan3fRQ7=Z+rNHAQ1iRGwR zLE;ipCKasw3BjC+(USWTUs*8*-&Ddpi^WJ{nAK_(S*0S*l#7X#N+pI%Fo^^O3DjI< zuuwMCV2)bVkjR>8lg?<-aRvdek(?gk;V40X0E_Qvq^>EW)vTdk=$cqDGO)H%a)eCLnSs5cl@fWCJ+ktYuM>FEf~06Z z-Bm)G=b2@ME8V&$;PFhBSH@fOSWx;6@h&;60dO+G zg3@@uARR$od@D6^SEj9c(z(5|?oPzXQS155^OsKOrKuBP(u=P@_q+X?-m#RQH_<5{ z9!H4Y6O6oIZQ!o3q@R?(Quf02mgje%arbSXynFM_y5n!|ur3bBhGv6G$Es(pS!?cv zM{GJ7JpZoK>9jWMk8;I5_N2TU%QL9Z~zI-7ZHvRAZ;%%EFQ2H4}=sxP>0~i60!u z$yw6E_nT95m>OPx)>F9@59Jsg9i5Qxd^qdgbawg+ciC&q`WFe<`^#GNL}&etOtIsE+^Yz`=v*8QERk z-QDiBWpzad;wP2=u-rGoXsVKs=V$|i{5$NwHZN-mBX;CeeB+F_G79eqLd&mIP>RfMhZCVBrcE?|-zTLy|`2K$p51p!$nZ^$t;pHJ($d9AxNj@% z?H?Q*+zB^2`|tii3B38w{ys+FbVDFwO!&v#f-A^g&2LTv%8qvUuVuaqS5nK=Tz&ZW z!~C}7&RaQfWGElFZXOyMa)cr+fz|$9qfZgwca0sYBU06&fTd5GCqo=jhqmXyNnrwJ zzQ!rfO*Zmr Stats.ThrowSpeed; - public int Defense => Stats.Defense; + public int Defense => Stats.Defense + _bonusDefense; - public void IncreaseArmorDefense(int bonus) => Stats.Defense += bonus; + [Save("armor_bonus_defense")] + private int _bonusDefense { get; set; } = 0; + + public void IncreaseArmorDefense(int bonus) => _bonusDefense += bonus; public override ItemTag ItemTag => Stats.ItemTag; diff --git a/Zennysoft.Game.Ma/src/items/armor/Armor.tscn b/Zennysoft.Game.Ma/src/items/armor/Armor.tscn index 59e86305..954c30cf 100644 --- a/Zennysoft.Game.Ma/src/items/armor/Armor.tscn +++ b/Zennysoft.Game.Ma/src/items/armor/Armor.tscn @@ -15,15 +15,12 @@ collision_mask = 0 [node name="Sprite" type="Sprite3D" parent="Pickup"] unique_name_in_owner = true -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.0322805, 0) pixel_size = 0.0006 billboard = 2 -shaded = true double_sided = false alpha_cut = 1 texture_filter = 0 render_priority = 100 [node name="CollisionShape3D" type="CollisionShape3D" parent="Pickup"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0600509, 0.26725, 0.180481) shape = SubResource("BoxShape3D_qdeu2") diff --git a/Zennysoft.Game.Ma/src/items/armor/resources/MysteryArmor.tres b/Zennysoft.Game.Ma/src/items/armor/resources/MysteryArmor.tres new file mode 100644 index 00000000..4d40562f --- /dev/null +++ b/Zennysoft.Game.Ma/src/items/armor/resources/MysteryArmor.tres @@ -0,0 +1,25 @@ +[gd_resource type="Resource" script_class="ArmorStats" load_steps=3 format=3 uid="uid://05hilwkmrs7a"] + +[ext_resource type="Texture2D" uid="uid://cics3txmkkloh" path="res://src/items/armor/textures/MYSTERY.png" id="1_rp3e6"] +[ext_resource type="Script" uid="uid://dqtp6ewvttoyu" path="res://src/items/armor/ArmorStats.cs" id="1_s5wnf"] + +[resource] +script = ExtResource("1_s5wnf") +Name = "Coat" +Description = "Unidentified coat." +Defense = 0 +_telluricResistance = 0.0 +_aeolicResistance = 0.0 +_hydricResistance = 0.0 +_igneousResistance = 0.0 +_ferrumResistance = 0.0 +Name = "Coat" +Description = "Unidentified coat." +SpawnRate = 0.5 +ThrowSpeed = 12.0 +HealHPAmount = 0 +HealVTAmount = 0 +ThrowDamage = 5 +ItemTag = 2 +Texture = ExtResource("1_rp3e6") +metadata/_custom_type_script = "uid://dqtp6ewvttoyu" diff --git a/Zennysoft.Game.Ma/src/items/armor/textures/MYSTERY.png b/Zennysoft.Game.Ma/src/items/armor/textures/MYSTERY.png new file mode 100644 index 0000000000000000000000000000000000000000..c48d9302316df329164602b79b9984977dc2fa3f GIT binary patch literal 9560 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 N*CoV#`nw%({}V4434s6r literal 0 HcmV?d00001 diff --git a/Zennysoft.Game.Ma/src/items/armor/textures/MYSTERY.png.import b/Zennysoft.Game.Ma/src/items/armor/textures/MYSTERY.png.import new file mode 100644 index 00000000..625d8eb6 --- /dev/null +++ b/Zennysoft.Game.Ma/src/items/armor/textures/MYSTERY.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cics3txmkkloh" +path="res://.godot/imported/MYSTERY.png-17d813137e6c64f71109fe85ac9d2857.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://src/items/armor/textures/MYSTERY.png" +dest_files=["res://.godot/imported/MYSTERY.png-17d813137e6c64f71109fe85ac9d2857.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Zennysoft.Game.Ma/src/items/consumable/ConsumableItem.cs b/Zennysoft.Game.Ma/src/items/consumable/ConsumableItem.cs index 1b21f168..677ed6cc 100644 --- a/Zennysoft.Game.Ma/src/items/consumable/ConsumableItem.cs +++ b/Zennysoft.Game.Ma/src/items/consumable/ConsumableItem.cs @@ -36,6 +36,8 @@ public partial class ConsumableItem : InventoryItem public int RaiseVTAmount => Stats.RaiseVTAmount; + public override ItemTag ItemTag => Stats.ItemTag; + [Export] [Save("consumable_item_stats")] public ConsumableItemStats Stats { get; set; } = new ConsumableItemStats(); diff --git a/Zennysoft.Game.Ma/src/items/consumable/resources/MysteryConsumable.tres b/Zennysoft.Game.Ma/src/items/consumable/resources/MysteryConsumable.tres new file mode 100644 index 00000000..793c5178 --- /dev/null +++ b/Zennysoft.Game.Ma/src/items/consumable/resources/MysteryConsumable.tres @@ -0,0 +1,21 @@ +[gd_resource type="Resource" script_class="ConsumableItemStats" load_steps=3 format=3 uid="uid://bjwbx3ymt8o7"] + +[ext_resource type="Script" uid="uid://cymeea1n4f04i" path="res://src/items/consumable/ConsumableItemStats.cs" id="1_51ovu"] +[ext_resource type="Texture2D" uid="uid://b5s0sr6ddpjp4" path="res://src/items/consumable/textures/Mystery.png" id="1_g5ngs"] + +[resource] +script = ExtResource("1_51ovu") +Name = "Fragment" +Description = "Unidentified fragment." +RaiseHPAmount = 0 +RaiseVTAmount = 0 +Name = "Fragment" +Description = "Unidentified fragment." +SpawnRate = 0.5 +ThrowSpeed = 12.0 +HealHPAmount = 0 +HealVTAmount = 0 +ThrowDamage = 5 +ItemTag = 2 +Texture = ExtResource("1_g5ngs") +metadata/_custom_type_script = "uid://cymeea1n4f04i" diff --git a/Zennysoft.Game.Ma/src/items/consumable/textures/Mystery.png b/Zennysoft.Game.Ma/src/items/consumable/textures/Mystery.png new file mode 100644 index 0000000000000000000000000000000000000000..e37d4dc8b36cbdb37b9bc49e6b1e020bfc3945dd GIT binary patch literal 4629 zcmd^DeM}qY9X`@#YN*mq+tfvAVs1_~t=i6a7#rKy7>9)rSTRI_B_v%T=esj@fqy4d2vi#oN?|pt>&+mCpKC!2A_r~1Kxex?xEH5kB3qk9^avk)v|Zz{5aeN+gLQO+ z(X1AShCE`}NU6p9AlxTh- zlCQ)uDK0C3S3Y9k&PwU=y(Oh9&cKygY~VNxj-pLXO_HVp32SXY^HnMpib+wa6af~9 zt=Y^G4#aHRwu(?f+eoX?!WmgJEFcm(*3PNLAk^g?7|R;0*|t(AP%+d&SkQb4CghYc zq{uZpi`{C?eTpMKy9_!H6IU*g<;lQ*tlJd zAdQuRJkZ)!(`=#9y|j(BTS(RzrrRG6@F%WWUi& zu}!w;@7X|?5FD)*gRaRDtN_6ZYoz(OOo7V_5e&2sTQ=3Qlu_S&zo|51ib)Ynan}wI zh9WrP;g%GM>sc#9fK-hP(LkdXbAuRODYTqeW7N?M3W^>TRuM&uXB2;J)b5|*?JJr(vZ^P6HxfN|HW zR9C2^$O08osL;z1QZAzqoeI+RfviLh!~+#k(7c! zR0;w^Fdc|Wr&FpBN{J~+xl&GII!fSih8lR8(FU5`F#_G8y!b%r6fZF{>TA^PTyp3plc3i=Fb`C8h(iyr+&zW=SD zMy*Ct$qO0}<3Htc`BFXm_yqB%jafDI_~er#e+KZSp+8gw-gLWMT_@enmXh#j0cUJ(oQGm+Hm8x&bFhZzlCJYb62{@EL_dFuMk$KT0RE#%>g&H&e<@xDg9 zvostGH_J4sv{oAn?BjDbeZhBsn0>GE{1NpR>NNc2EpNy=Sn(Il%Y8Q{lJOSNc$L=M z?Q&iI&9hle##6mNJja0UN1vi^%-f^6+d9VRXzm?iFejS<{QR;rr>H-}+{=HRo}RuI z_6Eb(!ae9wY5|xH~hlhvTX7}?6v}5dAxbMb1 z@OZ)Ft_JD-)Z2h$M}n>U(2=VV_2S&o+dV#`jK7lSJ~`Xn)pe?ikIsXZjE;^PTubr1 z_A3)DQ)6RehIBkG@F8BsyG;K6wr37KpM3xaL62mbV^630Jn4hZ^eevDXFa!X-!2Vn zQW2ja9dPqo$N6N~dp;ftc-m*(@tF=V-La>C{3wX%^Z7uAqNTgZ*|&>2y7&eE!0*Go zo!;O?a-s2PkM^b~2wwfay=tEuy|wd6+8l+UT_Xy0>{hT(Ma``=_4|JX=$nQ?UssejT;DBIw=x~ zPIY;&%x0Zs?L3FK&4Oth`q#(pgHz_-{hJO9^RZB%qbn3U{#N$PWWYQE;Q~oSb6=dA znnKikI_;W^XDE`FiXDFhG7QdQ=FNCUbY`rlPquFbW1fttW0Rqe-~U@Ap|BT$*7-bn zEvD={^WlZitD(e4RkJ|Gs20;wS0Xc3Q2M3pvD*c$mwG~pqSMQVrh{eK^YQs8en!(- z3HVl5S63RY_qeu>cMAg@iM1DIEn7Rl85Rb$i~VDL`misgsrX}7hl?S67Kb9)Vf-Jw gLjITDlt1TR?@_<-o<710f83Pssw}zm^Fy!w8)ecrs{jB1 literal 0 HcmV?d00001 diff --git a/Zennysoft.Game.Ma/src/items/consumable/textures/Mystery.png.import b/Zennysoft.Game.Ma/src/items/consumable/textures/Mystery.png.import new file mode 100644 index 00000000..59d93157 --- /dev/null +++ b/Zennysoft.Game.Ma/src/items/consumable/textures/Mystery.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b5s0sr6ddpjp4" +path="res://.godot/imported/Mystery.png-c83e5746610e0656fa2a5584a2f1b51d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://src/items/consumable/textures/Mystery.png" +dest_files=["res://.godot/imported/Mystery.png-c83e5746610e0656fa2a5584a2f1b51d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Zennysoft.Game.Ma/src/items/effect/EffectItem.cs b/Zennysoft.Game.Ma/src/items/effect/EffectItem.cs index 932cbee8..c2724d58 100644 --- a/Zennysoft.Game.Ma/src/items/effect/EffectItem.cs +++ b/Zennysoft.Game.Ma/src/items/effect/EffectItem.cs @@ -30,6 +30,8 @@ public partial class EffectItem : InventoryItem public UsableItemTag UsableItemTag => Stats.UsableItemTag; + public override ItemTag ItemTag => Stats.ItemTag; + public void SetEffectTag(UsableItemTag effect) => Stats.UsableItemTag = effect; [Export] diff --git a/Zennysoft.Game.Ma/src/items/effect/resources/MysteryTag.tres b/Zennysoft.Game.Ma/src/items/effect/resources/MysteryTag.tres new file mode 100644 index 00000000..342af02e --- /dev/null +++ b/Zennysoft.Game.Ma/src/items/effect/resources/MysteryTag.tres @@ -0,0 +1,21 @@ +[gd_resource type="Resource" script_class="EffectItemStats" load_steps=3 format=3 uid="uid://2ymi6ooyqyox"] + +[ext_resource type="Script" uid="uid://b5w4iw4iqmxtn" path="res://src/items/effect/EffectItemStats.cs" id="1_eeb8x"] +[ext_resource type="Texture2D" uid="uid://hcnit28wyhwq" path="res://src/items/effect/textures/mystery seal.png" id="1_yerq2"] + +[resource] +script = ExtResource("1_eeb8x") +Name = "Seal" +Description = "Mystery seal." +UsableItemTag = 0 +ElementalDamageType = 0 +Name = "Seal" +Description = "Mystery seal." +SpawnRate = 0.5 +ThrowSpeed = 12.0 +HealHPAmount = 0 +HealVTAmount = 0 +ThrowDamage = 5 +ItemTag = 2 +Texture = ExtResource("1_yerq2") +metadata/_custom_type_script = "uid://b5w4iw4iqmxtn" diff --git a/Zennysoft.Game.Ma/src/items/effect/textures/mystery seal.png b/Zennysoft.Game.Ma/src/items/effect/textures/mystery seal.png new file mode 100644 index 0000000000000000000000000000000000000000..5ceaac28c242dc82d19473c93e87037204749ab1 GIT binary patch literal 4373 zcmcIoeQXnD7=OoyIE;aaQKC~W)kFoacfEeBJy$Dk=oTnLw%8d1^LqETJGb___R8AL zQpEU&34SC_1%-{62ojV}hjGXXVz#Kbp&40*VZ}_TPF>Nm-A23B_qw)%!H;;cNz?c4 zp7-}W&+mEO-*f2;YgRvcI~Bvx!vYl<~2RqVJQqezM(NF$*!;2I-MQnXHsWj`w9 z&dWLIwPlZFouMnUs!kL=G(j{qHL07lYQgIyG$xaYASr^PaAbk|f^Lxs;BMbtIfOFk zW4*jb-)R`Pyo;*NnyG%DeE1D>k4svV>gI+E*R)Kw>TQ z34SjNS8PCG-X&+_p-a7x5e09xAT;DEwI&xbM(NZfcCU?hb3&8vzAHAsGDd`E6{?yZ zC$%_fsHQZuu9(&va1xb|oH4Zu9PbETZAxWKNiB`4L>B*Hih71)MCKojIhJ+^UKfKB z=3R^v5+1ixh2?3aON9o(iyWiqw3#TZR=UFN6B#!PE6U6&l(U-WIofV_P+B`_!ZnJ#=D$15u2e$um z?!=3`$hRN)YJAbbh4boXIjlu@pZxUV=aFvvsHx?{$kILiwjpvznwkebNJU2q!0~W9 z0GqG^0G6Ziv3U*va|!{t{w4qx-VFd&4!}dN{C@@?ynp9`vy0iWITMGaQ1s00=l6Dh z7Y4QIL;?l#-vc^*q#3jxdv(dpmcE3o3UiLf_1>bMgUz3`CcA8vTMxyP{gXd+?&^J6(|u}E3hf@P{Zg?9a(G7ylX8)7>=-t_ zK9nAd5B81LP9@tBL3x+`mW46JOr0H)LeAdyn8}|`lvKrRZ%wtO1|rVLi<&9@Q zR@A$wH32*vJ-pi$mEMtR2lW1pTQnPW&s#1kZlTluqMrWAWLNkQ`&uaa#!z_OK>wts zd*Z8`Z&4238k%YuuZ^bt1Agm{CG3_Z)^DFv#)NVmkhxrTN4EKP_lBopwXSh#!Lne1 z66vXX(hRy9##=7-G^V(orF+BEXQY#FD8p2)cXCt{M~97%S8nx2rIEr{zE|AmHT;J{$i{ z@!4oSCmp*qJ#5_7yMJgwYKP)CwGizPsEiE ztomc|WbgLO#G3w2o-I9%t9C?We%~8RI>XbQvQ${Q7q6Umkyl)~cUz*;x*!^1%l4 4; - - public void OnReady() - { - Pickup.BodyEntered += OnEntered; - } - - public void OnEntered(Node3D body) - { - GameEventDepot.OnRestorativePickedUp(this); - QueueFree(); - } - } diff --git a/Zennysoft.Game.Ma/src/items/restorative/Restorative.tscn b/Zennysoft.Game.Ma/src/items/restorative/Restorative.tscn index 21f72a30..5bf023ef 100644 --- a/Zennysoft.Game.Ma/src/items/restorative/Restorative.tscn +++ b/Zennysoft.Game.Ma/src/items/restorative/Restorative.tscn @@ -8,14 +8,12 @@ radius = 0.13613 height = 1.09613 [node name="Restorative" type="Node3D"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0) script = ExtResource("1_3beyl") [node name="Sprite3D" type="Sprite3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.363669, 0) pixel_size = 0.001 billboard = 2 -shaded = true texture_filter = 0 render_priority = 100 texture = ExtResource("1_1rwq6") diff --git a/Zennysoft.Game.Ma/src/items/throwable/ThrowableItem.cs b/Zennysoft.Game.Ma/src/items/throwable/ThrowableItem.cs index 3fed3443..36acecb4 100644 --- a/Zennysoft.Game.Ma/src/items/throwable/ThrowableItem.cs +++ b/Zennysoft.Game.Ma/src/items/throwable/ThrowableItem.cs @@ -37,6 +37,8 @@ public partial class ThrowableItem : InventoryItem, IStackable public int HealVTAmount => Stats.HealVTAmount; + public override ItemTag ItemTag => Stats.ItemTag; + public void SetElementType(ElementType elementType) => Stats.ElementType = elementType; public void SetDescription(string description) => Stats.Description = description; diff --git a/Zennysoft.Game.Ma/src/items/throwable/ThrowableItem.tscn b/Zennysoft.Game.Ma/src/items/throwable/ThrowableItem.tscn index ec1550c5..449e3d73 100644 --- a/Zennysoft.Game.Ma/src/items/throwable/ThrowableItem.tscn +++ b/Zennysoft.Game.Ma/src/items/throwable/ThrowableItem.tscn @@ -14,14 +14,12 @@ collision_layer = 4 collision_mask = 0 [node name="CollisionShape3D" type="CollisionShape3D" parent="Pickup"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0600509, 0.26725, 0.180481) shape = SubResource("BoxShape3D_03cqg") [node name="Sprite" type="Sprite3D" parent="Pickup"] unique_name_in_owner = true -transform = Transform3D(0.999973, 0.00489444, -0.00548299, -0.00488109, 0.999985, 0.00244357, 0.00549488, -0.00241672, 0.999982, 0, 0, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) pixel_size = 0.0005 billboard = 2 -shaded = true texture_filter = 0 render_priority = 100 diff --git a/Zennysoft.Game.Ma/src/items/throwable/ThrowableItemStats.cs b/Zennysoft.Game.Ma/src/items/throwable/ThrowableItemStats.cs index 1d66ad55..044fb951 100644 --- a/Zennysoft.Game.Ma/src/items/throwable/ThrowableItemStats.cs +++ b/Zennysoft.Game.Ma/src/items/throwable/ThrowableItemStats.cs @@ -28,4 +28,10 @@ public partial class ThrowableItemStats : InventoryItemStats [Export] [Save("throwable_item_usable_tag")] public UsableItemTag UsableItemTag { get; set; } = UsableItemTag.None; + + [Export] + public int MinimumCount { get; set; } = 1; + + [Export] + public int MaximumCount { get; set; } = 8; } diff --git a/Zennysoft.Game.Ma/src/items/throwable/resources/GeomanticDice.tres b/Zennysoft.Game.Ma/src/items/throwable/resources/GeomanticDice.tres index 1676dc08..b03539ec 100644 --- a/Zennysoft.Game.Ma/src/items/throwable/resources/GeomanticDice.tres +++ b/Zennysoft.Game.Ma/src/items/throwable/resources/GeomanticDice.tres @@ -5,16 +5,21 @@ [resource] script = ExtResource("1_ewck5") -ThrowableItemTags = Array[int]([1]) -ElementType = 0 -UsableItemTags = Array[int]([]) Name = "Geomantic Dice" Description = "Inflicts base damage when thrown. Use item to change Affinity." -Texture = ExtResource("1_jhits") -SpawnRate = 0.1 +ThrowableItemTag = 3 +ElementType = 0 +UsableItemTag = 0 +MinimumCount = 1 +MaximumCount = 8 +Name = "Geomantic Dice" +Description = "Inflicts base damage when thrown. +Use item to change Affinity." +SpawnRate = 1.0 ThrowSpeed = 20.0 HealHPAmount = 0 HealVTAmount = 0 ThrowDamage = 20 -ItemTags = Array[int]([]) +ItemTag = 0 +Texture = ExtResource("1_jhits") diff --git a/Zennysoft.Game.Ma/src/items/throwable/resources/Gospel of Dimension.tres b/Zennysoft.Game.Ma/src/items/throwable/resources/Gospel of Dimension.tres index e9dee5d9..5f316d6e 100644 --- a/Zennysoft.Game.Ma/src/items/throwable/resources/Gospel of Dimension.tres +++ b/Zennysoft.Game.Ma/src/items/throwable/resources/Gospel of Dimension.tres @@ -5,9 +5,13 @@ [resource] script = ExtResource("2_m680r") +Name = "Gospel of Dimension" +Description = "Teleports target to a random location." ThrowableItemTag = 0 ElementType = 0 UsableItemTag = 0 +MinimumCount = 1 +MaximumCount = 8 Name = "Gospel of Dimension" Description = "Teleports target to a random location." SpawnRate = 0.1 diff --git a/Zennysoft.Game.Ma/src/items/throwable/resources/GospelOfEscape.tres b/Zennysoft.Game.Ma/src/items/throwable/resources/GospelOfEscape.tres index a33d0a5e..28c75936 100644 --- a/Zennysoft.Game.Ma/src/items/throwable/resources/GospelOfEscape.tres +++ b/Zennysoft.Game.Ma/src/items/throwable/resources/GospelOfEscape.tres @@ -5,9 +5,13 @@ [resource] script = ExtResource("1_pn8sr") +Name = "Gospel of Escape" +Description = "Warps target to the exit. No effect on player if exit has not been found." ThrowableItemTag = 0 ElementType = 0 UsableItemTag = 0 +MinimumCount = 1 +MaximumCount = 8 Name = "Gospel of Escape" Description = "Warps target to the exit. No effect on player if exit has not been found." SpawnRate = 0.5 diff --git a/Zennysoft.Game.Ma/src/items/throwable/resources/MysteryDice.tres b/Zennysoft.Game.Ma/src/items/throwable/resources/MysteryDice.tres new file mode 100644 index 00000000..cdf5fdcb --- /dev/null +++ b/Zennysoft.Game.Ma/src/items/throwable/resources/MysteryDice.tres @@ -0,0 +1,24 @@ +[gd_resource type="Resource" script_class="ThrowableItemStats" load_steps=3 format=3 uid="uid://b12mgrqpki54y"] + +[ext_resource type="Texture2D" uid="uid://dit865t330r1e" path="res://src/items/throwable/textures/MysteryDice.png" id="1_r4wv3"] +[ext_resource type="Script" uid="uid://d3wlunkcuv2w2" path="res://src/items/throwable/ThrowableItemStats.cs" id="1_xaank"] + +[resource] +script = ExtResource("1_xaank") +Name = "Mystery Dice" +Description = "Mystery dice." +ThrowableItemTag = 0 +ElementType = 0 +UsableItemTag = 0 +MinimumCount = 1 +MaximumCount = 8 +Name = "Mystery Dice" +Description = "Mystery dice." +SpawnRate = 0.5 +ThrowSpeed = 12.0 +HealHPAmount = 0 +HealVTAmount = 0 +ThrowDamage = 5 +ItemTag = 0 +Texture = ExtResource("1_r4wv3") +metadata/_custom_type_script = "uid://d3wlunkcuv2w2" diff --git a/Zennysoft.Game.Ma/src/items/throwable/textures/MysteryDice.png b/Zennysoft.Game.Ma/src/items/throwable/textures/MysteryDice.png new file mode 100644 index 0000000000000000000000000000000000000000..3b67999a31381cafb306cef5c0228f79171d318e GIT binary patch literal 12078 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%0AEsqZj4D_{2Tg^?<2XE}_YbXrl2t|slSkbHt zB%o|LxrT>V23mD{f(e&5J10{QbTB%tEB}Oz{PIdfy>3tGhB+@Ia_2}`Ettw*{hzC1 zx`^fRA+6f*xn?%l00hRW;jz{e&NTkOoB(~n=lV1&Y1Z(vTUK73g$EbA?@BS;xUi2S zLRGGIhr0K*tcT>C%$c~{NyLUyiGo&OjA;G^SaR%19 zV0lVx8!LH|AdMm``tsR;niE(n?>vKmG3BuGva%iHbQNq<|B4a>{B-Wm*Ft9p6zNn& zBWZt@MR$Ku`SNU3<}xMh&4{c@_NapoZpbl{&jXO`uBojJ&c3?^=X1W}P0l0ZbfN}@ z;&Jn;yA}!oGcH`oRr=~9>T{@(PY62aNG#W!&$)L*Z z6(}b0bIV-dSYC#1Y8-6q_9#|8SriaYuc@g?Q|P86>-~Ol`_emfI^BNgXMk7|@ub)*oDzW9Dfl36qTo zKmm$u{Y;+*-T5r9o=}~r=c>%A;Rq-HxQo$V+V+WEnzK9V=whfL=trA6lbqdQ23->{ zbMzgw^MfxKc|2172t+%4CQOwn5n+1-<#)-%Qh#zS4X34*u1rL&XM z+(_}sxcmb`76&KGZKZTnA3^-Lc6~H7bFjBilGdc#TM?i?ddgpz>30t7y&t&H1o7$9 zbUlL*k6>)&lvG-N-I#M(ps4zO55%Zvj4=uvnn|;Y{L1_r!qjQ9jCNcs?0GDyl>sva z;`#BQk(4<4)OVb77X5hbS2YtdO=xL)yO~M z)ju7!HH4hc>Vwx@Arvdng|I4En3nkVIZQX_7xo6OFhTO6m%0;;#R~14yfc1EK3UeV z|BR|8$jU@sZChvZ(S4Bu$fACDptg{1^5 zLseefxE8_1p2ZJ%0$#ZS_dEHYfkJ|F2Mk$#eKgwApu38!V(8YEo0}*_GX%<{sT@T6i^9x= zPRW)H$lxag@r4B01dmsgsJ*G&NZ74o7fpVCrHp4!d(fzK1;bnSrns3U@362HlN)R+k=t ze_C{lMz!pJ3400*RRL;-L9`7nUnJLo<3Onv`!A`xAunoDT{>UCd^LdI&EzND04lw1 z_6Agaa=QzzVOO?xtZS=C<|!V&11L&+(NyZGDcoTc;X}{i&8ti1$nw`A5oy1K-`{l) zj*BF6b73=R56TNO1!Z1cU0p?fN;NKw1moSweMvGVHCujz>sScwTD03DIYt^9Si@Pk z5U_s#!&je_`GW_`wl_%r_hIba#p)aFQsGdIc?DEz!+V}s_k29E_N2)FJk*v>OYq)k z^?vX7LWdDka52`l8$=%@b~QcmMSNV`+vVB|b38un(})ZP_o1JQ&%({wr4skOsV6t$ zZP!Lz*5@+x`l6DR8{tmb5hMdZJMl^wpMceJO>aXXrcamG!gwd(ut@%|{wLn4^}iOE z*YSF2PjRTk;MbJs{vlKW8qHKc?fBKgU1uZ`SvMv*@Wrlh_4CYMzrYzO4PnraEIoEx zl&0LfwZ5mF;*%=`VuD?^>Z*96?@k=;I z#9+l;sz`y|sp0KX4kq1ceDrO6HErF%X;uzqRAS=a_zzsA@5%<6aE F`#&ogMd| Stats.SpawnRate; - public int Damage => Stats.Damage; - public override double ThrowDamage => Stats.ThrowDamage; public override float ThrowSpeed => Stats.ThrowSpeed; @@ -42,7 +40,12 @@ public partial class Weapon : EquipableItem public double ElementalDamageBonus => Stats.ElementalDamageBonus; - public void IncreaseWeaponAttack(int bonus) => Stats.Damage += bonus; + public int Damage => Stats.Damage + _bonusDamage; + + public void IncreaseWeaponAttack(int bonus) => _bonusDamage += bonus; + + [Save("weapon_bonus_damage")] + private int _bonusDamage { get; set; } = 0; [Export] [Save("weapon_stats")] diff --git a/Zennysoft.Game.Ma/src/items/weapons/Weapon.tscn b/Zennysoft.Game.Ma/src/items/weapons/Weapon.tscn index 40bffe6c..78ceeb44 100644 --- a/Zennysoft.Game.Ma/src/items/weapons/Weapon.tscn +++ b/Zennysoft.Game.Ma/src/items/weapons/Weapon.tscn @@ -15,10 +15,9 @@ collision_mask = 0 [node name="Sprite" type="Sprite3D" parent="Pickup"] unique_name_in_owner = true -transform = Transform3D(0.0978955, 0, 0.995197, 0, 1, 0, -0.995197, 0, 0.0978955, 0, 0.271026, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) pixel_size = 0.0006 billboard = 2 -shaded = true double_sided = false alpha_antialiasing_mode = 1 texture_filter = 0 diff --git a/Zennysoft.Game.Ma/src/items/weapons/resources/MysteryRod.tres b/Zennysoft.Game.Ma/src/items/weapons/resources/MysteryRod.tres new file mode 100644 index 00000000..7ee2ab18 --- /dev/null +++ b/Zennysoft.Game.Ma/src/items/weapons/resources/MysteryRod.tres @@ -0,0 +1,25 @@ +[gd_resource type="Resource" script_class="WeaponStats" load_steps=3 format=3 uid="uid://cfhwlpa0d7wb4"] + +[ext_resource type="Texture2D" uid="uid://cpwwr4elpbo6i" path="res://src/items/weapons/textures/mystery rod.png" id="1_8fklg"] +[ext_resource type="Script" uid="uid://cc7byqeolw5y4" path="res://src/items/weapons/WeaponStats.cs" id="1_iran7"] + +[resource] +script = ExtResource("1_iran7") +Name = "Mystery rod" +Description = "Unidentified rod." +Damage = 0 +Luck = 0.05 +AttackSpeed = 1.0 +WeaponElement = 0 +ElementalDamageBonus = 1.0 +WeaponTag = 0 +Name = "Mystery rod" +Description = "Unidentified rod." +SpawnRate = 0.5 +ThrowSpeed = 12.0 +HealHPAmount = 0 +HealVTAmount = 0 +ThrowDamage = 5 +ItemTag = 2 +Texture = ExtResource("1_8fklg") +metadata/_custom_type_script = "uid://cc7byqeolw5y4" diff --git a/Zennysoft.Game.Ma/src/items/weapons/textures/mystery rod.png b/Zennysoft.Game.Ma/src/items/weapons/textures/mystery rod.png new file mode 100644 index 0000000000000000000000000000000000000000..8a888aed029bd75e0845aae6d935bcb50660c1c7 GIT binary patch literal 9652 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 literal 0 HcmV?d00001 diff --git a/Zennysoft.Game.Ma/src/items/weapons/textures/mystery rod.png.import b/Zennysoft.Game.Ma/src/items/weapons/textures/mystery rod.png.import new file mode 100644 index 00000000..9f71cc6e --- /dev/null +++ b/Zennysoft.Game.Ma/src/items/weapons/textures/mystery rod.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cpwwr4elpbo6i" +path="res://.godot/imported/mystery rod.png-2c7d466030a42082bd4ef4c9910f5943.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://src/items/weapons/textures/mystery rod.png" +dest_files=["res://.godot/imported/mystery rod.png-2c7d466030a42082bd4ef4c9910f5943.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Zennysoft.Game.Ma/src/map/Map.tscn b/Zennysoft.Game.Ma/src/map/Map.tscn index 493f1700..e4dce8ba 100644 --- a/Zennysoft.Game.Ma/src/map/Map.tscn +++ b/Zennysoft.Game.Ma/src/map/Map.tscn @@ -16,6 +16,6 @@ [node name="Map" type="Node3D"] script = ExtResource("1_bw70o") -_floors = Array[PackedScene]([ExtResource("2_0m8h8"), ExtResource("3_y74f3"), ExtResource("2_merfv"), ExtResource("4_8y0oy"), ExtResource("5_uag72"), ExtResource("6_55rmo"), ExtResource("7_f6kwn"), ExtResource("8_ne2vg"), ExtResource("9_abpbr"), ExtResource("10_caf7v"), ExtResource("11_y74f3"), ExtResource("3_caf7v")]) +_floors = Array[PackedScene]([ExtResource("2_0m8h8"), ExtResource("2_merfv"), ExtResource("4_8y0oy"), ExtResource("5_uag72"), ExtResource("6_55rmo"), ExtResource("7_f6kwn"), ExtResource("8_ne2vg"), ExtResource("9_abpbr"), ExtResource("10_caf7v"), ExtResource("11_y74f3"), ExtResource("3_caf7v"), ExtResource("3_y74f3")]) [node name="WorldEnvironment" type="WorldEnvironment" parent="."] diff --git a/Zennysoft.Game.Ma/src/map/dungeon/code/MonsterRoom.cs b/Zennysoft.Game.Ma/src/map/dungeon/code/MonsterRoom.cs index 3ecc610b..01701865 100644 --- a/Zennysoft.Game.Ma/src/map/dungeon/code/MonsterRoom.cs +++ b/Zennysoft.Game.Ma/src/map/dungeon/code/MonsterRoom.cs @@ -2,6 +2,7 @@ using Chickensoft.Introspection; using Godot; using System.Linq; +using Zennysoft.Ma.Adapter; namespace Zennysoft.Game.Ma; @@ -48,17 +49,16 @@ public partial class MonsterRoom : DungeonRoom rng.Randomize(); var numberOfItemsToSpawn = rng.RandiRange(1, itemSpawnPoints.Count); itemSpawnPoints.Shuffle(); - var database = ItemDatabase.Initialize(); + var database = new ItemDatabase(); foreach (var spawnPoint in itemSpawnPoints.Cast()) { if (numberOfItemsToSpawn <= 0) break; numberOfItemsToSpawn--; - var weights = database.Select(x => x.SpawnRate).ToArray(); - var selectedItem = database[rng.RandWeighted(weights)]; + var selectedItem = database.PickItem(); var duplicated = selectedItem.Duplicate((int)DuplicateFlags.UseInstantiation) as Node3D; - duplicated.Position = new Vector3(spawnPoint.Position.X, -1.5f, spawnPoint.Position.Z); + duplicated.Position = new Vector3(spawnPoint.Position.X, -0.5f, spawnPoint.Position.Z); AddChild(duplicated); } } diff --git a/Zennysoft.Game.Ma/src/map/dungeon/floors/Floor00.tscn b/Zennysoft.Game.Ma/src/map/dungeon/floors/Floor00.tscn index 3c87e650..d8ba23f3 100644 --- a/Zennysoft.Game.Ma/src/map/dungeon/floors/Floor00.tscn +++ b/Zennysoft.Game.Ma/src/map/dungeon/floors/Floor00.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=64 format=4 uid="uid://dl6h1djc27ddl"] +[gd_scene load_steps=73 format=4 uid="uid://dl6h1djc27ddl"] [ext_resource type="Script" uid="uid://c1nhqlem1ew3m" path="res://src/map/dungeon/code/Floor0.cs" id="1_db2o3"] [ext_resource type="Texture2D" uid="uid://b27ksiyfefb33" path="res://src/map/dungeon/models/Set A/02. Altar/02_ALTAR_FLOOR_ZER0_VER_outside_desert.png" id="2_xh2ej"] @@ -15,9 +15,18 @@ [ext_resource type="Texture2D" uid="uid://dyufabjcwlago" path="res://src/map/dungeon/models/Set A/02. Altar/02_ALTAR_FLOOR_ZER0_VER_HAND_CYCLE_MOTIF.png" id="13_1i307"] [ext_resource type="Texture2D" uid="uid://4k6vtn4oip5f" path="res://src/map/dungeon/models/Set A/02. Altar/02_ALTAR_FLOOR_ZER0_VER_TILE4.png" id="14_qqc7i"] [ext_resource type="Texture2D" uid="uid://cururtxtgylxf" path="res://src/map/dungeon/models/Set A/02. Altar/02_ALTAR_FLOOR_ZER0_VER_COLUMN.jpg" id="15_ojbcg"] +[ext_resource type="PackedScene" uid="uid://db206brufi83s" path="res://src/items/weapons/Weapon.tscn" id="16_aqomv"] [ext_resource type="PackedScene" uid="uid://1fl6s352e2ej" path="res://src/items/throwable/ThrowableItem.tscn" id="16_db2o3"] -[ext_resource type="Resource" uid="uid://qqg0gdcb8fwg" path="res://src/items/throwable/resources/SpellSignKnowledge.tres" id="17_ntxe5"] +[ext_resource type="Resource" uid="uid://cfhwlpa0d7wb4" path="res://src/items/weapons/resources/MysteryRod.tres" id="17_db2o3"] [ext_resource type="Resource" uid="uid://bph8c6by4s047" path="res://src/items/throwable/resources/GeomanticDice.tres" id="18_ntxe5"] +[ext_resource type="PackedScene" uid="uid://b07srt3lckt4e" path="res://src/items/accessory/Accessory.tscn" id="18_qlp0t"] +[ext_resource type="Resource" uid="uid://ecmjxvihuahv" path="res://src/items/accessory/resources/MysteryAccessory.tres" id="19_7d58j"] +[ext_resource type="PackedScene" uid="uid://dorr7v1tkeiy0" path="res://src/items/armor/Armor.tscn" id="20_ofv7i"] +[ext_resource type="Resource" uid="uid://05hilwkmrs7a" path="res://src/items/armor/resources/MysteryArmor.tres" id="21_mi7rk"] +[ext_resource type="PackedScene" uid="uid://c6w7dpk0hurj0" path="res://src/items/consumable/ConsumableItem.tscn" id="22_he1ou"] +[ext_resource type="Resource" uid="uid://bjwbx3ymt8o7" path="res://src/items/consumable/resources/MysteryConsumable.tres" id="23_rufnk"] +[ext_resource type="PackedScene" uid="uid://d0pl1n1jf77jm" path="res://src/items/effect/EffectItem.tscn" id="24_t3xa0"] +[ext_resource type="Resource" uid="uid://cx8kpmyhl5vkj" path="res://src/items/effect/resources/FerrousResolution.tres" id="25_qqc7i"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3ubi4"] shading_mode = 0 @@ -900,22 +909,26 @@ shape = SubResource("BoxShape3D_db2o3") [node name="Camera3D" type="Camera3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.00384, 1.80761, 11.3571) +[node name="Weapon" parent="." instance=ExtResource("16_aqomv")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.00425, -2.90864, 0) +Stats = ExtResource("17_db2o3") + +[node name="Accessory" parent="." instance=ExtResource("18_qlp0t")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.98595, -1.56419, 0) +Stats = ExtResource("19_7d58j") + +[node name="Armor" parent="." instance=ExtResource("20_ofv7i")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.98595, -1.56419, 0) +Stats = ExtResource("21_mi7rk") + +[node name="ConsumableItem" parent="." instance=ExtResource("22_he1ou")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.98595, -1.56419, 0) +Stats = ExtResource("23_rufnk") + +[node name="EffectItem" parent="." instance=ExtResource("24_t3xa0")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.98595, -1.56419, 0) +Stats = ExtResource("25_qqc7i") + [node name="ThrowableItem" parent="." instance=ExtResource("16_db2o3")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.78811, -3.32789, 0) -Stats = ExtResource("17_ntxe5") - -[node name="ThrowableItem2" parent="." instance=ExtResource("16_db2o3")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.78811, -3.32789, 0) -Stats = ExtResource("17_ntxe5") - -[node name="ThrowableItem3" parent="." instance=ExtResource("16_db2o3")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.78811, -3.32789, 0) -Stats = ExtResource("17_ntxe5") - -[node name="ThrowableItem4" parent="." instance=ExtResource("16_db2o3")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.78811, -3.32789, 0) -Stats = ExtResource("17_ntxe5") - -[node name="DifferentThrowable" parent="." instance=ExtResource("16_db2o3")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.2442, -2.60258, -2.96088) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.98595, -1.56419, 0) Stats = ExtResource("18_ntxe5") diff --git a/Zennysoft.Game.Ma/src/map/dungeon/floors/Floor01.tscn b/Zennysoft.Game.Ma/src/map/dungeon/floors/Floor01.tscn index 90fce702..5d4fccbc 100644 --- a/Zennysoft.Game.Ma/src/map/dungeon/floors/Floor01.tscn +++ b/Zennysoft.Game.Ma/src/map/dungeon/floors/Floor01.tscn @@ -12,8 +12,8 @@ [ext_resource type="PackedScene" uid="uid://b0gwivt7cw7nd" path="res://src/enemy/enemy_types/02. michael/Michael.tscn" id="14_gkkr3"] [sub_resource type="NavigationMesh" id="NavigationMesh_xw4dv"] -vertices = PackedVector3Array(38, -0.588592, 22.75, 38, -0.588592, 23.75, 39.5, -0.588592, 23.75, 19.75, -0.588592, 25, 17, -0.588592, 25, 17, -0.588592, 26, 16.5, -0.588592, 26.25, 16.75, -0.588592, 30.5, 33.5, -0.588592, -20.75, 33.5, -0.588592, -17.5, 36.5, -0.588592, -17.5, -20.5, -0.588592, -29.5, -17.25, -0.588592, -29.5, -17.25, -0.588592, -32.75, -11.5, -0.588592, -23, -14.5, -0.588592, -23, -14.75, -0.588592, -19.25, 16.75, -0.588592, 13.5, 16.5, -0.588592, 18, 17.25, -0.588592, 18.5, 30.75, -0.588592, 18.5, 37.5, -0.588592, -16.75, 39.5, -0.588592, -39.5, -10.5, -0.588592, -23.5, -0.75, -0.588592, -15, -1.25, -0.588592, -15.5, 4.5, -0.588592, -33.5, 5.5, -0.588592, -32.75, 32.5, -0.588592, -21.5, -28.5, -0.588592, -25.5, -21.25, -0.588592, -25.5, -21.25, -0.588592, -28.75, 16.25, -0.588592, 32.5, 19.75, -0.588592, 39.5, -0.75, -0.588592, 11.5, -22.75, -0.588592, -11.25, -28.75, -0.588592, -11, -39.5, -0.588592, 39.5, -0.75, -0.588592, 32.25, -1.25, -0.588592, -27, -10.5, -0.588592, -27, -22.5, -0.588592, -19, -29.25, -0.588592, -24.75, -39.5, -0.588592, -39.5, -16.5, -0.588592, -33.5, -29.25, -0.588592, -11.5, 16.25, -0.588592, 11.25, 30.75, -0.588592, -11, 27.25, -0.588592, -11, 37.5, -0.588592, 22.5, 26.75, -0.588592, -11.5, 26.75, -0.588592, -15, 5.5, -0.588592, -21.5, 13.75, -0.588592, 13.5, 15, -0.588592, 13.25, 15, -0.588592, 12.75, 0.75, -0.588592, 12.75, 0.75, -0.588592, 13.25, 2.25, -0.588592, 13.5, 2.25, -0.588592, 30.25, 0.75, -0.588592, 30.5, 0.75, -0.588592, 31, 15, -0.588592, 31, 13.75, -0.588592, 30.5, 15, -0.588592, 27.5, 15, -0.588592, 26.25, 14.25, -0.588592, 26, 13.75, -0.588592, 27.75, 6.75, -0.588592, 23.5, 6.5, -0.588592, 20.75, 2.25, -0.588592, 16, 0.75, -0.588592, 16.25, 0.75, -0.588592, 27.5, 2.25, -0.588592, 27.75, 9.5, -0.588592, 23.25, 14.25, -0.588592, 18.25, 15, -0.588592, 18, 15, -0.588592, 16.25, 13.75, -0.588592, 16, 9.25, -0.588592, 20.5, 14.75, -0.588592, 21.5, 14.25, -0.588592, 21.25, 20.5, 6.66141, 24.75, 20.5, 6.66141, 27.25, 23.25, 6.66141, 27.25, 23.25, 6.66141, 24.75, 36.75, 6.66141, 24.75, 36.75, 6.66141, 27.25, 39.25, 6.66141, 27.25, 39.25, 6.66141, 24.75, 21, -0.588592, 25, 21, -0.588592, 27, 23, -0.588592, 27, 23, -0.588592, 25, 25.25, -0.588592, 38.5, 25.25, -0.588592, 39.5, 26.75, -0.588592, 39.5, 27, -0.588592, 38.25, 35.75, -0.588592, 36, 36, -0.588592, 28.25, 35.75, -0.588592, 25.25, 24.25, -0.588592, 38.25, 24, -0.588592, 35.75, 39.25, -0.588592, 35.75, 39.25, -0.588592, 28.25, 29.75, -0.588592, 38.25, 30, -0.588592, 39.25, 35.75, -0.588592, 39.25, 24.25, -0.588592, 25, 24, -0.588592, 28.25, 21, -0.588592, 28.25, 21, -0.588592, 35.75, 20.75, 6.66141, 36.75, 20.75, 6.66141, 39.25, 23.25, 6.66141, 39.25, 23.25, 6.66141, 36.75, 36.75, 6.66141, 36.75, 36.75, 6.66141, 39.25, 39.25, 6.66141, 39.25, 39.25, 6.66141, 36.75, 37, -0.588592, 37, 37, -0.588592, 39, 39, -0.588592, 39, 39, -0.588592, 37) -polygons = [PackedInt32Array(2, 1, 0), PackedInt32Array(5, 4, 3), PackedInt32Array(5, 3, 6), PackedInt32Array(6, 3, 7), PackedInt32Array(10, 9, 8), PackedInt32Array(13, 12, 11), PackedInt32Array(16, 15, 14), PackedInt32Array(18, 17, 19), PackedInt32Array(19, 17, 20), PackedInt32Array(10, 8, 21), PackedInt32Array(21, 8, 22), PackedInt32Array(14, 23, 16), PackedInt32Array(16, 23, 25), PackedInt32Array(16, 25, 24), PackedInt32Array(27, 26, 28), PackedInt32Array(28, 26, 22), PackedInt32Array(31, 30, 29), PackedInt32Array(7, 3, 32), PackedInt32Array(32, 3, 33), PackedInt32Array(35, 34, 36), PackedInt32Array(36, 34, 38), PackedInt32Array(36, 38, 37), PackedInt32Array(11, 31, 29), PackedInt32Array(40, 39, 23), PackedInt32Array(23, 39, 25), PackedInt32Array(41, 16, 35), PackedInt32Array(35, 16, 24), PackedInt32Array(22, 8, 28), PackedInt32Array(43, 29, 42), PackedInt32Array(13, 11, 29), PackedInt32Array(13, 29, 44), PackedInt32Array(44, 29, 43), PackedInt32Array(0, 21, 2), PackedInt32Array(2, 21, 22), PackedInt32Array(45, 36, 37), PackedInt32Array(17, 46, 20), PackedInt32Array(20, 46, 48), PackedInt32Array(20, 48, 47), PackedInt32Array(32, 33, 38), PackedInt32Array(38, 33, 37), PackedInt32Array(0, 49, 21), PackedInt32Array(42, 45, 43), PackedInt32Array(43, 45, 37), PackedInt32Array(44, 43, 26), PackedInt32Array(26, 43, 22), PackedInt32Array(50, 48, 46), PackedInt32Array(50, 46, 51), PackedInt32Array(51, 46, 34), PackedInt32Array(51, 34, 24), PackedInt32Array(24, 34, 35), PackedInt32Array(28, 52, 27), PackedInt32Array(54, 53, 55), PackedInt32Array(55, 53, 58), PackedInt32Array(55, 58, 57), PackedInt32Array(55, 57, 56), PackedInt32Array(60, 59, 61), PackedInt32Array(61, 59, 63), PackedInt32Array(61, 63, 62), PackedInt32Array(65, 64, 66), PackedInt32Array(66, 64, 67), PackedInt32Array(73, 72, 68), PackedInt32Array(68, 72, 69), PackedInt32Array(69, 72, 70), PackedInt32Array(70, 72, 71), PackedInt32Array(73, 68, 59), PackedInt32Array(59, 68, 74), PackedInt32Array(59, 74, 67), PackedInt32Array(59, 67, 63), PackedInt32Array(76, 75, 77), PackedInt32Array(77, 75, 78), PackedInt32Array(78, 79, 53), PackedInt32Array(53, 79, 69), PackedInt32Array(53, 69, 70), PackedInt32Array(53, 70, 58), PackedInt32Array(81, 80, 66), PackedInt32Array(78, 75, 81), PackedInt32Array(66, 67, 81), PackedInt32Array(81, 67, 74), PackedInt32Array(81, 74, 79), PackedInt32Array(81, 79, 78), PackedInt32Array(85, 84, 82), PackedInt32Array(82, 84, 83), PackedInt32Array(89, 88, 86), PackedInt32Array(86, 88, 87), PackedInt32Array(93, 92, 90), PackedInt32Array(90, 92, 91), PackedInt32Array(95, 94, 96), PackedInt32Array(96, 94, 97), PackedInt32Array(100, 99, 98), PackedInt32Array(94, 101, 97), PackedInt32Array(97, 101, 102), PackedInt32Array(104, 103, 99), PackedInt32Array(99, 103, 98), PackedInt32Array(106, 105, 107), PackedInt32Array(107, 105, 98), PackedInt32Array(105, 97, 102), PackedInt32Array(109, 108, 102), PackedInt32Array(102, 108, 105), PackedInt32Array(105, 108, 98), PackedInt32Array(98, 108, 100), PackedInt32Array(109, 102, 110), PackedInt32Array(110, 102, 111), PackedInt32Array(115, 114, 112), PackedInt32Array(112, 114, 113), PackedInt32Array(119, 118, 116), PackedInt32Array(116, 118, 117), PackedInt32Array(123, 122, 120), PackedInt32Array(120, 122, 121)] +vertices = PackedVector3Array(-22.2629, -1.58859, -34.1964, -20.7629, -1.58859, -34.4464, -20.7629, -1.58859, -34.9464, -35.0129, -1.58859, -34.9464, -33.7629, -1.58859, -34.4464, -35.0129, -1.58859, -31.6964, -35.0129, -1.58859, -30.1964, -34.2629, -1.58859, -29.9464, -33.7629, -1.58859, -31.9464, 34.4871, -1.58859, -1.44641, 35.2371, -1.58859, -1.69641, 35.2371, -1.58859, -3.19641, 15.2371, -1.58859, -2.94641, 29.9871, -1.58859, -1.69641, 32.9871, -1.58859, -1.44641, 25.2371, -1.58859, 14.3036, 25.2371, -1.58859, 15.5536, 26.7371, -1.58859, 15.5536, 26.9871, -1.58859, 14.3036, -12.7629, -1.58859, -12.9464, 0.737064, -1.58859, -12.9464, -4.76294, -1.58859, -14.9464, -7.76294, -1.58859, -14.9464, -37.2629, -1.58859, -22.1964, -39.2629, -1.58859, -27.1964, -39.2629, -1.58859, -12.9464, -36.7629, -1.58859, -14.9464, -34.2629, -1.58859, -22.1964, -35.0129, -1.58859, -21.9464, -35.0129, -1.58859, -20.1964, -33.7629, -1.58859, -19.9464, -7.01294, -1.58859, -15.4464, -5.01294, -1.58859, -16.6964, -7.26294, -1.58859, -19.1964, 3.23706, -1.58859, -6.94641, 0.737064, -1.58859, -4.94641, 12.7371, -1.58859, -4.94641, 15.2371, -1.58859, -7.19641, 3.73706, -1.58859, -16.9464, 3.73706, -1.58859, -18.9464, 3.23706, -1.58859, -19.1964, 0.737064, -1.58859, -16.9464, 2.98706, -1.58859, -16.6964, -1.01294, -1.58859, -16.6964, -3.26294, -1.58859, -16.9464, -3.01294, -1.58859, -15.4464, -0.762936, -1.58859, -14.9464, -15.0129, -1.58859, -11.4464, -16.7629, -1.58859, -10.9464, -17.0129, -1.58859, -8.69641, -37.0129, -1.58859, -25.4464, -34.2629, -1.58859, -25.1964, 24.2371, -1.58859, 14.0536, -17.0129, -1.58859, -12.6964, -19.2629, -1.58859, -12.9464, -19.0129, -1.58859, -3.44641, 35.7371, -1.58859, 4.05359, 35.7371, -1.58859, 1.30359, 34.4871, -1.58859, 1.05359, -16.7629, -1.58859, -0.946411, 23.9871, -1.58859, 11.8036, 29.7371, -1.58859, 14.3036, -15.2629, -1.58859, -12.9464, -29.5129, -1.58859, -27.1964, -34.2629, -1.58859, -27.1964, -29.2629, -1.58859, -24.4464, -19.7629, -1.58859, -2.94641, -23.2629, -1.58859, -3.19641, -23.0129, -1.58859, 0.553589, -31.0129, -1.58859, 7.55359, -28.7629, -1.58859, 7.30359, -28.7629, -1.58859, 3.05359, -21.0129, -1.58859, -0.696411, -12.7629, -1.58859, -8.94641, 29.9871, -1.58859, 15.0536, 35.7371, -1.58859, 15.0536, 35.9871, -1.58859, 11.8036, -28.7629, -1.58859, 1.05359, -29.0129, -1.58859, -12.6964, -31.0129, -1.58859, -12.6964, 32.7371, -1.58859, 1.05359, -23.7629, -1.58859, 1.05359, -20.7629, -1.58859, 3.05359, 0.987064, -1.58859, -15.4464, -36.7629, -1.58859, -21.9464, 12.7371, -1.58859, -0.946411, 20.9871, -1.58859, 4.30359, 20.9871, -1.58859, 11.8036, 24.2371, -1.58859, 4.05359, 39.2371, -1.58859, 11.8036, 39.2371, -1.58859, 4.30359, -26.7629, -1.58859, -27.4464, -22.2629, -1.58859, -31.6964, 24.2371, -1.58859, 0.803589, -33.7629, -1.58859, -17.4464, -22.2629, -1.58859, -17.4464, -22.2629, -1.58859, -19.9464, -26.5129, -1.58859, -24.6964, -20.7629, -1.58859, -20.1964, -20.7629, -1.58859, -31.4464, 29.7371, -1.58859, -0.946411, -35.0129, -1.58859, -16.9464, -20.7629, -1.58859, -16.9464, 20.4871, 6.66141, 0.803589, 20.4871, 6.66141, 3.30359, 23.2371, 6.66141, 3.30359, 23.2371, 6.66141, 0.803589, 36.7371, 6.66141, 0.803589, 36.7371, 6.66141, 3.30359, 39.2371, 6.66141, 3.30359, 39.2371, 6.66141, 0.803589, 20.9871, -1.58859, 1.05359, 20.9871, -1.58859, 3.05359, 22.9871, -1.58859, 3.05359, 22.9871, -1.58859, 1.05359, 20.7371, 6.66141, 12.8036, 20.7371, 6.66141, 15.5536, 23.2371, 6.66141, 15.3036, 23.2371, 6.66141, 12.8036, 36.7371, 6.66141, 12.8036, 36.7371, 6.66141, 15.3036, 39.2371, 6.66141, 15.3036, 39.2371, 6.66141, 12.8036, 36.9871, -1.58859, 13.0536, 36.9871, -1.58859, 15.0536, 38.9871, -1.58859, 15.0536, 38.9871, -1.58859, 13.0536) +polygons = [PackedInt32Array(1, 0, 2), PackedInt32Array(2, 0, 4), PackedInt32Array(2, 4, 3), PackedInt32Array(6, 5, 7), PackedInt32Array(7, 5, 8), PackedInt32Array(10, 9, 11), PackedInt32Array(11, 9, 14), PackedInt32Array(11, 14, 13), PackedInt32Array(11, 13, 12), PackedInt32Array(16, 15, 17), PackedInt32Array(17, 15, 18), PackedInt32Array(22, 21, 19), PackedInt32Array(19, 21, 20), PackedInt32Array(26, 25, 23), PackedInt32Array(23, 25, 24), PackedInt32Array(28, 27, 29), PackedInt32Array(29, 27, 30), PackedInt32Array(21, 31, 32), PackedInt32Array(32, 31, 33), PackedInt32Array(35, 34, 36), PackedInt32Array(36, 34, 37), PackedInt32Array(39, 38, 40), PackedInt32Array(40, 38, 42), PackedInt32Array(40, 42, 41), PackedInt32Array(44, 43, 45), PackedInt32Array(45, 43, 46), PackedInt32Array(49, 48, 47), PackedInt32Array(24, 51, 50), PackedInt32Array(18, 15, 52), PackedInt32Array(21, 22, 31), PackedInt32Array(53, 48, 54), PackedInt32Array(54, 48, 49), PackedInt32Array(54, 49, 55), PackedInt32Array(58, 57, 56), PackedInt32Array(49, 59, 55), PackedInt32Array(52, 60, 18), PackedInt32Array(18, 60, 61), PackedInt32Array(53, 54, 62), PackedInt32Array(62, 54, 22), PackedInt32Array(43, 44, 41), PackedInt32Array(41, 44, 40), PackedInt32Array(40, 44, 33), PackedInt32Array(45, 46, 21), PackedInt32Array(21, 46, 20), PackedInt32Array(44, 32, 33), PackedInt32Array(7, 8, 64), PackedInt32Array(64, 8, 63), PackedInt32Array(64, 63, 65), PackedInt32Array(68, 67, 66), PackedInt32Array(71, 70, 69), PackedInt32Array(27, 51, 30), PackedInt32Array(30, 51, 65), PackedInt32Array(55, 72, 66), PackedInt32Array(66, 72, 68), PackedInt32Array(19, 47, 62), PackedInt32Array(19, 73, 47), PackedInt32Array(47, 73, 49), PackedInt32Array(74, 61, 75), PackedInt32Array(75, 61, 76), PackedInt32Array(24, 50, 23), PackedInt32Array(62, 22, 19), PackedInt32Array(71, 69, 77), PackedInt32Array(77, 69, 78), PackedInt32Array(78, 69, 79), PackedInt32Array(9, 58, 14), PackedInt32Array(14, 58, 80), PackedInt32Array(77, 81, 71), PackedInt32Array(71, 81, 82), PackedInt32Array(46, 83, 20), PackedInt32Array(83, 41, 42), PackedInt32Array(23, 84, 26), PackedInt32Array(85, 36, 12), PackedInt32Array(12, 36, 37), PackedInt32Array(87, 86, 60), PackedInt32Array(60, 86, 88), PackedInt32Array(68, 72, 81), PackedInt32Array(81, 72, 82), PackedInt32Array(89, 76, 90), PackedInt32Array(90, 76, 56), PackedInt32Array(59, 72, 55), PackedInt32Array(92, 91, 0), PackedInt32Array(0, 91, 63), PackedInt32Array(0, 63, 8), PackedInt32Array(0, 8, 4), PackedInt32Array(83, 42, 20), PackedInt32Array(20, 42, 34), PackedInt32Array(20, 34, 35), PackedInt32Array(88, 93, 80), PackedInt32Array(30, 65, 94), PackedInt32Array(94, 65, 97), PackedInt32Array(94, 97, 96), PackedInt32Array(94, 96, 95), PackedInt32Array(25, 26, 79), PackedInt32Array(79, 26, 78), PackedInt32Array(78, 26, 54), PackedInt32Array(54, 26, 22), PackedInt32Array(24, 64, 51), PackedInt32Array(51, 64, 65), PackedInt32Array(58, 56, 76), PackedInt32Array(92, 99, 91), PackedInt32Array(91, 99, 97), PackedInt32Array(97, 99, 96), PackedInt32Array(96, 99, 98), PackedInt32Array(80, 58, 88), PackedInt32Array(88, 58, 60), PackedInt32Array(60, 58, 61), PackedInt32Array(61, 58, 76), PackedInt32Array(13, 100, 12), PackedInt32Array(12, 100, 85), PackedInt32Array(94, 95, 101), PackedInt32Array(101, 95, 102), PackedInt32Array(106, 105, 103), PackedInt32Array(103, 105, 104), PackedInt32Array(110, 109, 107), PackedInt32Array(107, 109, 108), PackedInt32Array(114, 113, 111), PackedInt32Array(111, 113, 112), PackedInt32Array(118, 117, 115), PackedInt32Array(115, 117, 116), PackedInt32Array(122, 121, 119), PackedInt32Array(119, 121, 120), PackedInt32Array(126, 125, 123), PackedInt32Array(123, 125, 124)] sample_partition_type = 2 geometry_parsed_geometry_type = 1 geometry_collision_mask = 2147483648 @@ -43,130 +43,137 @@ corridor_cost_multiplier = 0.1 show_debug_in_editor = false hide_debug_visuals_for_all_generated_rooms = false -[node name="BasinRoom_0" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("8_5rblf")] -transform = Transform3D(1.19249e-08, 0, -1, 0, 1, 0, 1, 0, 1.19249e-08, 8, 0, 22) +[node name="Floor Exit A_0" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("12_n02rw")] +transform = Transform3D(1.19249e-08, 0, -1, 0, 1, 0, 1, 0, 1.19249e-08, 22, 0, -18) -[node name="Antechamber A_1" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("3_gkkr3")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 32) +[node name="Item Transfer Room_1" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("6_atq1f")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30, 0, 16) -[node name="Floor Exit A_2" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("12_n02rw")] -transform = Transform3D(1.19249e-08, 0, -1, 0, 1, 0, 1, 0, 1.19249e-08, 22, 0, -30) +[node name="BasinRoom_2" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("8_5rblf")] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -28, 0, -26) -[node name="Item Transfer Room_3" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("6_atq1f")] -transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -16, 0, -14) +[node name="Antechamber A_3" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("3_gkkr3")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 8) [node name="Corridor_4" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 22) - -[node name="Corridor_5" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 22) - -[node name="Corridor_6" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 22) - -[node name="Corridor_7" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 22) - -[node name="Corridor_8" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 34, 0, 22) - -[node name="Corridor_9" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 34, 0, 18) - -[node name="Corridor_10" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 34, 0, 14) - -[node name="Corridor_11" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 34, 0, 10) - -[node name="Corridor_12" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 34, 0, 6) - -[node name="Corridor_13" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 34, 0, 2) - -[node name="Corridor_14" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 34, 0, -2) - -[node name="Corridor_15" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 34, 0, -6) - -[node name="Corridor_16" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 34, 0, -10) - -[node name="Corridor_17" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 34, 0, -14) - -[node name="Corridor_18" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, -14) - -[node name="Corridor_19" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, -18) - -[node name="Corridor_20" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, -18) - -[node name="Corridor_21" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, -18) - -[node name="Corridor_22" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, -18) - -[node name="Corridor_23" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, -18) - -[node name="Corridor_24" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, -18) - -[node name="Corridor_25" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, -18) - -[node name="Corridor_26" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, -18) +[node name="Corridor_5" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, -18) + +[node name="Corridor_6" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, -18) + +[node name="Corridor_7" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, -14) + +[node name="Corridor_8" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, -14) + +[node name="Corridor_9" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14, 0, -14) + +[node name="Corridor_10" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14, 0, -10) + +[node name="Corridor_11" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18, 0, -10) + +[node name="Corridor_12" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18, 0, -6) + +[node name="Corridor_13" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18, 0, -2) + +[node name="Corridor_14" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22, 0, -2) + +[node name="Corridor_15" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22, 0, 2) + +[node name="Corridor_16" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26, 0, 2) + +[node name="Corridor_17" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30, 0, 2) + +[node name="Corridor_18" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30, 0, 6) + +[node name="Corridor_19" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30, 0, -2) + +[node name="Corridor_20" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30, 0, -6) + +[node name="Corridor_21" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30, 0, -10) + +[node name="Corridor_22" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30, 0, -14) + +[node name="Corridor_23" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -34, 0, -14) + +[node name="Corridor_24" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -38, 0, -14) + +[node name="Corridor_25" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -38, 0, -18) + +[node name="Corridor_26" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -38, 0, -22) + [node name="Corridor_27" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, -22) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -38, 0, -26) [node name="Corridor_28" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, -26) - -[node name="Corridor_29" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, -30) - -[node name="Corridor_30" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, -30) - -[node name="Corridor_31" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, -30) - -[node name="Corridor_32" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, -30) - -[node name="Corridor_33" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14, 0, -30) - -[node name="Corridor_34" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14, 0, -26) - -[node name="Corridor_35" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18, 0, -26) - -[node name="Corridor_36" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18, 0, -22) - -[node name="Corridor_37" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22, 0, -22) - -[node name="Corridor_38" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26, 0, -22) - -[node name="Corridor_39" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26, 0, -18) - -[node name="Corridor_40" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26, 0, -14) -[node name="RoomsContainer" type="Node3D" parent="NavigationRegion3D/DungeonGenerator"] +[node name="Corridor_29" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22, 0, -14) + +[node name="Corridor_30" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18, 0, -14) + +[node name="Corridor_31" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, -14) + +[node name="Corridor_32" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, -14) + +[node name="Corridor_33" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, -10) + +[node name="Corridor_34" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, -6) + +[node name="Corridor_35" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, -6) + +[node name="Corridor_36" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, -6) + +[node name="Corridor_37" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, -6) + +[node name="Corridor_38" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, -2) + +[node name="Corridor_39" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, -2) + +[node name="Corridor_40" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, -2) + +[node name="Corridor_41" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, -2) + +[node name="Corridor_42" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, -2) + +[node name="Corridor_43" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("13_ofywd")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 34, 0, -2) [node name="StaticBody3D" type="StaticBody3D" parent="NavigationRegion3D"] collision_layer = 2147483648 @@ -175,6 +182,7 @@ collision_mask = 2147483648 [node name="CollisionShape3D" type="CollisionShape3D" parent="NavigationRegion3D/StaticBody3D"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.5, 0) shape = SubResource("BoxShape3D_xw4dv") +disabled = true [node name="EnemyDatabase" parent="." instance=ExtResource("12_aw26s")] unique_name_in_owner = true diff --git a/Zennysoft.Game.Ma/src/map/dungeon/floors/Floor02.tscn b/Zennysoft.Game.Ma/src/map/dungeon/floors/Floor02.tscn index 2833c48a..5b57b7dd 100644 --- a/Zennysoft.Game.Ma/src/map/dungeon/floors/Floor02.tscn +++ b/Zennysoft.Game.Ma/src/map/dungeon/floors/Floor02.tscn @@ -18,8 +18,8 @@ [ext_resource type="PackedScene" uid="uid://bs56ccgosmu47" path="res://src/enemy/enemy_types/01. sproingy/Sproingy.tscn" id="15_23nxb"] [sub_resource type="NavigationMesh" id="NavigationMesh_23nxb"] -vertices = PackedVector3Array(-30, -0.588592, -15, -30.25, -0.588592, -15.5, -32, -0.588592, -15.25, -32.5, -0.588592, 2.5, -29.25, -0.588592, 2.5, -14, -0.588592, -33.25, -14, -0.588592, -32.25, -11.25, -0.588592, -32.25, -14.5, -0.588592, -33.5, -9.25, -0.588592, -35.5, -9.25, -0.588592, -40.75, -14.5, -0.588592, -52.75, 26.75, -0.588592, 21.75, 26.75, -0.588592, 21, 23.25, -0.588592, 21, -48.75, -0.588592, 45, -49.25, -0.588592, 44.5, -66.5, -0.588592, 57.5, -8.75, -0.588592, -35, 27.5, -0.588592, 22, 27.25, -0.588592, 26.5, -5.25, -0.588592, -35, -11.25, -0.588592, -15.75, -5.25, -0.588592, -19.5, -66.5, -0.588592, -66.5, -61.25, -0.588592, -44.75, -60.5, -0.588592, -45.5, 22.75, -0.588592, 20.5, 22.75, -0.588592, 13, 19.25, -0.588592, 13, -18.75, -0.588592, 8.75, -26.5, -0.588592, 9, -26.75, -0.588592, 12.75, 18.75, -0.588592, 12.5, 25.5, -0.588592, -28.75, 25.5, -0.588592, 6.5, 28.5, -0.588592, 6.5, 27.75, -0.588592, 28.75, -42.5, -0.588592, 44.5, -32, -0.588592, -32.5, -22.25, -0.588592, -32.25, -22.25, -0.588592, -33.5, -11.75, -0.588592, -15.25, -22, -0.588592, -15.5, -22.5, -0.588592, -14.75, -19.5, -0.588592, 2.5, -18.5, -0.588592, 3.25, -21.25, -0.588592, -33.75, -21.25, -0.588592, -52.75, 18.75, -0.588592, -28.75, 19.5, -0.588592, -29.5, 9.5, -0.588592, -35.5, 8.5, -0.588592, -35, -8.5, -0.588592, -41.5, 2.75, -0.588592, -41.5, 2.75, -0.588592, -44.75, -33.25, -0.588592, 12.5, -33.25, -0.588592, 3.25, -43.5, -0.588592, 18.5, -42.5, -0.588592, 19.25, -20.5, -0.588592, -53.5, -15.5, -0.588592, -53.5, 67.5, -0.588592, -66.5, -32.75, -0.588592, 13, -43.5, -0.588592, 45, 67.5, -0.588592, 57.5, 44.75, -0.588592, 28.5, 3.5, -0.588592, -45.5, -55.5, -0.588592, -45.5, 9.5, -0.588592, -44.75, 24.5, -0.588592, -29.5, -42.5, -0.588592, -32.75, -42.5, -0.588592, -27.5, -32.5, -0.588592, -32, -4.75, -0.588592, -19, 0.5, -0.588592, -19, -54.75, -0.588592, -45, -54.5, -0.588592, -33.5, -43.5, -0.588592, -33.5, 29.5, -0.588592, 7.5, 44.75, -0.588592, 7.75, 1.5, -0.588592, -35, 1.5, -0.588592, -19.5, -22.5, -0.588592, 2.5, -29.25, -0.588592, -15, -49.25, -0.588592, 19.25, -60.75, -0.588592, -27, -61.25, -0.588592, -27.5, -32.5, -0.588592, -15.75, -43.5, -0.588592, -27, -48.5, -0.588592, 18.5, 8.5, -0.588592, -45.5, -31.5, 6.66141, -31.25, -31.5, 6.66141, -28.75, -28.75, 6.66141, -28.75, -28.75, 6.66141, -31.25, -15.25, 6.66141, -31.25, -15.25, 6.66141, -28.75, -12.75, 6.66141, -28.75, -12.75, 6.66141, -31.25, -31, -0.588592, -31, -31, -0.588592, -29, -29, -0.588592, -29, -29, -0.588592, -31, -22.25, -0.588592, -17.75, -22, -0.588592, -16.75, -16.25, -0.588592, -16.75, -16.25, -0.588592, -20, -28, -0.588592, -20.25, -27.75, -0.588592, -17.75, -27.75, -0.588592, -31, -28, -0.588592, -27.75, -16.25, -0.588592, -30.75, -31, -0.588592, -27.75, -31, -0.588592, -20.25, -16, -0.588592, -27.75, -12.75, -0.588592, -20.25, -12.75, -0.588592, -27.75, -31.25, 6.66141, -19.25, -31.25, 6.66141, -16.75, -28.75, 6.66141, -16.75, -28.75, 6.66141, -19.25, -15.25, 6.66141, -19.25, -15.25, 6.66141, -16.75, -12.75, 6.66141, -16.75, -12.75, 6.66141, -19.25, -15, -0.588592, -19, -15, -0.588592, -17, -13, -0.588592, -17, -13, -0.588592, -19, 30.25, -0.588592, 26.5, 29, -0.588592, 26.75, 29, -0.588592, 27.25, 43.25, -0.588592, 27.25, 43.25, -0.588592, 26.75, 41.75, -0.588592, 26.5, 41.75, -0.588592, 9.75, 30.25, -0.588592, 9.5, 30.25, -0.588592, 12.25, 34.5, -0.588592, 16.75, 37.25, -0.588592, 16.5, 41.75, -0.588592, 12.25, 43.25, -0.588592, 9.5, 43.25, -0.588592, 9, 29.5, -0.588592, 9, 29.75, -0.588592, 21.75, 29, -0.588592, 22, 29, -0.588592, 23.75, 30.25, -0.588592, 24, 34.75, -0.588592, 19.5, 41.75, -0.588592, 24, 37.5, -0.588592, 19.25, 29.5, -0.588592, 12.5, 43.25, -0.588592, 23.75, 43.25, -0.588592, 12.5) -polygons = [PackedInt32Array(1, 0, 2), PackedInt32Array(2, 0, 3), PackedInt32Array(3, 0, 4), PackedInt32Array(7, 6, 5), PackedInt32Array(5, 8, 7), PackedInt32Array(7, 8, 9), PackedInt32Array(9, 8, 10), PackedInt32Array(10, 8, 11), PackedInt32Array(14, 13, 12), PackedInt32Array(17, 16, 15), PackedInt32Array(7, 9, 18), PackedInt32Array(12, 19, 14), PackedInt32Array(14, 19, 20), PackedInt32Array(18, 21, 7), PackedInt32Array(7, 21, 23), PackedInt32Array(7, 23, 22), PackedInt32Array(26, 25, 24), PackedInt32Array(27, 14, 20), PackedInt32Array(29, 28, 27), PackedInt32Array(32, 31, 30), PackedInt32Array(33, 29, 27), PackedInt32Array(36, 35, 34), PackedInt32Array(20, 37, 27), PackedInt32Array(27, 37, 30), PackedInt32Array(30, 37, 32), PackedInt32Array(32, 37, 38), PackedInt32Array(41, 40, 39), PackedInt32Array(43, 42, 44), PackedInt32Array(44, 42, 45), PackedInt32Array(45, 42, 46), PackedInt32Array(41, 39, 47), PackedInt32Array(47, 39, 48), PackedInt32Array(50, 49, 51), PackedInt32Array(51, 49, 52), PackedInt32Array(55, 54, 53), PackedInt32Array(59, 58, 56), PackedInt32Array(56, 58, 57), PackedInt32Array(60, 24, 61), PackedInt32Array(61, 24, 62), PackedInt32Array(63, 59, 56), PackedInt32Array(64, 38, 17), PackedInt32Array(17, 38, 37), PackedInt32Array(17, 37, 66), PackedInt32Array(17, 66, 65), PackedInt32Array(55, 53, 67), PackedInt32Array(67, 53, 11), PackedInt32Array(68, 26, 24), PackedInt32Array(11, 53, 10), PackedInt32Array(70, 69, 34), PackedInt32Array(34, 69, 62), PackedInt32Array(73, 72, 39), PackedInt32Array(39, 72, 71), PackedInt32Array(39, 71, 48), PackedInt32Array(22, 23, 74), PackedInt32Array(22, 74, 42), PackedInt32Array(42, 74, 75), PackedInt32Array(42, 75, 46), PackedInt32Array(46, 75, 30), PackedInt32Array(17, 15, 64), PackedInt32Array(78, 77, 76), PackedInt32Array(50, 51, 70), PackedInt32Array(70, 51, 69), PackedInt32Array(79, 36, 80), PackedInt32Array(80, 36, 34), PackedInt32Array(80, 34, 62), PackedInt32Array(52, 49, 81), PackedInt32Array(81, 49, 82), PackedInt32Array(82, 49, 33), PackedInt32Array(63, 32, 59), PackedInt32Array(59, 32, 38), PackedInt32Array(78, 76, 71), PackedInt32Array(71, 76, 48), PackedInt32Array(48, 76, 60), PackedInt32Array(60, 76, 24), PackedInt32Array(45, 83, 44), PackedInt32Array(0, 84, 4), PackedInt32Array(16, 17, 85), PackedInt32Array(85, 17, 86), PackedInt32Array(86, 17, 87), PackedInt32Array(76, 68, 24), PackedInt32Array(2, 3, 88), PackedInt32Array(88, 3, 57), PackedInt32Array(75, 82, 30), PackedInt32Array(30, 82, 33), PackedInt32Array(30, 33, 27), PackedInt32Array(72, 73, 89), PackedInt32Array(89, 73, 90), PackedInt32Array(89, 90, 85), PackedInt32Array(66, 80, 65), PackedInt32Array(65, 80, 62), PackedInt32Array(25, 87, 24), PackedInt32Array(24, 87, 17), PackedInt32Array(69, 91, 62), PackedInt32Array(11, 61, 67), PackedInt32Array(67, 61, 91), PackedInt32Array(91, 61, 62), PackedInt32Array(85, 86, 89), PackedInt32Array(58, 90, 57), PackedInt32Array(57, 90, 88), PackedInt32Array(88, 90, 73), PackedInt32Array(95, 94, 92), PackedInt32Array(92, 94, 93), PackedInt32Array(99, 98, 96), PackedInt32Array(96, 98, 97), PackedInt32Array(103, 102, 100), PackedInt32Array(100, 102, 101), PackedInt32Array(105, 104, 106), PackedInt32Array(106, 104, 107), PackedInt32Array(104, 109, 108), PackedInt32Array(111, 110, 108), PackedInt32Array(108, 110, 104), PackedInt32Array(104, 110, 107), PackedInt32Array(107, 110, 112), PackedInt32Array(111, 108, 113), PackedInt32Array(113, 108, 114), PackedInt32Array(112, 115, 107), PackedInt32Array(117, 116, 115), PackedInt32Array(115, 116, 107), PackedInt32Array(121, 120, 118), PackedInt32Array(118, 120, 119), PackedInt32Array(125, 124, 122), PackedInt32Array(122, 124, 123), PackedInt32Array(129, 128, 126), PackedInt32Array(126, 128, 127), PackedInt32Array(131, 130, 132), PackedInt32Array(132, 130, 135), PackedInt32Array(132, 135, 134), PackedInt32Array(132, 134, 133), PackedInt32Array(141, 140, 136), PackedInt32Array(136, 140, 139), PackedInt32Array(136, 139, 138), PackedInt32Array(136, 138, 137), PackedInt32Array(142, 136, 143), PackedInt32Array(143, 136, 137), PackedInt32Array(143, 137, 144), PackedInt32Array(146, 145, 147), PackedInt32Array(147, 145, 148), PackedInt32Array(148, 149, 130), PackedInt32Array(130, 149, 151), PackedInt32Array(130, 151, 150), PackedInt32Array(130, 150, 135), PackedInt32Array(138, 139, 152), PackedInt32Array(152, 139, 149), PackedInt32Array(152, 149, 145), PackedInt32Array(145, 149, 148), PackedInt32Array(141, 154, 140), PackedInt32Array(140, 154, 151), PackedInt32Array(151, 154, 150), PackedInt32Array(150, 154, 153)] +vertices = PackedVector3Array(15.25, -0.588592, 51, 15.25, -0.588592, 50, 14.75, -0.588592, 49.75, 12.75, -0.588592, 49, 7.25, -0.588592, 49, 7.25, -0.588592, 51, -46.25, -0.588592, 41.5, -45, -0.588592, 41.25, -45, -0.588592, 40.75, -59.25, -0.588592, 40.75, -59.25, -0.588592, 41.25, -57.75, -0.588592, 41.5, 7.5, -0.588592, 0.75, -19.5, -0.588592, 11, -19.25, -0.588592, 16.5, -45, -0.588592, 55.5, -45, -0.588592, 54.25, -45.75, -0.588592, 54, -46.25, -0.588592, 55.75, -43, -0.588592, 49.5, -45.75, -0.588592, 49.25, -39.25, -0.588592, 51, 15, -0.588592, 42, 15.5, -0.588592, 41.75, 15.25, -0.588592, 40, 11.25, -0.588592, 43.25, -16.25, -0.588592, 53, -16.75, -0.588592, 51.5, -16.75, -0.588592, 55, -45.75, -0.588592, 46.25, -45, -0.588592, 46, -45, -0.588592, 44.25, -46.25, -0.588592, 44, -9, -0.588592, -20.75, -11.25, -0.588592, -21, -11, -0.588592, -19.75, -8.75, -0.588592, -19.5, 19.5, -0.588592, 23, 23.5, -0.588592, 19, 27.5, -0.588592, 11, -57, -0.588592, -36.75, -55.25, -0.588592, -36.75, -55.75, -0.588592, -39, -59.25, -0.588592, -39.25, 7.75, -0.588592, -7, 7.25, -0.588592, -8.5, 7.25, -0.588592, -4.75, 8.75, -0.588592, -5, -32.25, -0.588592, -11, -32.75, -0.588592, -12.5, -32.75, -0.588592, -8.75, -31.25, -0.588592, -9, -20.5, -0.588592, -19.25, -27.25, -0.588592, -7.5, -27.25, -0.588592, -4.75, 15, -0.588592, 31.25, 15.75, -0.588592, 29, 15.25, -0.588592, 27.5, 3.25, -0.588592, 43.25, -19, -0.588592, -24.25, -17, -0.588592, -24.25, -16.5, -0.588592, -24.75, -19.5, -0.588592, -25, -16.75, -0.588592, -23, -19.25, -0.588592, -21, -27.75, -0.588592, -7, -29, -0.588592, -7.25, -29, -0.588592, -4.75, 11.5, -0.588592, -25, 12.5, -0.588592, -25, 67.5, -0.588592, -66.5, 4.5, -0.588592, 43, 5, -0.588592, 43.75, 7, -0.588592, 43.75, 7.5, -0.588592, 43, 20, -0.588592, 44.25, 17.75, -0.588592, 44.25, 17.5, -0.588592, 45.25, -40.75, -0.588592, 52.5, -43, -0.588592, 52.5, -43, -0.588592, 54, -41, -0.588592, 56.25, -55.25, -0.588592, -39.5, -43.5, -0.588592, -25, -45, -0.588592, -19.75, -44.75, -0.588592, -23.25, -47.25, -0.588592, -21, -47, -0.588592, -19.75, -39.25, -0.588592, 32.5, -39.25, -0.588592, 47.25, -35.25, -0.588592, 47.25, -31.25, -0.588592, 32.25, -59.25, -0.588592, -21, -57, -0.588592, -23.25, -43.5, -0.588592, 54.25, -43.25, -0.588592, 57.5, -33, -0.588592, 15.25, -40.5, -0.588592, 56.75, 28, -0.588592, 55.75, 30.75, -0.588592, 55.75, 31, -0.588592, 54.5, 11.25, -0.588592, -7.25, 11, -0.588592, -3.25, -60.5, -0.588592, -19.25, -61, -0.588592, -20.75, -60.5, -0.588592, 39.25, 8.75, -0.588592, -1, 12.75, -0.588592, -1, -44.5, -0.588592, -19.25, 15.25, -0.588592, -3.25, 15, -0.588592, 0.25, -66.5, -0.588592, -66.5, -55.5, -0.588592, -40.75, -20.75, -0.588592, -24.75, 13, -0.588592, 0.25, 15.5, -0.588592, 0.75, 7, -0.588592, -0.75, -28.75, -0.588592, -11.25, -55.25, -0.588592, -24.75, 15, -0.588592, 43.25, 8.75, -0.588592, 43.25, 8.75, -0.588592, 47.25, 11.25, -0.588592, 47.25, 9, -0.588592, -23.25, 11.25, -0.588592, -21, 11, -0.588592, -24.25, 15.75, -0.588592, 39.5, -17, -0.588592, 56.25, -35.25, -0.588592, 52.5, -35.25, -0.588592, 55.25, -45.5, -0.588592, 51, -50.75, -0.588592, 48.5, -50.5, -0.588592, 51.25, -27.5, -0.588592, -13, -21, -0.588592, -20.75, -43.25, -0.588592, -19.5, 28.5, -0.588592, 28.75, 24.75, -0.588592, 28.5, 24.5, -0.588592, 32.75, 32, -0.588592, 39.5, 23.25, -0.588592, 23.25, 24.75, -0.588592, 25, 20.75, -0.588592, 24.75, 20.75, -0.588592, 29, 23, -0.588592, 27.25, 5, -0.588592, 52.75, -36.75, -0.588592, 53, -39.25, -0.588592, 55, -27.25, -0.588592, 11.25, 27.25, -0.588592, 27, 27.25, -0.588592, 23, 32.75, -0.588592, 24.5, 28.75, -0.588592, 24.5, 32.5, -0.588592, 40, 12.5, -0.588592, -9, 12.75, -0.588592, -4.75, 16.75, -0.588592, -4.75, 12.75, -0.588592, -19.5, -36.75, -0.588592, 48.75, -41, -0.588592, 48.75, 29, -0.588592, 20.75, 24.75, -0.588592, 20.75, 17.75, -0.588592, 49.75, 16.75, -0.588592, 50, 16.75, -0.588592, 55.75, 20, -0.588592, 55.75, 23.25, -0.588592, 31, -44.5, -0.588592, 27, 30.75, -0.588592, 52.75, 12.75, -0.588592, 44.75, 17.75, -0.588592, 47, 16.75, -0.588592, 0.5, 31.25, -0.588592, 23, 31.25, -0.588592, 15, 28.75, -0.588592, 12.75, -31.25, -0.588592, 15, -29, -0.588592, 12.75, 19.25, -0.588592, 27.25, 15.25, -0.588592, 32.5, -53.25, -0.588592, 51.5, -53.5, -0.588592, 48.75, -57.75, -0.588592, 44, -59.25, -0.588592, 44.25, -59.25, -0.588592, 55.5, -57.75, -0.588592, 55.75, 33.75, -0.588592, 50, 33.75, -0.588592, 52.75, 67.5, -0.588592, 57.5, -35.5, -0.588592, 56.5, 15.5, -0.588592, 57.5, 8.5, -0.588592, 56.75, 20.25, -0.588592, 57.5, 27.75, -0.588592, 57.5, -44.75, -0.588592, 39.25, 27.75, -0.588592, 44, 27.75, -0.588592, 41, 20.25, -0.588592, 41, 44.5, -0.588592, 11, 15.5, -0.588592, 52.5, 8.75, -0.588592, 52.5, 3.25, -0.588592, 51.25, -23.25, -0.588592, 15, -20.75, -0.588592, 12.75, -23, -0.588592, 16.25, -31.25, -0.588592, 28.5, -31.5, -0.588592, 31, -20.5, -0.588592, 16.75, -21, -0.588592, 16.25, -57.75, -0.588592, 57.5, -46.25, -0.588592, 57.5, 27.25, -0.588592, 19.25, -66.5, -0.588592, 57.5, -60.75, -0.588592, 57.5, 33.5, -0.588592, 54.75, 8.5, -0.588592, -24.75, -41, -0.588592, 31.25, -43.25, -0.588592, 28.75, 31, -0.588592, 44.25, -31.75, -0.588592, 29, 15, -0.588592, 46.75, 7.25, -0.588592, 55, 32.25, -0.588592, 49.75, -31.5, -0.588592, 27.25, -32.5, -0.588592, 16.75, 33.5, -0.588592, 57.5, 41, -0.588592, 16.25, 32.75, -0.588592, 16.5, 43.5, -0.588592, 16.75, 43, -0.588592, 16.25, 43.25, -0.588592, 12.75, 40.75, -0.588592, 15, -60.75, -0.588592, -40.75, 44.75, -0.588592, 16.5, 28.75, 6.66141, 40.5, 28.75, 6.66141, 43.25, 31.25, 6.66141, 43.25, 31.25, 6.66141, 40.5, 16.75, 6.66141, 40.75, 16.75, 6.66141, 43.25, 19.25, 6.66141, 43.25, 19.25, 6.66141, 40.75, 29, -0.588592, 41, 29, -0.588592, 43, 31, -0.588592, 43, 31, -0.588592, 41, 16.75, 6.66141, 56.75, 16.75, 6.66141, 59.25, 19.25, 6.66141, 59.25, 19.25, 6.66141, 56.75, 28.75, 6.66141, 56.75, 28.75, 6.66141, 59.25, 31.25, 6.66141, 59.25, 31.25, 6.66141, 56.75) +polygons = [PackedInt32Array(1, 0, 2), PackedInt32Array(2, 0, 3), PackedInt32Array(3, 0, 4), PackedInt32Array(4, 0, 5), PackedInt32Array(7, 6, 8), PackedInt32Array(8, 6, 11), PackedInt32Array(8, 11, 10), PackedInt32Array(8, 10, 9), PackedInt32Array(14, 13, 12), PackedInt32Array(16, 15, 17), PackedInt32Array(17, 15, 18), PackedInt32Array(21, 20, 19), PackedInt32Array(23, 22, 24), PackedInt32Array(24, 22, 25), PackedInt32Array(28, 27, 26), PackedInt32Array(30, 29, 31), PackedInt32Array(31, 29, 32), PackedInt32Array(36, 35, 33), PackedInt32Array(33, 35, 34), PackedInt32Array(37, 39, 38), PackedInt32Array(41, 40, 42), PackedInt32Array(42, 40, 43), PackedInt32Array(46, 45, 44), PackedInt32Array(47, 46, 44), PackedInt32Array(50, 49, 48), PackedInt32Array(51, 50, 48), PackedInt32Array(52, 54, 53), PackedInt32Array(56, 55, 57), PackedInt32Array(57, 55, 58), PackedInt32Array(60, 59, 61), PackedInt32Array(61, 59, 62), PackedInt32Array(60, 63, 59), PackedInt32Array(59, 63, 64), PackedInt32Array(66, 65, 67), PackedInt32Array(67, 65, 54), PackedInt32Array(70, 69, 68), PackedInt32Array(72, 71, 73), PackedInt32Array(73, 71, 74), PackedInt32Array(77, 76, 75), PackedInt32Array(79, 78, 80), PackedInt32Array(80, 78, 81), PackedInt32Array(42, 82, 41), PackedInt32Array(41, 82, 83), PackedInt32Array(54, 65, 53), PackedInt32Array(87, 86, 84), PackedInt32Array(84, 86, 85), PackedInt32Array(89, 88, 90), PackedInt32Array(90, 88, 91), PackedInt32Array(93, 92, 40), PackedInt32Array(40, 92, 43), PackedInt32Array(92, 93, 86), PackedInt32Array(86, 93, 85), PackedInt32Array(80, 81, 94), PackedInt32Array(94, 81, 95), PackedInt32Array(49, 50, 96), PackedInt32Array(95, 81, 97), PackedInt32Array(100, 99, 98), PackedInt32Array(91, 14, 27), PackedInt32Array(27, 14, 58), PackedInt32Array(58, 14, 57), PackedInt32Array(57, 14, 12), PackedInt32Array(44, 101, 47), PackedInt32Array(47, 101, 102), PackedInt32Array(105, 104, 103), PackedInt32Array(107, 106, 102), PackedInt32Array(102, 106, 47), PackedInt32Array(84, 108, 87), PackedInt32Array(87, 108, 103), PackedInt32Array(110, 107, 109), PackedInt32Array(109, 107, 102), PackedInt32Array(113, 83, 62), PackedInt32Array(62, 83, 112), PackedInt32Array(62, 112, 111), PackedInt32Array(115, 114, 110), PackedInt32Array(110, 114, 107), PackedInt32Array(52, 36, 54), PackedInt32Array(54, 36, 13), PackedInt32Array(13, 36, 116), PackedInt32Array(13, 116, 12), PackedInt32Array(48, 117, 51), PackedInt32Array(51, 117, 66), PackedInt32Array(83, 118, 41), PackedInt32Array(22, 119, 25), PackedInt32Array(25, 122, 120), PackedInt32Array(120, 122, 121), PackedInt32Array(124, 123, 125), PackedInt32Array(120, 74, 25), PackedInt32Array(25, 74, 24), PackedInt32Array(24, 74, 126), PackedInt32Array(28, 127, 27), PackedInt32Array(27, 127, 129), PackedInt32Array(27, 129, 128), PackedInt32Array(27, 128, 91), PackedInt32Array(51, 66, 67), PackedInt32Array(17, 18, 130), PackedInt32Array(130, 18, 132), PackedInt32Array(130, 132, 131), PackedInt32Array(134, 133, 113), PackedInt32Array(113, 133, 49), PackedInt32Array(113, 49, 135), PackedInt32Array(113, 135, 83), PackedInt32Array(29, 20, 32), PackedInt32Array(32, 20, 131), PackedInt32Array(137, 136, 138), PackedInt32Array(138, 136, 139), PackedInt32Array(38, 140, 37), PackedInt32Array(141, 144, 142), PackedInt32Array(142, 144, 143), PackedInt32Array(5, 145, 4), PackedInt32Array(4, 145, 73), PackedInt32Array(73, 145, 72), PackedInt32Array(129, 146, 128), PackedInt32Array(129, 147, 146), PackedInt32Array(146, 147, 21), PackedInt32Array(64, 63, 34), PackedInt32Array(13, 148, 54), PackedInt32Array(144, 141, 149), PackedInt32Array(149, 141, 150), PackedInt32Array(152, 151, 136), PackedInt32Array(136, 151, 139), PackedInt32Array(139, 151, 153), PackedInt32Array(155, 154, 156), PackedInt32Array(156, 154, 157), PackedInt32Array(159, 158, 21), PackedInt32Array(21, 158, 146), PackedInt32Array(160, 150, 161), PackedInt32Array(161, 150, 141), PackedInt32Array(163, 162, 164), PackedInt32Array(164, 162, 165), PackedInt32Array(56, 143, 55), PackedInt32Array(55, 143, 166), PackedInt32Array(108, 49, 103), PackedInt32Array(103, 49, 96), PackedInt32Array(103, 96, 167), PackedInt32Array(103, 167, 105), PackedInt32Array(144, 166, 143), PackedInt32Array(19, 159, 21), PackedInt32Array(169, 77, 170), PackedInt32Array(170, 77, 168), PackedInt32Array(39, 171, 156), PackedInt32Array(172, 150, 160), PackedInt32Array(172, 160, 173), PackedInt32Array(173, 160, 174), PackedInt32Array(176, 175, 67), PackedInt32Array(67, 175, 51), PackedInt32Array(37, 177, 57), PackedInt32Array(83, 82, 112), PackedInt32Array(178, 126, 55), PackedInt32Array(55, 126, 71), PackedInt32Array(55, 71, 58), PackedInt32Array(184, 183, 179), PackedInt32Array(179, 183, 180), PackedInt32Array(180, 183, 181), PackedInt32Array(181, 183, 182), PackedInt32Array(187, 186, 185), PackedInt32Array(46, 116, 45), PackedInt32Array(45, 116, 36), PackedInt32Array(97, 188, 95), PackedInt32Array(95, 188, 127), PackedInt32Array(95, 127, 190), PackedInt32Array(95, 190, 189), PackedInt32Array(191, 165, 192), PackedInt32Array(192, 165, 98), PackedInt32Array(167, 193, 105), PackedInt32Array(114, 115, 12), PackedInt32Array(12, 115, 39), PackedInt32Array(12, 39, 37), PackedInt32Array(12, 37, 57), PackedInt32Array(34, 63, 33), PackedInt32Array(33, 63, 123), PackedInt32Array(33, 123, 124), PackedInt32Array(195, 194, 196), PackedInt32Array(196, 194, 75), PackedInt32Array(157, 69, 156), PackedInt32Array(156, 69, 39), PackedInt32Array(39, 69, 197), PackedInt32Array(197, 69, 70), PackedInt32Array(199, 198, 190), PackedInt32Array(190, 198, 189), PackedInt32Array(58, 200, 27), PackedInt32Array(32, 131, 6), PackedInt32Array(6, 131, 180), PackedInt32Array(6, 180, 181), PackedInt32Array(6, 181, 11), PackedInt32Array(175, 176, 201), PackedInt32Array(201, 176, 202), PackedInt32Array(128, 90, 91), PackedInt32Array(207, 206, 203), PackedInt32Array(203, 206, 204), PackedInt32Array(204, 206, 205), PackedInt32Array(205, 206, 91), PackedInt32Array(184, 179, 208), PackedInt32Array(208, 179, 132), PackedInt32Array(208, 132, 18), PackedInt32Array(208, 18, 209), PackedInt32Array(39, 210, 38), PackedInt32Array(212, 211, 105), PackedInt32Array(105, 211, 104), PackedInt32Array(104, 211, 111), PackedInt32Array(162, 170, 165), PackedInt32Array(165, 170, 98), PackedInt32Array(98, 170, 100), PackedInt32Array(203, 201, 207), PackedInt32Array(207, 201, 202), PackedInt32Array(213, 168, 186), PackedInt32Array(91, 206, 14), PackedInt32Array(125, 123, 68), PackedInt32Array(68, 123, 214), PackedInt32Array(159, 19, 215), PackedInt32Array(215, 19, 216), PackedInt32Array(75, 194, 77), PackedInt32Array(77, 194, 217), PackedInt32Array(77, 217, 168), PackedInt32Array(134, 52, 133), PackedInt32Array(133, 52, 53), PackedInt32Array(205, 215, 218), PackedInt32Array(218, 215, 216), PackedInt32Array(170, 219, 169), PackedInt32Array(205, 218, 204), PackedInt32Array(213, 100, 168), PackedInt32Array(168, 100, 170), PackedInt32Array(5, 220, 145), PackedInt32Array(185, 221, 153), PackedInt32Array(2, 3, 219), PackedInt32Array(219, 3, 169), PackedInt32Array(223, 222, 96), PackedInt32Array(96, 222, 167), PackedInt32Array(178, 138, 126), PackedInt32Array(126, 138, 139), PackedInt32Array(213, 186, 224), PackedInt32Array(224, 186, 187), PackedInt32Array(127, 188, 129), PackedInt32Array(154, 45, 157), PackedInt32Array(157, 45, 36), PackedInt32Array(228, 227, 225), PackedInt32Array(225, 227, 226), PackedInt32Array(226, 227, 151), PackedInt32Array(52, 35, 36), PackedInt32Array(131, 20, 130), PackedInt32Array(130, 20, 21), PackedInt32Array(126, 74, 71), PackedInt32Array(222, 223, 204), PackedInt32Array(204, 223, 203), PackedInt32Array(61, 62, 214), PackedInt32Array(214, 62, 68), PackedInt32Array(68, 62, 111), PackedInt32Array(68, 111, 70), PackedInt32Array(230, 173, 229), PackedInt32Array(229, 173, 174), PackedInt32Array(112, 231, 111), PackedInt32Array(225, 230, 228), PackedInt32Array(228, 230, 229), PackedInt32Array(231, 104, 111), PackedInt32Array(227, 232, 151), PackedInt32Array(151, 232, 153), PackedInt32Array(153, 232, 185), PackedInt32Array(185, 232, 187), PackedInt32Array(26, 145, 28), PackedInt32Array(28, 145, 220), PackedInt32Array(232, 197, 187), PackedInt32Array(187, 197, 70), PackedInt32Array(49, 108, 135), PackedInt32Array(39, 115, 171), PackedInt32Array(236, 235, 233), PackedInt32Array(233, 235, 234), PackedInt32Array(240, 239, 237), PackedInt32Array(237, 239, 238), PackedInt32Array(244, 243, 241), PackedInt32Array(241, 243, 242), PackedInt32Array(248, 247, 245), PackedInt32Array(245, 247, 246), PackedInt32Array(252, 251, 249), PackedInt32Array(249, 251, 250)] sample_partition_type = 2 geometry_parsed_geometry_type = 1 geometry_collision_mask = 2147483648 @@ -46,182 +46,215 @@ voxel_scale = Vector3(4, 4, 4) generate_on_ready = false show_debug_in_editor = false -[node name="Long Room_0" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("10_5omre")] -transform = Transform3D(1.19249e-08, 0, -1, 0, 1, 0, 1, 0, 1.19249e-08, -46, 0, -4) +[node name="Pit Room A_0" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("9_lpelw")] +transform = Transform3D(1.19249e-08, 0, -1, 0, 1, 0, 1, 0, 1.19249e-08, 10, 0, -42) -[node name="Column Room_1" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("6_jgovx")] -transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -20, 0, 42) +[node name="Balcony Room A_1" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("5_geyju")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, -4) -[node name="Floor Exit A_2" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("12_e0s3j")] -transform = Transform3D(1.19249e-08, 0, -1, 0, 1, 0, 1, 0, 1.19249e-08, -38, 0, -42) +[node name="Water Room_2" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("8_lpc1g")] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -46, 0, 4) -[node name="Pit Room A_3" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("9_lpelw")] -transform = Transform3D(1.19249e-08, 0, -1, 0, 1, 0, 1, 0, 1.19249e-08, -2, 0, 6) +[node name="BasinRoom_3" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("4_r7shj")] +transform = Transform3D(1.19249e-08, 0, -1, 0, 1, 0, 1, 0, 1.19249e-08, -52, 0, 50) -[node name="Antechamber A_4" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("3_7txs6")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22, 0, -24) +[node name="Column Room_4" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("6_jgovx")] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -32, 0, -38) -[node name="Antechamber B_5" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("4_k6xgr")] -transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -8, 0, -50) +[node name="Statue Room_5" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("9_4i2f8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 8) -[node name="Balcony Room A_6" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("5_geyju")] -transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 42, 0, -8) +[node name="Antechamber B_6" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("4_k6xgr")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26, 0, 52) -[node name="BasinRoom_7" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("4_r7shj")] -transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 36, 0, 18) +[node name="Antechamber A_7" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("3_7txs6")] +transform = Transform3D(1.19249e-08, 0, -1, 0, 1, 0, 1, 0, 1.19249e-08, 24, 0, 50) -[node name="Water Room_8" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("8_lpc1g")] -transform = Transform3D(1.19249e-08, 0, -1, 0, 1, 0, 1, 0, 1.19249e-08, 32, 0, -42) +[node name="Floor Exit A_8" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("12_e0s3j")] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 42, 0, 34) -[node name="Statue Room_9" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("9_4i2f8")] -transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 8, 0, -20) +[node name="Long Room_9" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("10_5omre")] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -8, 0, 30) [node name="Corridor_10" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -46, 0, 22) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, -22) [node name="Corridor_11" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -46, 0, 26) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, -22) [node name="Corridor_12" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -46, 0, 30) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, -22) [node name="Corridor_13" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -46, 0, 34) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, -22) [node name="Corridor_14" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -46, 0, 38) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, -22) [node name="Corridor_15" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -46, 0, 42) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, -22) [node name="Corridor_16" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -46, 0, -30) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30, 0, -6) [node name="Corridor_17" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -50, 0, -30) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30, 0, -10) [node name="Corridor_18" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -54, 0, -30) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30, 0, -2) [node name="Corridor_19" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -58, 0, -30) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30, 0, 2) [node name="Corridor_20" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -58, 0, -34) - -[node name="Corridor_21" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -58, 0, -38) - -[node name="Corridor_22" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -58, 0, -42) - -[node name="Corridor_23" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30, 0, 10) - -[node name="Corridor_24" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30, 0, 6) +[node name="Corridor_21" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30, 0, 10) + +[node name="Corridor_22" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30, 0, 14) + +[node name="Corridor_23" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26, 0, 14) + +[node name="Corridor_24" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22, 0, 14) + [node name="Corridor_25" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26, 0, 6) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -34, 0, 30) [node name="Corridor_26" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22, 0, 6) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -38, 0, 30) [node name="Corridor_27" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26, 0, 2) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -42, 0, 30) [node name="Corridor_28" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26, 0, -2) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -42, 0, 34) [node name="Corridor_29" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26, 0, -6) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -42, 0, 38) [node name="Corridor_30" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26, 0, -10) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -42, 0, 42) [node name="Corridor_31" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26, 0, -14) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -42, 0, 46) [node name="Corridor_32" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18, 0, -34) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -42, 0, 50) [node name="Corridor_33" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18, 0, -38) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -46, 0, -22) [node name="Corridor_34" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18, 0, -42) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -50, 0, -22) [node name="Corridor_35" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18, 0, -46) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -54, 0, -22) [node name="Corridor_36" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18, 0, -50) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -58, 0, -22) [node name="Corridor_37" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, -38) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -58, 0, -26) [node name="Corridor_38" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, -38) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -58, 0, -30) [node name="Corridor_39" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, -38) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -58, 0, -34) [node name="Corridor_40" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, -38) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -58, 0, -38) [node name="Corridor_41" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, -42) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18, 0, -22) [node name="Corridor_42" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, -26) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14, 0, -22) [node name="Corridor_43" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, -22) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, -6) [node name="Corridor_44" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, -18) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, -2) [node name="Corridor_45" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, -14) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, -2) [node name="Corridor_46" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, -10) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -38, 0, 50) [node name="Corridor_47" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, -6) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -38, 0, 54) [node name="Corridor_48" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, -2) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14, 0, 54) [node name="Corridor_49" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 2) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, 54) [node name="Corridor_50" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 6) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, 54) [node name="Corridor_51" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 10) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, 54) [node name="Corridor_52" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 10) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 54) [node name="Corridor_53" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 14) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 54) [node name="Corridor_54" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 18) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 50) [node name="Corridor_55" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, -34) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 50) [node name="Corridor_56" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, -30) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 50) [node name="Corridor_57" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, -26) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 46) [node name="Corridor_58" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, -22) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 46) + +[node name="Corridor_59" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 30) + +[node name="Corridor_60" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 30) + +[node name="Corridor_61" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22, 0, 26) + +[node name="Corridor_62" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 26) + +[node name="Corridor_63" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26, 0, 22) + +[node name="Corridor_64" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 22) + +[node name="Corridor_65" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 18) + +[node name="Corridor_66" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 14) + +[node name="Corridor_67" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 34, 0, 14) + +[node name="Corridor_68" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 38, 0, 14) + +[node name="Corridor_69" parent="NavigationRegion3D/DungeonGenerator" instance=ExtResource("7_86if8")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 42, 0, 14) [node name="RoomsContainer" type="Node3D" parent="NavigationRegion3D/DungeonGenerator"] diff --git a/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set A/04. Antechamber B.tscn b/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set A/04. Antechamber B.tscn index 1f35c38a..24946307 100644 --- a/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set A/04. Antechamber B.tscn +++ b/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set A/04. Antechamber B.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=83 format=4 uid="uid://i781lbf2wb22"] +[gd_scene load_steps=84 format=4 uid="uid://i781lbf2wb22"] [ext_resource type="Script" uid="uid://ce73fuh74l81l" path="res://addons/SimpleDungeons/DungeonRoom3D.gd" id="1_owolg"] [ext_resource type="Texture2D" uid="uid://b3sg8oamch2i1" path="res://src/map/dungeon/models/Set A/04. Antechamber B/TREE_ROOM_VER2_STONE_PANEL_2png.png" id="2_q760f"] @@ -1087,6 +1087,9 @@ size = Vector3(20, 8, 16) material = ExtResource("22_3xjct") size = Vector2(20, 16) +[sub_resource type="BoxShape3D" id="BoxShape3D_n7s5m"] +size = Vector3(19.9911, 1, 15.9615) + [node name="Antechamber B" type="Node3D"] script = ExtResource("1_owolg") size_in_voxels = Vector3i(5, 1, 4) @@ -1292,3 +1295,9 @@ visible = false layers = 2 mesh = SubResource("PlaneMesh_qpvag") skeleton = NodePath("../../Model/Antechamber B") + +[node name="StaticBody3D" type="StaticBody3D" parent="."] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.044342, -2.14287, 0.0457458) +shape = SubResource("BoxShape3D_n7s5m") diff --git a/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set A/18. Corridor A.tscn b/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set A/18. Corridor A.tscn index 4efbdd4b..6382f99a 100644 --- a/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set A/18. Corridor A.tscn +++ b/Zennysoft.Game.Ma/src/map/dungeon/rooms/Set A/18. Corridor A.tscn @@ -502,7 +502,7 @@ blend_shape_mode = 0 shadow_mesh = SubResource("ArrayMesh_p4f4g") [sub_resource type="BoxShape3D" id="BoxShape3D_gbjb2"] -size = Vector3(4.40063, 4, 1.72632) +size = Vector3(4.40063, 4, 0.195191) [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lepkf"] transparency = 1 @@ -722,6 +722,7 @@ mesh = SubResource("ArrayMesh_pjk1a") skeleton = NodePath("") [node name="Collision" type="Node3D" parent="."] +visible = false [node name="StaticBody3D" type="StaticBody3D" parent="Collision"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.88616, -2.025, -0.989241) @@ -766,7 +767,7 @@ collision_layer = 2147483648 collision_mask = 2147483648 [node name="CollisionShape3D" type="CollisionShape3D" parent="Doors/DOOR?_F_CUT/StaticBody3D"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0286865, 0, 0.439088) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0286865, 0, 0.0675668) shape = SubResource("BoxShape3D_gbjb2") [node name="DOOR?_R_CUT" type="CSGBox3D" parent="Doors"] @@ -785,6 +786,7 @@ collision_layer = 2147483648 collision_mask = 2147483648 [node name="CollisionShape3D" type="CollisionShape3D" parent="Doors/DOOR?_R_CUT/StaticBody3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.45058e-09, 0, -0.217697) shape = SubResource("BoxShape3D_gbjb2") [node name="DOOR?_L_CUT" type="CSGBox3D" parent="Doors"] diff --git a/Zennysoft.Game.Ma/src/player/Player.cs b/Zennysoft.Game.Ma/src/player/Player.cs index 504dfca3..b34dd275 100644 --- a/Zennysoft.Game.Ma/src/player/Player.cs +++ b/Zennysoft.Game.Ma/src/player/Player.cs @@ -35,13 +35,13 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide EquippedWeapon => _equippedWeapon; + public AutoProp EquippedWeapon => _equippedWeapon; private AutoProp _equippedWeapon { get; set; } = new AutoProp(new Weapon()); - public IAutoProp EquippedArmor => _equippedArmor; + public AutoProp EquippedArmor => _equippedArmor; private AutoProp _equippedArmor { get; set; } = new AutoProp(new Armor()); - public IAutoProp EquippedAccessory => _equippedAccessory; + public AutoProp EquippedAccessory => _equippedAccessory; private AutoProp _equippedAccessory { get; set; } = new AutoProp(new Accessory()); private PlayerLogic.Settings Settings { get; set; } = default!; @@ -385,6 +385,13 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide