Player warp item implementation

This commit is contained in:
2025-03-03 01:17:30 -08:00
parent 05295f535a
commit 4ac70b1ca7
48 changed files with 231 additions and 138 deletions

View File

@@ -21,7 +21,7 @@ public partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLogic>
#region Dependencies #region Dependencies
[Dependency] IGameEventDepot GameEventDepot => this.DependOn<IGameEventDepot>(); [Dependency] IGame Game => this.DependOn<IGame>();
[Dependency] protected IPlayer _player => this.DependOn(() => GetParent().GetChildren().OfType<IPlayer>().Single()); [Dependency] protected IPlayer _player => this.DependOn(() => GetParent().GetChildren().OfType<IPlayer>().Single());
#endregion #endregion
@@ -154,7 +154,7 @@ public partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLogic>
var tweener = GetTree().CreateTween(); var tweener = GetTree().CreateTween();
tweener.TweenInterval(1.0f); tweener.TweenInterval(1.0f);
tweener.TweenCallback(Callable.From(QueueFree)); tweener.TweenCallback(Callable.From(QueueFree));
GameEventDepot.OnEnemyDefeated(GlobalPosition, _enemyStatResource); Game.EnemyDefeated(GlobalPosition, _enemyStatResource);
} }
public void StartAttackTimer() public void StartAttackTimer()
@@ -171,7 +171,20 @@ public partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLogic>
public void SetEnemyGlobalPosition(Vector3 target) 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() private void OnAttackTimeout()

View File

@@ -21,4 +21,6 @@ public interface IEnemy : IKillable
public abstract void SetTarget(Vector3 target); public abstract void SetTarget(Vector3 target);
public void SetEnemyGlobalPosition(Vector3 target); public void SetEnemyGlobalPosition(Vector3 target);
public IDungeonRoom GetCurrentRoom();
} }

View File

@@ -6,6 +6,7 @@ using Chickensoft.Introspection;
using Godot; using Godot;
using System; using System;
using System.Collections.Immutable; using System.Collections.Immutable;
using static GameJamDungeon.GameLogic.State;
[Meta(typeof(IAutoNode))] [Meta(typeof(IAutoNode))]
public partial class Game : Node3D, IGame public partial class Game : Node3D, IGame
@@ -124,7 +125,6 @@ public partial class Game : Node3D, IGame
FloorClearMenu.SaveAndExit += FloorClearMenu_SaveAndExit; FloorClearMenu.SaveAndExit += FloorClearMenu_SaveAndExit;
FloorClearMenu.TransitionCompleted += FloorClearMenu_TransitionCompleted; FloorClearMenu.TransitionCompleted += FloorClearMenu_TransitionCompleted;
GameEventDepot.EnemyDefeated += OnEnemyDefeated;
GameEventDepot.RestorativePickedUp += GameEventDepot_RestorativePickedUp; GameEventDepot.RestorativePickedUp += GameEventDepot_RestorativePickedUp;
DoubleEXPTimer.Timeout += DoubleEXPTimer_Timeout; DoubleEXPTimer.Timeout += DoubleEXPTimer_Timeout;
@@ -132,6 +132,9 @@ public partial class Game : Node3D, IGame
public void ToggleInventory() public void ToggleInventory()
{ {
if (GameLogic.Value is InventoryOpened)
GameLogic.Input(new GameLogic.Input.CloseInventory());
else
GameLogic.Input(new GameLogic.Input.OpenInventory()); GameLogic.Input(new GameLogic.Input.OpenInventory());
} }
@@ -182,10 +185,10 @@ public partial class Game : Node3D, IGame
public IDungeonFloor CurrentFloor => Map.CurrentFloor; 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); Player.GainExp(resource.ExpFromDefeat * GameRepo.EXPRate);
DropRestorative(vector); DropRestorative(defeatedLocation);
} }
private void DropRestorative(Vector3 vector) private void DropRestorative(Vector3 vector)
@@ -256,7 +259,7 @@ public partial class Game : Node3D, IGame
public async void DoubleEXP(TimeSpan lengthOfEffect) public async void DoubleEXP(TimeSpan lengthOfEffect)
{ {
InventoryMenu_CloseInventory(); ToggleInventory();
InGameUI.PlayerInfoUI.DisplayMessage("Experience points temporarily doubled."); InGameUI.PlayerInfoUI.DisplayMessage("Experience points temporarily doubled.");
DoubleEXPTimer.Start(lengthOfEffect.Seconds); DoubleEXPTimer.Start(lengthOfEffect.Seconds);
GameRepo.EXPRate = 2; GameRepo.EXPRate = 2;

View File

@@ -3,6 +3,7 @@ namespace GameJamDungeon;
using Chickensoft.AutoInject; using Chickensoft.AutoInject;
using Chickensoft.GodotNodeInterfaces; using Chickensoft.GodotNodeInterfaces;
using Godot;
using System; using System;
public interface IGame : IProvide<IGameRepo>, IProvide<IGameEventDepot>, IProvide<IGame>, IProvide<IPlayer>, INode3D public interface IGame : IProvide<IGameRepo>, IProvide<IGameEventDepot>, IProvide<IGame>, IProvide<IPlayer>, INode3D
@@ -30,4 +31,6 @@ public interface IGame : IProvide<IGameRepo>, IProvide<IGameEventDepot>, IProvid
public void FloorExitReached(); public void FloorExitReached();
public void NextFloorLoaded(); public void NextFloorLoaded();
public void EnemyDefeated(Vector3 defeatedLocation, EnemyStatResource enemyStatResource);
} }

View File

@@ -395,10 +395,11 @@ public partial class InventoryMenu : Control, IInventoryMenu
if (currentItem is IEquipableItem) if (currentItem is IEquipableItem)
await EquipOrUnequipItem(); await EquipOrUnequipItem();
else if (currentItem is IUsableItem usableItem) else if (currentItem is IUsableItem usableItem)
{
usableItem.Use(); usableItem.Use();
DestroyItem(usableItem);
if (currentItem is ConsumableItem consumableItem) EmitSignal(SignalName.ClosedMenu);
DestroyItem(consumableItem); }
RefreshUIAfterUserSelection(); RefreshUIAfterUserSelection();
} }

View File

@@ -70,6 +70,8 @@ public partial class ThrowableItem : Node3D, IUsableItem
if (_throwableItemStats.UsableItemTags.Contains(UsableItemTag.DoubleEXP)) if (_throwableItemStats.UsableItemTags.Contains(UsableItemTag.DoubleEXP))
Game.DoubleEXP(TimeSpan.FromSeconds(30)); Game.DoubleEXP(TimeSpan.FromSeconds(30));
if (_throwableItemStats.ThrowableItemTags.Contains(ThrowableItemTag.TeleportToRandomLocation))
TeleportToRandomRoom(Player);
if (_throwableItemStats.ThrowableItemTags.Contains(ThrowableItemTag.CanChangeAffinity)) if (_throwableItemStats.ThrowableItemTags.Contains(ThrowableItemTag.CanChangeAffinity))
ChangeAffinity(); ChangeAffinity();
@@ -79,26 +81,41 @@ public partial class ThrowableItem : Node3D, IUsableItem
{ {
var currentFloor = Game.CurrentFloor; var currentFloor = Game.CurrentFloor;
var rooms = currentFloor.Rooms; var rooms = currentFloor.Rooms;
var currentRoom = enemy.GetCurrentRoom();
var validRooms = rooms.OfType<MonsterRoom>().ToList();
if (currentRoom is MonsterRoom currentMonsterRoom)
validRooms.Remove(currentMonsterRoom);
var rng = new RandomNumberGenerator(); if (validRooms.Count == 0)
rng.Randomize(); return;
var randomRoom = rooms[rng.RandiRange(0, rooms.Count - 1)];
var roomsGodotCollection = new Godot.Collections.Array<MonsterRoom>(validRooms);
var randomRoom = roomsGodotCollection.PickRandom();
var spawnPoints = randomRoom.EnemySpawnPoints.GetChildren().OfType<Marker3D>().ToList(); var spawnPoints = randomRoom.EnemySpawnPoints.GetChildren().OfType<Marker3D>().ToList();
var spawnPointsGodotCollection = new Godot.Collections.Array<Marker3D>(spawnPoints);
var randomSpawnPoint = spawnPoints[rng.RandiRange(0, spawnPoints.Count - 1)]; var randomSpawnPoint = spawnPointsGodotCollection.PickRandom();
enemy.SetEnemyGlobalPosition(randomSpawnPoint.GlobalPosition); enemy.SetEnemyGlobalPosition(randomSpawnPoint.GlobalPosition);
} }
public void TeleportToRandomRoom(IPlayer player) private void TeleportToRandomRoom(IPlayer player)
{ {
var currentFloor = Game.CurrentFloor; var currentFloor = Game.CurrentFloor;
var rooms = currentFloor.Rooms; var rooms = currentFloor.Rooms;
var rng = new RandomNumberGenerator(); var currentRoom = rooms.SingleOrDefault(x => x.IsPlayerInRoom);
rng.Randomize();
var randomRoom = rooms[rng.RandiRange(0, rooms.Count - 1)]; var validRooms = rooms.OfType<MonsterRoom>().ToList();
if (currentRoom is MonsterRoom currentMonsterRoom)
validRooms.Remove(currentMonsterRoom);
if (validRooms.Count == 0)
return;
var roomsGodotCollection = new Godot.Collections.Array<MonsterRoom>(validRooms);
var randomRoom = roomsGodotCollection.PickRandom();
var spawnPoint = randomRoom.PlayerSpawn; var spawnPoint = randomRoom.PlayerSpawn;
Game.ToggleInventory();
player.TeleportPlayer(spawnPoint.GlobalPosition); player.TeleportPlayer(spawnPoint.GlobalPosition);
} }

View File

@@ -4,16 +4,15 @@ public enum ThrowableItemTag
{ {
LowerTargetTo1HP, LowerTargetTo1HP,
CanChangeAffinity, CanChangeAffinity,
TeleportToRandomLocation TeleportToRandomLocation,
WarpToExitIfFound
} }
public enum UsableItemTag public enum UsableItemTag
{ {
DoubleEXP, DoubleEXP,
RandomWarp,
IdentifyAllItemsCostHP, IdentifyAllItemsCostHP,
BriefImmunity, BriefImmunity,
WarpToExitIfFound,
} }
public enum EnhancingItemTag public enum EnhancingItemTag

View File

@@ -12,7 +12,7 @@ public partial class BossFloor : Node3D, IDungeonFloor
private BossRoomA BossRoom; private BossRoomA BossRoom;
public ImmutableList<MonsterRoom> Rooms => []; public ImmutableList<IDungeonRoom> Rooms => [];
public void InitializeDungeon() public void InitializeDungeon()
{ {

View File

@@ -18,14 +18,15 @@ namespace GameJamDungeon
private Transform3D _playerSpawnPoint; private Transform3D _playerSpawnPoint;
public ImmutableList<MonsterRoom> Rooms { get; private set; } public ImmutableList<IDungeonRoom> Rooms { get; private set; }
public void InitializeDungeon() public void InitializeDungeon()
{ {
Rooms = []; Rooms = [];
Rooms = FindAllDungeonRooms([.. GetChildren()], Rooms); Rooms = FindAllDungeonRooms([.. GetChildren()], Rooms);
_playerSpawnPoint = RandomizePlayerSpawnPoint(); _playerSpawnPoint = RandomizePlayerSpawnPoint();
foreach (var room in Rooms) var monsterRooms = Rooms.OfType<MonsterRoom>();
foreach (var room in monsterRooms)
room.SpawnEnemies(EnemyDatabase); room.SpawnEnemies(EnemyDatabase);
DungeonGenerator.EmitSignal("done_generating"); DungeonGenerator.EmitSignal("done_generating");
} }
@@ -34,24 +35,22 @@ namespace GameJamDungeon
private Transform3D RandomizePlayerSpawnPoint() private Transform3D RandomizePlayerSpawnPoint()
{ {
var rng = new RandomNumberGenerator();
rng.Randomize();
var rngDistribution = new List<float>();
var randomSpawnLocations = Rooms var randomSpawnLocations = Rooms
.OfType<MonsterRoom>()
.Select(x => x.PlayerSpawn); .Select(x => x.PlayerSpawn);
var godotCollection = new Godot.Collections.Array<Marker3D>(randomSpawnLocations); var godotCollection = new Godot.Collections.Array<Marker3D>(randomSpawnLocations);
var result = godotCollection.PickRandom(); var result = godotCollection.PickRandom();
return result.GlobalTransform; return result.GlobalTransform;
} }
private static ImmutableList<MonsterRoom> FindAllDungeonRooms(List<Node> nodesToSearch, ImmutableList<MonsterRoom> roomsFound) private static ImmutableList<IDungeonRoom> FindAllDungeonRooms(List<Node> nodesToSearch, ImmutableList<IDungeonRoom> roomsFound)
{ {
if (nodesToSearch.Count == 0) if (nodesToSearch.Count == 0)
return roomsFound; return roomsFound;
foreach (var node in nodesToSearch) foreach (var node in nodesToSearch)
{ {
if (node is MonsterRoom dungeonRoom) if (node is IDungeonRoom dungeonRoom)
roomsFound = roomsFound.Add(dungeonRoom); roomsFound = roomsFound.Add(dungeonRoom);
if (node.HasSignal("dungeon_done_generating")) if (node.HasSignal("dungeon_done_generating"))

View File

@@ -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<IEnemy> EnemiesInRoom => _enemiesInRoom;
[Node] private Area3D _room { get; set; } = default!;
private ImmutableList<IEnemy> _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<IEnemy> GetEnemiesInCurrentRoom()
{
return _enemiesInRoom;
}
}

View File

@@ -5,24 +5,22 @@ using Godot;
namespace GameJamDungeon; namespace GameJamDungeon;
[Meta(typeof(IAutoNode))] [Meta(typeof(IAutoNode))]
public partial class ExitRoom : Node3D, IExitRoom public partial class ExitRoom : DungeonRoom
{ {
public override void _Notification(int what) => this.Notify(what); public override void _Notification(int what) => this.Notify(what);
[Dependency] public IGame Game => this.DependOn<IGame>(); [Dependency] public IGame Game => this.DependOn<IGame>();
[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 override void _Ready()
public void Setup()
{ {
Exit.AreaEntered += Exit_AreaEntered; _exit.AreaEntered += Exit_AreaEntered;
} }
public void ExitReached() public void ExitReached()
=> Game.FloorExitReached(); => Game.FloorExitReached();
private void Exit_AreaEntered(Area3D area) => ExitReached(); private void Exit_AreaEntered(Area3D area) => ExitReached();
public void SpawnEnemies(EnemyDatabase enemyDatabase) => throw new System.NotImplementedException();
} }

View File

@@ -6,7 +6,7 @@ using System.Collections.Immutable;
namespace GameJamDungeon; namespace GameJamDungeon;
[Meta(typeof(IAutoNode))] [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); 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!; [Node] private Marker3D PlayerSpawnPoint { get; set; } = default!;
public ImmutableList<MonsterRoom> Rooms => []; public ImmutableList<IDungeonRoom> Rooms => [];
public void Setup() public override void _Ready()
{ {
Show(); Show();
Exit.AreaEntered += Exit_AreaEntered; Exit.AreaEntered += Exit_AreaEntered;
@@ -27,10 +27,6 @@ public partial class Floor0 : Node3D, IDungeonFloor, IExitRoom
private void Exit_AreaEntered(Area3D area) => ExitReached(); private void Exit_AreaEntered(Area3D area) => ExitReached();
public void ExitReached() => Game.FloorExitReached(); public void ExitReached() => Game.FloorExitReached();
public void InitializeDungeon() public void InitializeDungeon() => throw new System.NotImplementedException();
{ public Transform3D GetPlayerSpawnPoint() => throw new System.NotImplementedException();
return;
}
public Transform3D GetPlayerSpawnPoint() => PlayerSpawnPoint.GlobalTransform;
} }

View File

@@ -9,5 +9,5 @@ public interface IDungeonFloor : INode3D
public Transform3D GetPlayerSpawnPoint(); public Transform3D GetPlayerSpawnPoint();
public ImmutableList<MonsterRoom> Rooms { get; } public ImmutableList<IDungeonRoom> Rooms { get; }
} }

View File

@@ -1,6 +1,13 @@
using Chickensoft.GodotNodeInterfaces; using Chickensoft.GodotNodeInterfaces;
using Godot;
using System.Collections.Immutable;
namespace GameJamDungeon; namespace GameJamDungeon;
public interface IDungeonRoom : INode3D public interface IDungeonRoom : INode3D
{ {
Marker3D PlayerSpawn { get; }
bool IsPlayerInRoom { get; }
ImmutableList<IEnemy> EnemiesInRoom { get; }
} }

View File

@@ -1,50 +1,24 @@
using Chickensoft.AutoInject; using Chickensoft.AutoInject;
using Chickensoft.Introspection; using Chickensoft.Introspection;
using Godot; using Godot;
using System.Collections.Immutable;
using System.Linq; using System.Linq;
namespace GameJamDungeon; namespace GameJamDungeon;
[Meta(typeof(IAutoNode))] [Meta(typeof(IAutoNode))]
public partial class MonsterRoom : Node3D, IDungeonRoom public partial class MonsterRoom : DungeonRoom
{ {
public override void _Notification(int what) => this.Notify(what); 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 ItemSpawnPoints { get; set; } = default!;
[Node] public Node3D EnemySpawnPoints { get; set; } = default!; [Node] public Node3D EnemySpawnPoints { get; set; } = default!;
[Node] public ItemDatabase ItemDatabase { get; set; } = default!; [Node] public ItemDatabase ItemDatabase { get; set; } = default!;
[Node] private Area3D _room { get; set; } = default!; public override void _Ready()
private ImmutableList<IEnemy> _enemiesInRoom;
public void Setup()
{ {
SpawnItems(); 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<IEnemy> GetEnemiesInCurrentRoom()
{
return _enemiesInRoom;
} }
public void SpawnEnemies(EnemyDatabase enemyDatabase) public void SpawnEnemies(EnemyDatabase enemyDatabase)
@@ -54,7 +28,7 @@ public partial class MonsterRoom : Node3D, IDungeonRoom
var enemySpawnPoints = EnemySpawnPoints.GetChildren(); var enemySpawnPoints = EnemySpawnPoints.GetChildren();
var numberOfEnemiesToSpawn = rng.RandiRange(1, enemySpawnPoints.Count); var numberOfEnemiesToSpawn = rng.RandiRange(1, enemySpawnPoints.Count);
foreach (Marker3D spawnPoint in enemySpawnPoints) foreach (var spawnPoint in enemySpawnPoints.Cast<Marker3D>())
{ {
if (numberOfEnemiesToSpawn <= 0) if (numberOfEnemiesToSpawn <= 0)
break; break;
@@ -75,7 +49,7 @@ public partial class MonsterRoom : Node3D, IDungeonRoom
var numberOfItemsToSpawn = rng.RandiRange(1, itemSpawnPoints.Count); var numberOfItemsToSpawn = rng.RandiRange(1, itemSpawnPoints.Count);
itemSpawnPoints.Shuffle(); itemSpawnPoints.Shuffle();
var database = ItemDatabase.Initialize(); var database = ItemDatabase.Initialize();
foreach (Marker3D spawnPoint in itemSpawnPoints) foreach (var spawnPoint in itemSpawnPoints.Cast<Marker3D>())
{ {
if (numberOfItemsToSpawn <= 0) if (numberOfItemsToSpawn <= 0)
break; break;

View File

@@ -13,7 +13,7 @@ public partial class Overworld : Node3D, IDungeonFloor
[Node] public Marker3D ExitSpawnPoint { get; set; } = default!; [Node] public Marker3D ExitSpawnPoint { get; set; } = default!;
public ImmutableList<MonsterRoom> Rooms => []; public ImmutableList<IDungeonRoom> Rooms => [];
public void InitializeDungeon() public void InitializeDungeon()
{ {

View File

@@ -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="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"] [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"] [sub_resource type="BoxShape3D" id="BoxShape3D_db2o3"]
size = Vector3(2.97754, 2.34912, 3.79205) 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"] [node name="Floor0" type="Node3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.63488, -5.13176) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.63488, -5.13176)
script = ExtResource("1_db2o3") script = ExtResource("1_db2o3")
@@ -870,3 +873,21 @@ collision_mask = 256
[node name="CollisionShape3D" type="CollisionShape3D" parent="Exit"] [node name="CollisionShape3D" type="CollisionShape3D" parent="Exit"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.1171, -2.1779, -0.0887146) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.1171, -2.1779, -0.0887146)
shape = SubResource("BoxShape3D_db2o3") 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")

View File

@@ -831,8 +831,8 @@ unique_name_in_owner = true
[node name="Room" type="Area3D" parent="Room"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 1.9843, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 1.9843, 0)

View File

@@ -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"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 1.9843, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 1.9843, 0)

View File

@@ -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"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 15.689, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 15.689, 0)
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -13.6094, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -13.6094, 0)

View File

@@ -1273,8 +1273,8 @@ unique_name_in_owner = true
[node name="Room" type="Area3D" parent="Room"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 5.65958, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 5.65958, 0)

View File

@@ -1852,8 +1852,8 @@ unique_name_in_owner = true
[node name="Room" type="Area3D" parent="Room"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 1.9843, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 1.9843, 0)

View File

@@ -884,8 +884,8 @@ unique_name_in_owner = true
[node name="Room" type="Area3D" parent="Room"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0361805, -0.0723581, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0361805, -0.0723581, 0)
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 1.9843, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 1.9843, 0)

View File

@@ -1729,8 +1729,8 @@ unique_name_in_owner = true
[node name="Room" type="Area3D" parent="Room"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 2.00828, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 2.00828, 0)

View File

@@ -2580,8 +2580,8 @@ unique_name_in_owner = true
[node name="Room" type="Area3D" parent="Room"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 1.9843, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 1.9843, 0)

View File

@@ -967,8 +967,8 @@ unique_name_in_owner = true
[node name="Room" type="Area3D" parent="Room"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 3.93401, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 3.93401, 0)

View File

@@ -1177,8 +1177,8 @@ unique_name_in_owner = true
[node name="Room" type="Area3D" parent="Room"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 1.9843, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 1.9843, 0)

View File

@@ -1306,8 +1306,8 @@ unique_name_in_owner = true
[node name="Room" type="Area3D" parent="Room"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 1.9843, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 1.9843, 0)

View File

@@ -1906,8 +1906,8 @@ unique_name_in_owner = true
[node name="Room" type="Area3D" parent="Room"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 1.9843, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 1.9843, 0)

View File

@@ -1263,8 +1263,8 @@ unique_name_in_owner = true
[node name="Room" type="Area3D" parent="Room"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 1.9843, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 1.9843, 0)

View File

@@ -1021,8 +1021,8 @@ unique_name_in_owner = true
[node name="Room" type="Area3D" parent="Room"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 0.894945, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, 0.894945, 0)

View File

@@ -603,8 +603,8 @@ shape = SubResource("BoxShape3D_mg5bq")
[node name="Room" type="Area3D" parent="Room"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0)
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [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) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -4.02862, -1.19209e-07)

View File

@@ -780,8 +780,8 @@ unique_name_in_owner = true
[node name="Room" type="Area3D" parent="Room"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0)
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [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) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -10.6408, -1.19209e-07)

View File

@@ -1034,8 +1034,8 @@ unique_name_in_owner = true
[node name="Room" type="Area3D" parent="Room"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0)
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [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) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -10.6408, -1.19209e-07)

View File

@@ -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"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0)
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [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) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -10.6408, -1.19209e-07)

View File

@@ -540,8 +540,8 @@ unique_name_in_owner = true
[node name="Room" type="Area3D" parent="Room"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0)
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [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) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -10.6408, -1.19209e-07)

View File

@@ -981,8 +981,8 @@ unique_name_in_owner = true
[node name="Room" type="Area3D" parent="Room"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0)
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [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) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -11.8126, -1.19209e-07)

View File

@@ -886,8 +886,8 @@ unique_name_in_owner = true
[node name="Room" type="Area3D" parent="Room"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0)
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [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) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -10.6408, -1.19209e-07)

View File

@@ -879,8 +879,8 @@ unique_name_in_owner = true
[node name="Room" type="Area3D" parent="Room"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0)
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [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) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -10.6408, -1.19209e-07)

View File

@@ -1038,8 +1038,8 @@ unique_name_in_owner = true
[node name="Room" type="Area3D" parent="Room"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0)
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [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) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -10.6408, -1.19209e-07)

View File

@@ -901,8 +901,8 @@ unique_name_in_owner = true
[node name="Room" type="Area3D" parent="Room"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0)
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [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) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -10.6408, -1.19209e-07)

View File

@@ -529,8 +529,8 @@ unique_name_in_owner = true
[node name="Room" type="Area3D" parent="Room"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0)
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [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) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -10.6408, -1.19209e-07)

View File

@@ -902,8 +902,8 @@ unique_name_in_owner = true
[node name="Room" type="Area3D" parent="Room"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0)
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [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) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -3.8538, -1.19209e-07)

View File

@@ -1598,8 +1598,8 @@ unique_name_in_owner = true
[node name="Room" type="Area3D" parent="Room"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0)
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [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) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -10.6408, -1.19209e-07)

View File

@@ -1282,8 +1282,8 @@ unique_name_in_owner = true
[node name="Room" type="Area3D" parent="Room"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0)
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [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) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -10.6408, -1.19209e-07)

View File

@@ -684,8 +684,8 @@ unique_name_in_owner = true
[node name="Room" type="Area3D" parent="Room"] [node name="Room" type="Area3D" parent="Room"]
unique_name_in_owner = true unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 11.8436, 0)
collision_layer = 8 collision_layer = 0
collision_mask = 8 collision_mask = 10
[node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Room"] [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) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04566, -3.99197, -1.19209e-07)

View File

@@ -25,6 +25,8 @@ public interface IPlayer : IKillable
public void TeleportPlayer(Vector3 newPosition); public void TeleportPlayer(Vector3 newPosition);
public IDungeonRoom GetCurrentRoom();
public void HealHP(int amount); public void HealHP(int amount);
public void RaiseHP(int amount); public void RaiseHP(int amount);

View File

@@ -6,6 +6,7 @@ using Chickensoft.SaveFileBuilder;
using Godot; using Godot;
using Godot.Collections; using Godot.Collections;
using System; using System;
using System.Linq;
namespace GameJamDungeon; namespace GameJamDungeon;
@@ -201,6 +202,13 @@ public partial class Player : CharacterBody3D, IPlayer
EmitSignal(SignalName.PauseButtonPressed); 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) public void RaiseHP(int amountToRaise)
{ {
Stats.SetMaximumHP(Stats.MaximumHP.Value + amountToRaise); Stats.SetMaximumHP(Stats.MaximumHP.Value + amountToRaise);