From 4ac70b1ca7465a8c35da40e20b89c403bedabf28 Mon Sep 17 00:00:00 2001 From: Zenny Date: Mon, 3 Mar 2025 01:17:30 -0800 Subject: [PATCH] Player warp item implementation --- src/enemy/Enemy.cs | 19 +++++-- src/enemy/IEnemy.cs | 2 + src/game/Game.cs | 13 +++-- src/game/IGame.cs | 3 ++ src/inventory_menu/InventoryMenu.cs | 7 +-- src/items/throwable/ThrowableItem.cs | 35 +++++++++---- src/items/throwable/ThrowableItemTag.cs | 5 +- src/map/dungeon/code/BossFloor.cs | 2 +- src/map/dungeon/code/DungeonFloor.cs | 13 +++-- src/map/dungeon/code/DungeonRoom.cs | 50 +++++++++++++++++++ src/map/dungeon/code/ExitRoom.cs | 12 ++--- src/map/dungeon/code/Floor0.cs | 14 ++---- src/map/dungeon/code/IDungeonFloor.cs | 2 +- src/map/dungeon/code/IDungeonRoom.cs | 7 +++ src/map/dungeon/code/MonsterRoom.cs | 34 ++----------- src/map/dungeon/code/Overworld.cs | 2 +- src/map/dungeon/floors/Floor00.tscn | 23 ++++++++- .../rooms/Set A/03. Antechamber A.tscn | 4 +- .../rooms/Set A/04. Antechamber B.tscn | 4 +- .../dungeon/rooms/Set A/05. Pit Room A.tscn | 4 +- .../rooms/Set A/06. Balcony Room A.tscn | 4 +- .../dungeon/rooms/Set A/07. Statue Room.tscn | 4 +- .../dungeon/rooms/Set A/08. Basin Room.tscn | 4 +- .../dungeon/rooms/Set A/09. Column Room.tscn | 4 +- .../rooms/Set A/10. Item Transfer Room.tscn | 4 +- .../dungeon/rooms/Set A/11. Long Room.tscn | 4 +- .../rooms/Set A/12. Jump Scare Room.tscn | 4 +- .../dungeon/rooms/Set A/13. Water Room.tscn | 4 +- .../dungeon/rooms/Set A/14. Ran's Room.tscn | 4 +- .../rooms/Set A/16. Seshat's Room.tscn | 4 +- .../rooms/Set A/17. Gesthemii's Room.tscn | 4 +- .../dungeon/rooms/Set A/19. Floor Exit A.tscn | 4 +- .../rooms/Set B/20. Antechamber 3.tscn | 4 +- .../dungeon/rooms/Set B/21. Gallery Room.tscn | 4 +- .../dungeon/rooms/Set B/22. Pit Room B.tscn | 4 +- .../rooms/Set B/23. Antechamber 4.tscn | 4 +- .../rooms/Set B/24. Balcony Room 2.tscn | 4 +- .../rooms/Set B/25. Pedestal Room.tscn | 4 +- .../rooms/Set B/26. Item Transfer Room B.tscn | 4 +- .../dungeon/rooms/Set B/27. Water Room B.tscn | 4 +- .../dungeon/rooms/Set B/28. Long Room B.tscn | 4 +- .../rooms/Set B/29. Column Circle Room.tscn | 4 +- .../Set B/31. Dismantled Saint's Room.tscn | 4 +- .../rooms/Set B/32. Proscenium's Room.tscn | 4 +- .../dungeon/rooms/Set B/33. Puer's Room.tscn | 4 +- .../dungeon/rooms/Set B/38. Floor Exit B.tscn | 4 +- src/player/IPlayer.cs | 2 + src/player/Player.cs | 8 +++ 48 files changed, 231 insertions(+), 138 deletions(-) create mode 100644 src/map/dungeon/code/DungeonRoom.cs diff --git a/src/enemy/Enemy.cs b/src/enemy/Enemy.cs index 33623020..c63cddb2 100644 --- a/src/enemy/Enemy.cs +++ b/src/enemy/Enemy.cs @@ -21,7 +21,7 @@ public partial class Enemy : CharacterBody3D, IEnemy, IProvide #region Dependencies - [Dependency] IGameEventDepot GameEventDepot => this.DependOn(); + [Dependency] IGame Game => this.DependOn(); [Dependency] protected IPlayer _player => this.DependOn(() => GetParent().GetChildren().OfType().Single()); #endregion @@ -154,7 +154,7 @@ public partial class Enemy : CharacterBody3D, IEnemy, IProvide var tweener = GetTree().CreateTween(); tweener.TweenInterval(1.0f); tweener.TweenCallback(Callable.From(QueueFree)); - GameEventDepot.OnEnemyDefeated(GlobalPosition, _enemyStatResource); + Game.EnemyDefeated(GlobalPosition, _enemyStatResource); } public void StartAttackTimer() @@ -171,7 +171,20 @@ public partial class Enemy : CharacterBody3D, IEnemy, IProvide public void SetEnemyGlobalPosition(Vector3 target) { - GlobalPosition = target; + GlobalPosition = new Vector3(target.X, -0.5f, target.Z); + } + + public IDungeonRoom GetCurrentRoom() + { + var currentRooms = Game.CurrentFloor.Rooms; + foreach (var room in currentRooms) + { + var enemiesInCurrentRoom = room.EnemiesInRoom; + if (enemiesInCurrentRoom.Contains(this)) + return room; + } + + return null; } private void OnAttackTimeout() diff --git a/src/enemy/IEnemy.cs b/src/enemy/IEnemy.cs index eed74c30..a8199df3 100644 --- a/src/enemy/IEnemy.cs +++ b/src/enemy/IEnemy.cs @@ -21,4 +21,6 @@ public interface IEnemy : IKillable public abstract void SetTarget(Vector3 target); public void SetEnemyGlobalPosition(Vector3 target); + + public IDungeonRoom GetCurrentRoom(); } diff --git a/src/game/Game.cs b/src/game/Game.cs index 43a837fe..8bc2789e 100644 --- a/src/game/Game.cs +++ b/src/game/Game.cs @@ -6,6 +6,7 @@ using Chickensoft.Introspection; using Godot; using System; using System.Collections.Immutable; +using static GameJamDungeon.GameLogic.State; [Meta(typeof(IAutoNode))] public partial class Game : Node3D, IGame @@ -124,7 +125,6 @@ public partial class Game : Node3D, IGame FloorClearMenu.SaveAndExit += FloorClearMenu_SaveAndExit; FloorClearMenu.TransitionCompleted += FloorClearMenu_TransitionCompleted; - GameEventDepot.EnemyDefeated += OnEnemyDefeated; GameEventDepot.RestorativePickedUp += GameEventDepot_RestorativePickedUp; DoubleEXPTimer.Timeout += DoubleEXPTimer_Timeout; @@ -132,7 +132,10 @@ public partial class Game : Node3D, IGame public void ToggleInventory() { - GameLogic.Input(new GameLogic.Input.OpenInventory()); + if (GameLogic.Value is InventoryOpened) + GameLogic.Input(new GameLogic.Input.CloseInventory()); + else + GameLogic.Input(new GameLogic.Input.OpenInventory()); } public void ToggleMinimap() @@ -182,10 +185,10 @@ public partial class Game : Node3D, IGame public IDungeonFloor CurrentFloor => Map.CurrentFloor; - private void OnEnemyDefeated(Vector3 vector, EnemyStatResource resource) + public void EnemyDefeated(Vector3 defeatedLocation, EnemyStatResource resource) { Player.GainExp(resource.ExpFromDefeat * GameRepo.EXPRate); - DropRestorative(vector); + DropRestorative(defeatedLocation); } private void DropRestorative(Vector3 vector) @@ -256,7 +259,7 @@ public partial class Game : Node3D, IGame public async void DoubleEXP(TimeSpan lengthOfEffect) { - InventoryMenu_CloseInventory(); + ToggleInventory(); InGameUI.PlayerInfoUI.DisplayMessage("Experience points temporarily doubled."); DoubleEXPTimer.Start(lengthOfEffect.Seconds); GameRepo.EXPRate = 2; diff --git a/src/game/IGame.cs b/src/game/IGame.cs index 7e752b26..c4af7811 100644 --- a/src/game/IGame.cs +++ b/src/game/IGame.cs @@ -3,6 +3,7 @@ namespace GameJamDungeon; using Chickensoft.AutoInject; using Chickensoft.GodotNodeInterfaces; +using Godot; using System; public interface IGame : IProvide, IProvide, IProvide, IProvide, INode3D @@ -30,4 +31,6 @@ public interface IGame : IProvide, IProvide, IProvid public void FloorExitReached(); public void NextFloorLoaded(); + + public void EnemyDefeated(Vector3 defeatedLocation, EnemyStatResource enemyStatResource); } diff --git a/src/inventory_menu/InventoryMenu.cs b/src/inventory_menu/InventoryMenu.cs index 2dfd0530..94dc6b82 100644 --- a/src/inventory_menu/InventoryMenu.cs +++ b/src/inventory_menu/InventoryMenu.cs @@ -395,10 +395,11 @@ public partial class InventoryMenu : Control, IInventoryMenu if (currentItem is IEquipableItem) await EquipOrUnequipItem(); else if (currentItem is IUsableItem usableItem) + { usableItem.Use(); - - if (currentItem is ConsumableItem consumableItem) - DestroyItem(consumableItem); + DestroyItem(usableItem); + EmitSignal(SignalName.ClosedMenu); + } RefreshUIAfterUserSelection(); } diff --git a/src/items/throwable/ThrowableItem.cs b/src/items/throwable/ThrowableItem.cs index eb311cf1..1a35ce85 100644 --- a/src/items/throwable/ThrowableItem.cs +++ b/src/items/throwable/ThrowableItem.cs @@ -70,6 +70,8 @@ public partial class ThrowableItem : Node3D, IUsableItem if (_throwableItemStats.UsableItemTags.Contains(UsableItemTag.DoubleEXP)) Game.DoubleEXP(TimeSpan.FromSeconds(30)); + if (_throwableItemStats.ThrowableItemTags.Contains(ThrowableItemTag.TeleportToRandomLocation)) + TeleportToRandomRoom(Player); if (_throwableItemStats.ThrowableItemTags.Contains(ThrowableItemTag.CanChangeAffinity)) ChangeAffinity(); @@ -79,26 +81,41 @@ public partial class ThrowableItem : Node3D, IUsableItem { var currentFloor = Game.CurrentFloor; var rooms = currentFloor.Rooms; + var currentRoom = enemy.GetCurrentRoom(); + var validRooms = rooms.OfType().ToList(); + if (currentRoom is MonsterRoom currentMonsterRoom) + validRooms.Remove(currentMonsterRoom); - var rng = new RandomNumberGenerator(); - rng.Randomize(); - var randomRoom = rooms[rng.RandiRange(0, rooms.Count - 1)]; + if (validRooms.Count == 0) + return; + + var roomsGodotCollection = new Godot.Collections.Array(validRooms); + var randomRoom = roomsGodotCollection.PickRandom(); var spawnPoints = randomRoom.EnemySpawnPoints.GetChildren().OfType().ToList(); - - var randomSpawnPoint = spawnPoints[rng.RandiRange(0, spawnPoints.Count - 1)]; + var spawnPointsGodotCollection = new Godot.Collections.Array(spawnPoints); + var randomSpawnPoint = spawnPointsGodotCollection.PickRandom(); enemy.SetEnemyGlobalPosition(randomSpawnPoint.GlobalPosition); } - public void TeleportToRandomRoom(IPlayer player) + private void TeleportToRandomRoom(IPlayer player) { var currentFloor = Game.CurrentFloor; var rooms = currentFloor.Rooms; - var rng = new RandomNumberGenerator(); - rng.Randomize(); - var randomRoom = rooms[rng.RandiRange(0, rooms.Count - 1)]; + var currentRoom = rooms.SingleOrDefault(x => x.IsPlayerInRoom); + + var validRooms = rooms.OfType().ToList(); + if (currentRoom is MonsterRoom currentMonsterRoom) + validRooms.Remove(currentMonsterRoom); + + if (validRooms.Count == 0) + return; + + var roomsGodotCollection = new Godot.Collections.Array(validRooms); + var randomRoom = roomsGodotCollection.PickRandom(); var spawnPoint = randomRoom.PlayerSpawn; + Game.ToggleInventory(); player.TeleportPlayer(spawnPoint.GlobalPosition); } diff --git a/src/items/throwable/ThrowableItemTag.cs b/src/items/throwable/ThrowableItemTag.cs index 03454b74..51d3369f 100644 --- a/src/items/throwable/ThrowableItemTag.cs +++ b/src/items/throwable/ThrowableItemTag.cs @@ -4,16 +4,15 @@ public enum ThrowableItemTag { LowerTargetTo1HP, CanChangeAffinity, - TeleportToRandomLocation + TeleportToRandomLocation, + WarpToExitIfFound } public enum UsableItemTag { DoubleEXP, - RandomWarp, IdentifyAllItemsCostHP, BriefImmunity, - WarpToExitIfFound, } public enum EnhancingItemTag diff --git a/src/map/dungeon/code/BossFloor.cs b/src/map/dungeon/code/BossFloor.cs index 9d2a5c54..652f93be 100644 --- a/src/map/dungeon/code/BossFloor.cs +++ b/src/map/dungeon/code/BossFloor.cs @@ -12,7 +12,7 @@ public partial class BossFloor : Node3D, IDungeonFloor private BossRoomA BossRoom; - public ImmutableList Rooms => []; + public ImmutableList Rooms => []; public void InitializeDungeon() { diff --git a/src/map/dungeon/code/DungeonFloor.cs b/src/map/dungeon/code/DungeonFloor.cs index 42553193..ab008dca 100644 --- a/src/map/dungeon/code/DungeonFloor.cs +++ b/src/map/dungeon/code/DungeonFloor.cs @@ -18,14 +18,15 @@ namespace GameJamDungeon private Transform3D _playerSpawnPoint; - public ImmutableList Rooms { get; private set; } + public ImmutableList Rooms { get; private set; } public void InitializeDungeon() { Rooms = []; Rooms = FindAllDungeonRooms([.. GetChildren()], Rooms); _playerSpawnPoint = RandomizePlayerSpawnPoint(); - foreach (var room in Rooms) + var monsterRooms = Rooms.OfType(); + foreach (var room in monsterRooms) room.SpawnEnemies(EnemyDatabase); DungeonGenerator.EmitSignal("done_generating"); } @@ -34,24 +35,22 @@ namespace GameJamDungeon private Transform3D RandomizePlayerSpawnPoint() { - var rng = new RandomNumberGenerator(); - rng.Randomize(); - var rngDistribution = new List(); var randomSpawnLocations = Rooms + .OfType() .Select(x => x.PlayerSpawn); var godotCollection = new Godot.Collections.Array(randomSpawnLocations); var result = godotCollection.PickRandom(); return result.GlobalTransform; } - private static ImmutableList FindAllDungeonRooms(List nodesToSearch, ImmutableList roomsFound) + private static ImmutableList FindAllDungeonRooms(List nodesToSearch, ImmutableList roomsFound) { if (nodesToSearch.Count == 0) return roomsFound; foreach (var node in nodesToSearch) { - if (node is MonsterRoom dungeonRoom) + if (node is IDungeonRoom dungeonRoom) roomsFound = roomsFound.Add(dungeonRoom); if (node.HasSignal("dungeon_done_generating")) diff --git a/src/map/dungeon/code/DungeonRoom.cs b/src/map/dungeon/code/DungeonRoom.cs new file mode 100644 index 00000000..cfdfaa11 --- /dev/null +++ b/src/map/dungeon/code/DungeonRoom.cs @@ -0,0 +1,50 @@ +using Chickensoft.AutoInject; +using Chickensoft.Introspection; +using Godot; +using System.Collections.Immutable; + +namespace GameJamDungeon; + +[Meta(typeof(IAutoNode))] +public abstract partial class DungeonRoom : Node3D, IDungeonRoom +{ + public override void _Notification(int what) => this.Notify(what); + + [Node] public Marker3D PlayerSpawn { get; set; } = default!; + + public bool IsPlayerInRoom => _isPlayerInRoom; + + public ImmutableList EnemiesInRoom => _enemiesInRoom; + + [Node] private Area3D _room { get; set; } = default!; + + private ImmutableList _enemiesInRoom; + private bool _isPlayerInRoom = false; + + public void Setup() + { + _enemiesInRoom = []; + _room.BodyEntered += Room_BodyEntered; + _room.BodyExited += Room_BodyExited; + } + + private void Room_BodyExited(Node3D body) + { + if (body is IEnemy enemy) + _enemiesInRoom = _enemiesInRoom.Remove(enemy); + if (body is IPlayer) + _isPlayerInRoom = false; + } + private void Room_BodyEntered(Node3D body) + { + if (body is IEnemy enemy) + _enemiesInRoom = _enemiesInRoom.Add(enemy); + if (body is IPlayer) + _isPlayerInRoom = true; + } + + public ImmutableList GetEnemiesInCurrentRoom() + { + return _enemiesInRoom; + } +} diff --git a/src/map/dungeon/code/ExitRoom.cs b/src/map/dungeon/code/ExitRoom.cs index 0021347d..71aed2e1 100644 --- a/src/map/dungeon/code/ExitRoom.cs +++ b/src/map/dungeon/code/ExitRoom.cs @@ -5,24 +5,22 @@ using Godot; namespace GameJamDungeon; [Meta(typeof(IAutoNode))] -public partial class ExitRoom : Node3D, IExitRoom +public partial class ExitRoom : DungeonRoom { public override void _Notification(int what) => this.Notify(what); [Dependency] public IGame Game => this.DependOn(); - [Node] public Area3D Exit { get; set; } = default!; + [Node] private Area3D _exit { get; set; } = default!; + [Node] private Area3D _room { get; set; } = default!; - public Marker3D PlayerSpawn { get; set; } - - public void Setup() + public override void _Ready() { - Exit.AreaEntered += Exit_AreaEntered; + _exit.AreaEntered += Exit_AreaEntered; } public void ExitReached() => Game.FloorExitReached(); private void Exit_AreaEntered(Area3D area) => ExitReached(); - public void SpawnEnemies(EnemyDatabase enemyDatabase) => throw new System.NotImplementedException(); } diff --git a/src/map/dungeon/code/Floor0.cs b/src/map/dungeon/code/Floor0.cs index edec826c..b63110b2 100644 --- a/src/map/dungeon/code/Floor0.cs +++ b/src/map/dungeon/code/Floor0.cs @@ -6,7 +6,7 @@ using System.Collections.Immutable; namespace GameJamDungeon; [Meta(typeof(IAutoNode))] -public partial class Floor0 : Node3D, IDungeonFloor, IExitRoom +public partial class Floor0 : Node3D, IDungeonFloor { public override void _Notification(int what) => this.Notify(what); @@ -16,9 +16,9 @@ public partial class Floor0 : Node3D, IDungeonFloor, IExitRoom [Node] private Marker3D PlayerSpawnPoint { get; set; } = default!; - public ImmutableList Rooms => []; + public ImmutableList Rooms => []; - public void Setup() + public override void _Ready() { Show(); Exit.AreaEntered += Exit_AreaEntered; @@ -27,10 +27,6 @@ public partial class Floor0 : Node3D, IDungeonFloor, IExitRoom private void Exit_AreaEntered(Area3D area) => ExitReached(); public void ExitReached() => Game.FloorExitReached(); - public void InitializeDungeon() - { - return; - } - - public Transform3D GetPlayerSpawnPoint() => PlayerSpawnPoint.GlobalTransform; + public void InitializeDungeon() => throw new System.NotImplementedException(); + public Transform3D GetPlayerSpawnPoint() => throw new System.NotImplementedException(); } diff --git a/src/map/dungeon/code/IDungeonFloor.cs b/src/map/dungeon/code/IDungeonFloor.cs index eb2e23e8..8583b226 100644 --- a/src/map/dungeon/code/IDungeonFloor.cs +++ b/src/map/dungeon/code/IDungeonFloor.cs @@ -9,5 +9,5 @@ public interface IDungeonFloor : INode3D public Transform3D GetPlayerSpawnPoint(); - public ImmutableList Rooms { get; } + public ImmutableList Rooms { get; } } diff --git a/src/map/dungeon/code/IDungeonRoom.cs b/src/map/dungeon/code/IDungeonRoom.cs index 5a0b36a1..8869c29a 100644 --- a/src/map/dungeon/code/IDungeonRoom.cs +++ b/src/map/dungeon/code/IDungeonRoom.cs @@ -1,6 +1,13 @@ using Chickensoft.GodotNodeInterfaces; +using Godot; +using System.Collections.Immutable; namespace GameJamDungeon; public interface IDungeonRoom : INode3D { + Marker3D PlayerSpawn { get; } + + bool IsPlayerInRoom { get; } + + ImmutableList EnemiesInRoom { get; } } diff --git a/src/map/dungeon/code/MonsterRoom.cs b/src/map/dungeon/code/MonsterRoom.cs index 7b42aba0..6727d45e 100644 --- a/src/map/dungeon/code/MonsterRoom.cs +++ b/src/map/dungeon/code/MonsterRoom.cs @@ -1,50 +1,24 @@ using Chickensoft.AutoInject; using Chickensoft.Introspection; using Godot; -using System.Collections.Immutable; using System.Linq; namespace GameJamDungeon; [Meta(typeof(IAutoNode))] -public partial class MonsterRoom : Node3D, IDungeonRoom +public partial class MonsterRoom : DungeonRoom { public override void _Notification(int what) => this.Notify(what); - [Node] public Marker3D PlayerSpawn { get; set; } = default!; - [Node] public Node3D ItemSpawnPoints { get; set; } = default!; [Node] public Node3D EnemySpawnPoints { get; set; } = default!; [Node] public ItemDatabase ItemDatabase { get; set; } = default!; - [Node] private Area3D _room { get; set; } = default!; - - private ImmutableList _enemiesInRoom; - - public void Setup() + public override void _Ready() { SpawnItems(); - _enemiesInRoom = []; - _room.BodyEntered += _room_BodyEntered; - _room.BodyExited += _room_BodyExited; - } - - private void _room_BodyExited(Node3D body) - { - if (body is IEnemy enemy) - _enemiesInRoom = _enemiesInRoom.Remove(enemy); - } - private void _room_BodyEntered(Node3D body) - { - if (body is IEnemy enemy) - _enemiesInRoom = _enemiesInRoom.Add(enemy); - } - - public ImmutableList GetEnemiesInCurrentRoom() - { - return _enemiesInRoom; } public void SpawnEnemies(EnemyDatabase enemyDatabase) @@ -54,7 +28,7 @@ public partial class MonsterRoom : Node3D, IDungeonRoom var enemySpawnPoints = EnemySpawnPoints.GetChildren(); var numberOfEnemiesToSpawn = rng.RandiRange(1, enemySpawnPoints.Count); - foreach (Marker3D spawnPoint in enemySpawnPoints) + foreach (var spawnPoint in enemySpawnPoints.Cast()) { if (numberOfEnemiesToSpawn <= 0) break; @@ -75,7 +49,7 @@ public partial class MonsterRoom : Node3D, IDungeonRoom var numberOfItemsToSpawn = rng.RandiRange(1, itemSpawnPoints.Count); itemSpawnPoints.Shuffle(); var database = ItemDatabase.Initialize(); - foreach (Marker3D spawnPoint in itemSpawnPoints) + foreach (var spawnPoint in itemSpawnPoints.Cast()) { if (numberOfItemsToSpawn <= 0) break; diff --git a/src/map/dungeon/code/Overworld.cs b/src/map/dungeon/code/Overworld.cs index 72c11b7a..30ec4cac 100644 --- a/src/map/dungeon/code/Overworld.cs +++ b/src/map/dungeon/code/Overworld.cs @@ -13,7 +13,7 @@ public partial class Overworld : Node3D, IDungeonFloor [Node] public Marker3D ExitSpawnPoint { get; set; } = default!; - public ImmutableList Rooms => []; + public ImmutableList Rooms => []; public void InitializeDungeon() { diff --git a/src/map/dungeon/floors/Floor00.tscn b/src/map/dungeon/floors/Floor00.tscn index fe809927..7f685167 100644 --- a/src/map/dungeon/floors/Floor00.tscn +++ b/src/map/dungeon/floors/Floor00.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=61 format=4 uid="uid://dl6h1djc27ddl"] +[gd_scene load_steps=62 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"] @@ -739,6 +739,9 @@ size = Vector3(1.53375, 1.46143, 3.13956) [sub_resource type="BoxShape3D" id="BoxShape3D_db2o3"] size = Vector3(2.97754, 2.34912, 3.79205) +[sub_resource type="BoxShape3D" id="BoxShape3D_ntxe5"] +size = Vector3(369.423, 20, 47.9875) + [node name="Floor0" type="Node3D"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.63488, -5.13176) script = ExtResource("1_db2o3") @@ -870,3 +873,21 @@ collision_mask = 256 [node name="CollisionShape3D" type="CollisionShape3D" parent="Exit"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.1171, -2.1779, -0.0887146) shape = SubResource("BoxShape3D_db2o3") + +[node name="Model" type="Node3D" parent="."] + +[node name="Collision" type="Node3D" parent="."] + +[node name="Spawn Points" type="Node3D" parent="."] + +[node name="Room" type="Node3D" parent="."] + +[node name="Room" type="Area3D" parent="Room"] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) +collision_layer = 0 +collision_mask = 8 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 149.05, -4.02862, -1.76389) +shape = SubResource("BoxShape3D_ntxe5") diff --git a/src/map/dungeon/rooms/Set A/03. Antechamber A.tscn b/src/map/dungeon/rooms/Set A/03. Antechamber A.tscn index 41c0495b..4652aa3b 100644 --- a/src/map/dungeon/rooms/Set A/03. Antechamber A.tscn +++ b/src/map/dungeon/rooms/Set A/03. Antechamber A.tscn @@ -831,8 +831,8 @@ unique_name_in_owner = true [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 1.9843, 0) diff --git a/src/map/dungeon/rooms/Set A/04. Antechamber B.tscn b/src/map/dungeon/rooms/Set A/04. Antechamber B.tscn index b11f9031..f3d96b73 100644 --- a/src/map/dungeon/rooms/Set A/04. Antechamber B.tscn +++ b/src/map/dungeon/rooms/Set A/04. Antechamber B.tscn @@ -1280,8 +1280,8 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.27566, -0.246464, -3.5794) [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 1.9843, 0) diff --git a/src/map/dungeon/rooms/Set A/05. Pit Room A.tscn b/src/map/dungeon/rooms/Set A/05. Pit Room A.tscn index bec08f47..4744e19b 100644 --- a/src/map/dungeon/rooms/Set A/05. Pit Room A.tscn +++ b/src/map/dungeon/rooms/Set A/05. Pit Room A.tscn @@ -1405,8 +1405,8 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.76788, -1.76654, -10.247) [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 15.689, 0) -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -13.6094, 0) diff --git a/src/map/dungeon/rooms/Set A/06. Balcony Room A.tscn b/src/map/dungeon/rooms/Set A/06. Balcony Room A.tscn index b36f570f..5d4f4e8f 100644 --- a/src/map/dungeon/rooms/Set A/06. Balcony Room A.tscn +++ b/src/map/dungeon/rooms/Set A/06. Balcony Room A.tscn @@ -1273,8 +1273,8 @@ unique_name_in_owner = true [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 5.65958, 0) diff --git a/src/map/dungeon/rooms/Set A/07. Statue Room.tscn b/src/map/dungeon/rooms/Set A/07. Statue Room.tscn index 460fbdd4..a89a5c72 100644 --- a/src/map/dungeon/rooms/Set A/07. Statue Room.tscn +++ b/src/map/dungeon/rooms/Set A/07. Statue Room.tscn @@ -1852,8 +1852,8 @@ unique_name_in_owner = true [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 1.9843, 0) diff --git a/src/map/dungeon/rooms/Set A/08. Basin Room.tscn b/src/map/dungeon/rooms/Set A/08. Basin Room.tscn index b1060c18..88e6fbf3 100644 --- a/src/map/dungeon/rooms/Set A/08. Basin Room.tscn +++ b/src/map/dungeon/rooms/Set A/08. Basin Room.tscn @@ -884,8 +884,8 @@ unique_name_in_owner = true [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0361805, -0.0723581, 0) -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 1.9843, 0) diff --git a/src/map/dungeon/rooms/Set A/09. Column Room.tscn b/src/map/dungeon/rooms/Set A/09. Column Room.tscn index 6480e267..d28517d0 100644 --- a/src/map/dungeon/rooms/Set A/09. Column Room.tscn +++ b/src/map/dungeon/rooms/Set A/09. Column Room.tscn @@ -1729,8 +1729,8 @@ unique_name_in_owner = true [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 2.00828, 0) diff --git a/src/map/dungeon/rooms/Set A/10. Item Transfer Room.tscn b/src/map/dungeon/rooms/Set A/10. Item Transfer Room.tscn index 92f284ad..06090d49 100644 --- a/src/map/dungeon/rooms/Set A/10. Item Transfer Room.tscn +++ b/src/map/dungeon/rooms/Set A/10. Item Transfer Room.tscn @@ -2580,8 +2580,8 @@ unique_name_in_owner = true [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 1.9843, 0) diff --git a/src/map/dungeon/rooms/Set A/11. Long Room.tscn b/src/map/dungeon/rooms/Set A/11. Long Room.tscn index 3982e5b2..b8ee6aea 100644 --- a/src/map/dungeon/rooms/Set A/11. Long Room.tscn +++ b/src/map/dungeon/rooms/Set A/11. Long Room.tscn @@ -967,8 +967,8 @@ unique_name_in_owner = true [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 3.93401, 0) diff --git a/src/map/dungeon/rooms/Set A/12. Jump Scare Room.tscn b/src/map/dungeon/rooms/Set A/12. Jump Scare Room.tscn index 614e75ae..68dc913c 100644 --- a/src/map/dungeon/rooms/Set A/12. Jump Scare Room.tscn +++ b/src/map/dungeon/rooms/Set A/12. Jump Scare Room.tscn @@ -1177,8 +1177,8 @@ unique_name_in_owner = true [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 1.9843, 0) diff --git a/src/map/dungeon/rooms/Set A/13. Water Room.tscn b/src/map/dungeon/rooms/Set A/13. Water Room.tscn index aa98c039..bb3822ec 100644 --- a/src/map/dungeon/rooms/Set A/13. Water Room.tscn +++ b/src/map/dungeon/rooms/Set A/13. Water Room.tscn @@ -1306,8 +1306,8 @@ unique_name_in_owner = true [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 1.9843, 0) diff --git a/src/map/dungeon/rooms/Set A/14. Ran's Room.tscn b/src/map/dungeon/rooms/Set A/14. Ran's Room.tscn index 6085a8f5..70fd5c23 100644 --- a/src/map/dungeon/rooms/Set A/14. Ran's Room.tscn +++ b/src/map/dungeon/rooms/Set A/14. Ran's Room.tscn @@ -1906,8 +1906,8 @@ unique_name_in_owner = true [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 1.9843, 0) diff --git a/src/map/dungeon/rooms/Set A/16. Seshat's Room.tscn b/src/map/dungeon/rooms/Set A/16. Seshat's Room.tscn index 785867af..d4e0d16e 100644 --- a/src/map/dungeon/rooms/Set A/16. Seshat's Room.tscn +++ b/src/map/dungeon/rooms/Set A/16. Seshat's Room.tscn @@ -1263,8 +1263,8 @@ unique_name_in_owner = true [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 1.9843, 0) diff --git a/src/map/dungeon/rooms/Set A/17. Gesthemii's Room.tscn b/src/map/dungeon/rooms/Set A/17. Gesthemii's Room.tscn index 0dbdd332..ca802536 100644 --- a/src/map/dungeon/rooms/Set A/17. Gesthemii's Room.tscn +++ b/src/map/dungeon/rooms/Set A/17. Gesthemii's Room.tscn @@ -1021,8 +1021,8 @@ unique_name_in_owner = true [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 0.894945, 0) diff --git a/src/map/dungeon/rooms/Set A/19. Floor Exit A.tscn b/src/map/dungeon/rooms/Set A/19. Floor Exit A.tscn index 822e568e..747ad638 100644 --- a/src/map/dungeon/rooms/Set A/19. Floor Exit A.tscn +++ b/src/map/dungeon/rooms/Set A/19. Floor Exit A.tscn @@ -603,8 +603,8 @@ shape = SubResource("BoxShape3D_mg5bq") [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -4.02862, -1.19209e-07) diff --git a/src/map/dungeon/rooms/Set B/20. Antechamber 3.tscn b/src/map/dungeon/rooms/Set B/20. Antechamber 3.tscn index 6fb91a81..9f78cb64 100644 --- a/src/map/dungeon/rooms/Set B/20. Antechamber 3.tscn +++ b/src/map/dungeon/rooms/Set B/20. Antechamber 3.tscn @@ -780,8 +780,8 @@ unique_name_in_owner = true [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -10.6408, -1.19209e-07) diff --git a/src/map/dungeon/rooms/Set B/21. Gallery Room.tscn b/src/map/dungeon/rooms/Set B/21. Gallery Room.tscn index ee622ce8..dd92c046 100644 --- a/src/map/dungeon/rooms/Set B/21. Gallery Room.tscn +++ b/src/map/dungeon/rooms/Set B/21. Gallery Room.tscn @@ -1034,8 +1034,8 @@ unique_name_in_owner = true [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -10.6408, -1.19209e-07) diff --git a/src/map/dungeon/rooms/Set B/22. Pit Room B.tscn b/src/map/dungeon/rooms/Set B/22. Pit Room B.tscn index 457c3586..0fe76c8b 100644 --- a/src/map/dungeon/rooms/Set B/22. Pit Room B.tscn +++ b/src/map/dungeon/rooms/Set B/22. Pit Room B.tscn @@ -851,8 +851,8 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.76788, -1.76654, -10.247) [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -10.6408, -1.19209e-07) diff --git a/src/map/dungeon/rooms/Set B/23. Antechamber 4.tscn b/src/map/dungeon/rooms/Set B/23. Antechamber 4.tscn index fa7dbf22..e87af636 100644 --- a/src/map/dungeon/rooms/Set B/23. Antechamber 4.tscn +++ b/src/map/dungeon/rooms/Set B/23. Antechamber 4.tscn @@ -540,8 +540,8 @@ unique_name_in_owner = true [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -10.6408, -1.19209e-07) diff --git a/src/map/dungeon/rooms/Set B/24. Balcony Room 2.tscn b/src/map/dungeon/rooms/Set B/24. Balcony Room 2.tscn index eeebb748..2f86bff7 100644 --- a/src/map/dungeon/rooms/Set B/24. Balcony Room 2.tscn +++ b/src/map/dungeon/rooms/Set B/24. Balcony Room 2.tscn @@ -981,8 +981,8 @@ unique_name_in_owner = true [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -11.8126, -1.19209e-07) diff --git a/src/map/dungeon/rooms/Set B/25. Pedestal Room.tscn b/src/map/dungeon/rooms/Set B/25. Pedestal Room.tscn index f5720b88..ff121a38 100644 --- a/src/map/dungeon/rooms/Set B/25. Pedestal Room.tscn +++ b/src/map/dungeon/rooms/Set B/25. Pedestal Room.tscn @@ -886,8 +886,8 @@ unique_name_in_owner = true [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -10.6408, -1.19209e-07) diff --git a/src/map/dungeon/rooms/Set B/26. Item Transfer Room B.tscn b/src/map/dungeon/rooms/Set B/26. Item Transfer Room B.tscn index b3f26022..ffb00d1c 100644 --- a/src/map/dungeon/rooms/Set B/26. Item Transfer Room B.tscn +++ b/src/map/dungeon/rooms/Set B/26. Item Transfer Room B.tscn @@ -879,8 +879,8 @@ unique_name_in_owner = true [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -10.6408, -1.19209e-07) diff --git a/src/map/dungeon/rooms/Set B/27. Water Room B.tscn b/src/map/dungeon/rooms/Set B/27. Water Room B.tscn index 944acc19..02da54c8 100644 --- a/src/map/dungeon/rooms/Set B/27. Water Room B.tscn +++ b/src/map/dungeon/rooms/Set B/27. Water Room B.tscn @@ -1038,8 +1038,8 @@ unique_name_in_owner = true [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -10.6408, -1.19209e-07) diff --git a/src/map/dungeon/rooms/Set B/28. Long Room B.tscn b/src/map/dungeon/rooms/Set B/28. Long Room B.tscn index c3b3686d..653dc2a3 100644 --- a/src/map/dungeon/rooms/Set B/28. Long Room B.tscn +++ b/src/map/dungeon/rooms/Set B/28. Long Room B.tscn @@ -901,8 +901,8 @@ unique_name_in_owner = true [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -10.6408, -1.19209e-07) diff --git a/src/map/dungeon/rooms/Set B/29. Column Circle Room.tscn b/src/map/dungeon/rooms/Set B/29. Column Circle Room.tscn index fe4087d8..662dd82f 100644 --- a/src/map/dungeon/rooms/Set B/29. Column Circle Room.tscn +++ b/src/map/dungeon/rooms/Set B/29. Column Circle Room.tscn @@ -529,8 +529,8 @@ unique_name_in_owner = true [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -10.6408, -1.19209e-07) diff --git a/src/map/dungeon/rooms/Set B/31. Dismantled Saint's Room.tscn b/src/map/dungeon/rooms/Set B/31. Dismantled Saint's Room.tscn index fb83a35f..462bf615 100644 --- a/src/map/dungeon/rooms/Set B/31. Dismantled Saint's Room.tscn +++ b/src/map/dungeon/rooms/Set B/31. Dismantled Saint's Room.tscn @@ -902,8 +902,8 @@ unique_name_in_owner = true [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -3.8538, -1.19209e-07) diff --git a/src/map/dungeon/rooms/Set B/32. Proscenium's Room.tscn b/src/map/dungeon/rooms/Set B/32. Proscenium's Room.tscn index f3b1862f..fd02a524 100644 --- a/src/map/dungeon/rooms/Set B/32. Proscenium's Room.tscn +++ b/src/map/dungeon/rooms/Set B/32. Proscenium's Room.tscn @@ -1598,8 +1598,8 @@ unique_name_in_owner = true [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -10.6408, -1.19209e-07) diff --git a/src/map/dungeon/rooms/Set B/33. Puer's Room.tscn b/src/map/dungeon/rooms/Set B/33. Puer's Room.tscn index f3db1791..81c864f5 100644 --- a/src/map/dungeon/rooms/Set B/33. Puer's Room.tscn +++ b/src/map/dungeon/rooms/Set B/33. Puer's Room.tscn @@ -1282,8 +1282,8 @@ unique_name_in_owner = true [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -10.6408, -1.19209e-07) diff --git a/src/map/dungeon/rooms/Set B/38. Floor Exit B.tscn b/src/map/dungeon/rooms/Set B/38. Floor Exit B.tscn index 137f5230..40230dd1 100644 --- a/src/map/dungeon/rooms/Set B/38. Floor Exit B.tscn +++ b/src/map/dungeon/rooms/Set B/38. Floor Exit B.tscn @@ -684,8 +684,8 @@ unique_name_in_owner = true [node name="Room" type="Area3D" parent="Room"] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) -collision_layer = 8 -collision_mask = 8 +collision_layer = 0 +collision_mask = 10 [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -3.99197, -1.19209e-07) diff --git a/src/player/IPlayer.cs b/src/player/IPlayer.cs index b11b36f0..73fb3bab 100644 --- a/src/player/IPlayer.cs +++ b/src/player/IPlayer.cs @@ -25,6 +25,8 @@ public interface IPlayer : IKillable public void TeleportPlayer(Vector3 newPosition); + public IDungeonRoom GetCurrentRoom(); + public void HealHP(int amount); public void RaiseHP(int amount); diff --git a/src/player/Player.cs b/src/player/Player.cs index 4708320b..90eff007 100644 --- a/src/player/Player.cs +++ b/src/player/Player.cs @@ -6,6 +6,7 @@ using Chickensoft.SaveFileBuilder; using Godot; using Godot.Collections; using System; +using System.Linq; namespace GameJamDungeon; @@ -201,6 +202,13 @@ public partial class Player : CharacterBody3D, IPlayer EmitSignal(SignalName.PauseButtonPressed); } + public IDungeonRoom GetCurrentRoom() + { + var rooms = Game.CurrentFloor.Rooms; + var playersRoom = rooms.SingleOrDefault(x => x.IsPlayerInRoom); + return playersRoom; + } + public void RaiseHP(int amountToRaise) { Stats.SetMaximumHP(Stats.MaximumHP.Value + amountToRaise);