Add more floors, light refactoring
This commit is contained in:
@@ -5,3 +5,6 @@ dotnet_diagnostic.CS8632.severity = silent
|
|||||||
|
|
||||||
# CS1998: Async method lacks 'await' operators and will run synchronously
|
# CS1998: Async method lacks 'await' operators and will run synchronously
|
||||||
dotnet_diagnostic.CS1998.severity = silent
|
dotnet_diagnostic.CS1998.severity = silent
|
||||||
|
|
||||||
|
# IDE1006: Naming Styles
|
||||||
|
dotnet_diagnostic.IDE1006.severity = none
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ public partial class InGameAudio : Node
|
|||||||
|
|
||||||
[Dependency] public IGameEventDepot GameEventDepot => this.DependOn<IGameEventDepot>();
|
[Dependency] public IGameEventDepot GameEventDepot => this.DependOn<IGameEventDepot>();
|
||||||
|
|
||||||
|
[Dependency] public IPlayer Player => this.DependOn<IPlayer>();
|
||||||
|
|
||||||
#region BGM Nodes
|
#region BGM Nodes
|
||||||
[Node] public IDimmableAudioStreamPlayer MenuBgm { get; set; } = default!;
|
[Node] public IDimmableAudioStreamPlayer MenuBgm { get; set; } = default!;
|
||||||
|
|
||||||
@@ -54,6 +56,7 @@ public partial class InGameAudio : Node
|
|||||||
{
|
{
|
||||||
InGameAudioLogic.Set(AppRepo);
|
InGameAudioLogic.Set(AppRepo);
|
||||||
InGameAudioLogic.Set(GameEventDepot);
|
InGameAudioLogic.Set(GameEventDepot);
|
||||||
|
InGameAudioLogic.Set(Player);
|
||||||
|
|
||||||
InGameAudioBinding = InGameAudioLogic.Bind();
|
InGameAudioBinding = InGameAudioLogic.Bind();
|
||||||
|
|
||||||
|
|||||||
@@ -11,15 +11,16 @@ public partial class InGameAudioLogic
|
|||||||
{
|
{
|
||||||
OnAttach(() =>
|
OnAttach(() =>
|
||||||
{
|
{
|
||||||
|
var player = Get<IPlayer>();
|
||||||
OnOverworldEntered();
|
OnOverworldEntered();
|
||||||
var gameEventDepot = Get<IGameEventDepot>();
|
var gameEventDepot = Get<IGameEventDepot>();
|
||||||
gameEventDepot.OverworldEntered += OnOverworldEntered;
|
gameEventDepot.OverworldEntered += OnOverworldEntered;
|
||||||
gameEventDepot.DungeonAThemeAreaEntered += OnDungeonAThemeEntered;
|
gameEventDepot.DungeonAThemeAreaEntered += OnDungeonAThemeEntered;
|
||||||
gameEventDepot.MenuScrolled += OnMenuScrolled;
|
gameEventDepot.MenuScrolled += OnMenuScrolled;
|
||||||
gameEventDepot.MenuBackedOut += OnMenuBackedOut;
|
gameEventDepot.MenuBackedOut += OnMenuBackedOut;
|
||||||
gameEventDepot.EquippedWeapon += OnEquippedItem;
|
player.Inventory.EquippedWeapon.Changed += OnEquippedItem;
|
||||||
gameEventDepot.EquippedArmor += OnEquippedItem;
|
player.Inventory.EquippedArmor.Changed += OnEquippedItem;
|
||||||
gameEventDepot.EquippedAccessory += OnEquippedItem;
|
player.Inventory.EquippedAccessory.Changed += OnEquippedItem;
|
||||||
gameEventDepot.InventorySorted += OnInventorySorted;
|
gameEventDepot.InventorySorted += OnInventorySorted;
|
||||||
gameEventDepot.HealingItemConsumed += OnHealingItemConsumed;
|
gameEventDepot.HealingItemConsumed += OnHealingItemConsumed;
|
||||||
gameEventDepot.RestorativePickedUp += OnRestorativePickedUp;
|
gameEventDepot.RestorativePickedUp += OnRestorativePickedUp;
|
||||||
@@ -28,13 +29,14 @@ public partial class InGameAudioLogic
|
|||||||
OnDetach(() =>
|
OnDetach(() =>
|
||||||
{
|
{
|
||||||
var gameEventDepot = Get<IGameEventDepot>();
|
var gameEventDepot = Get<IGameEventDepot>();
|
||||||
|
var player = Get<IPlayer>();
|
||||||
gameEventDepot.OverworldEntered -= OnOverworldEntered;
|
gameEventDepot.OverworldEntered -= OnOverworldEntered;
|
||||||
gameEventDepot.DungeonAThemeAreaEntered -= OnDungeonAThemeEntered;
|
gameEventDepot.DungeonAThemeAreaEntered -= OnDungeonAThemeEntered;
|
||||||
gameEventDepot.MenuScrolled -= OnMenuScrolled;
|
gameEventDepot.MenuScrolled -= OnMenuScrolled;
|
||||||
gameEventDepot.MenuBackedOut -= OnMenuBackedOut;
|
gameEventDepot.MenuBackedOut -= OnMenuBackedOut;
|
||||||
gameEventDepot.EquippedWeapon -= OnEquippedItem;
|
player.Inventory.EquippedWeapon.Changed -= OnEquippedItem;
|
||||||
gameEventDepot.EquippedArmor -= OnEquippedItem;
|
player.Inventory.EquippedArmor.Changed -= OnEquippedItem;
|
||||||
gameEventDepot.EquippedAccessory -= OnEquippedItem;
|
player.Inventory.EquippedAccessory.Changed -= OnEquippedItem;
|
||||||
gameEventDepot.InventorySorted -= OnInventorySorted;
|
gameEventDepot.InventorySorted -= OnInventorySorted;
|
||||||
gameEventDepot.TeleportEntered -= OnTeleportEntered;
|
gameEventDepot.TeleportEntered -= OnTeleportEntered;
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -5,5 +5,9 @@ public enum WeaponTag
|
|||||||
SelfDamage,
|
SelfDamage,
|
||||||
IgnoreAffinity,
|
IgnoreAffinity,
|
||||||
Knockback,
|
Knockback,
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum ItemTag
|
||||||
|
{
|
||||||
BreaksOnChange
|
BreaksOnChange
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ GameJamDungeon_EnemyLogic_State_Alive --> GameJamDungeon_EnemyLogic_State_Idle :
|
|||||||
GameJamDungeon_EnemyLogic_State_Attacking --> GameJamDungeon_EnemyLogic_State_Idle : StopMoving
|
GameJamDungeon_EnemyLogic_State_Attacking --> GameJamDungeon_EnemyLogic_State_Idle : StopMoving
|
||||||
GameJamDungeon_EnemyLogic_State_FollowPlayer --> GameJamDungeon_EnemyLogic_State_FollowPlayer : PhysicsTick
|
GameJamDungeon_EnemyLogic_State_FollowPlayer --> GameJamDungeon_EnemyLogic_State_FollowPlayer : PhysicsTick
|
||||||
GameJamDungeon_EnemyLogic_State_FollowPlayer --> GameJamDungeon_EnemyLogic_State_Idle : LostPlayer
|
GameJamDungeon_EnemyLogic_State_FollowPlayer --> GameJamDungeon_EnemyLogic_State_Idle : LostPlayer
|
||||||
GameJamDungeon_EnemyLogic_State_FollowPlayer --> GameJamDungeon_EnemyLogic_State_Idle : StopMoving
|
|
||||||
GameJamDungeon_EnemyLogic_State_Idle --> GameJamDungeon_EnemyLogic_State_Patrolling : StartPatrol
|
GameJamDungeon_EnemyLogic_State_Idle --> GameJamDungeon_EnemyLogic_State_Patrolling : StartPatrol
|
||||||
GameJamDungeon_EnemyLogic_State_Patrolling --> GameJamDungeon_EnemyLogic_State_Idle : StopMoving
|
GameJamDungeon_EnemyLogic_State_Patrolling --> GameJamDungeon_EnemyLogic_State_Idle : StopMoving
|
||||||
GameJamDungeon_EnemyLogic_State_Patrolling --> GameJamDungeon_EnemyLogic_State_Patrolling : PatrolToRandomSpot
|
GameJamDungeon_EnemyLogic_State_Patrolling --> GameJamDungeon_EnemyLogic_State_Patrolling : PatrolToRandomSpot
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ public partial class EnemyLogic
|
|||||||
public partial record State
|
public partial record State
|
||||||
{
|
{
|
||||||
[Meta, Id("enemy_logic_state_followplayer")]
|
[Meta, Id("enemy_logic_state_followplayer")]
|
||||||
public partial record FollowPlayer : Activated, IGet<Input.PhysicsTick>, IGet<Input.LostPlayer>, IGet<Input.StopMoving>
|
public partial record FollowPlayer : Activated, IGet<Input.PhysicsTick>, IGet<Input.LostPlayer>
|
||||||
{
|
{
|
||||||
public Transition On(in Input.PhysicsTick input)
|
public Transition On(in Input.PhysicsTick input)
|
||||||
{
|
{
|
||||||
@@ -23,11 +23,6 @@ public partial class EnemyLogic
|
|||||||
{
|
{
|
||||||
return To<Idle>();
|
return To<Idle>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Transition On(in Input.StopMoving _)
|
|
||||||
{
|
|
||||||
return To<Idle>();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,21 +35,21 @@ public partial class Game : Node3D, IGame
|
|||||||
[Dependency] public IAppRepo AppRepo => this.DependOn<IAppRepo>();
|
[Dependency] public IAppRepo AppRepo => this.DependOn<IAppRepo>();
|
||||||
|
|
||||||
#region Nodes
|
#region Nodes
|
||||||
[Node] public IMap Map { get; set; } = default!;
|
[Node] private IMap Map { get; set; } = default!;
|
||||||
|
|
||||||
[Node] public IPlayer Player { get; set; } = default!;
|
[Node] private InGameUI InGameUI { get; set; } = default!;
|
||||||
|
|
||||||
[Node] public InGameUI InGameUI { get; set; } = default!;
|
[Node] private IFloorClearMenu FloorClearMenu { get; set; } = default!;
|
||||||
|
|
||||||
[Node] public IFloorClearMenu FloorClearMenu { get; set; } = default!;
|
[Node] private DeathMenu DeathMenu { get; set; } = default!;
|
||||||
|
|
||||||
[Node] public DeathMenu DeathMenu { get; set; } = default!;
|
[Node] private IPauseMenu PauseMenu { get; set; } = default!;
|
||||||
|
|
||||||
[Node] public IPauseMenu PauseMenu { get; set; } = default!;
|
[Node] private InGameAudio InGameAudio { get; set; } = default!;
|
||||||
|
|
||||||
[Node] public InGameAudio InGameAudio { get; set; } = default!;
|
[Node] private Timer DoubleEXPTimer { get; set; } = default!;
|
||||||
|
|
||||||
[Node] public Timer DoubleEXPTimer { get; set; } = default!;
|
[Node] private IPlayer Player { get; set; } = default!;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public RescuedItemDatabase RescuedItems { get; set; } = default!;
|
public RescuedItemDatabase RescuedItems { get; set; } = default!;
|
||||||
@@ -121,7 +121,6 @@ public partial class Game : Node3D, IGame
|
|||||||
|
|
||||||
Player.Inventory.InventoryAtCapacity += PlayerInventory_InventoryAtCapacity;
|
Player.Inventory.InventoryAtCapacity += PlayerInventory_InventoryAtCapacity;
|
||||||
Player.Inventory.PickedUpItem += Inventory_PickedUpItem;
|
Player.Inventory.PickedUpItem += Inventory_PickedUpItem;
|
||||||
Player.Inventory.RaiseStatRequest += Inventory_RaiseStatRequest;
|
|
||||||
FloorClearMenu.GoToNextFloor += FloorClearMenu_GoToNextFloor;
|
FloorClearMenu.GoToNextFloor += FloorClearMenu_GoToNextFloor;
|
||||||
FloorClearMenu.SaveAndExit += FloorClearMenu_SaveAndExit;
|
FloorClearMenu.SaveAndExit += FloorClearMenu_SaveAndExit;
|
||||||
FloorClearMenu.TransitionCompleted += FloorClearMenu_TransitionCompleted;
|
FloorClearMenu.TransitionCompleted += FloorClearMenu_TransitionCompleted;
|
||||||
@@ -166,6 +165,16 @@ public partial class Game : Node3D, IGame
|
|||||||
thrown.Throw();
|
thrown.Throw();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void AnnounceMessageOnInventoryScreen(string message)
|
||||||
|
{
|
||||||
|
InGameUI.InventoryMenu.ShowMessage(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AnnounceMessageOnMainScreen(string message)
|
||||||
|
{
|
||||||
|
InGameUI.PlayerInfoUI.DisplayMessage(message);
|
||||||
|
}
|
||||||
|
|
||||||
private void OnEnemyDefeated(Vector3 vector, EnemyStatResource resource)
|
private void OnEnemyDefeated(Vector3 vector, EnemyStatResource resource)
|
||||||
{
|
{
|
||||||
Player.GainExp(resource.ExpFromDefeat * GameRepo.EXPRate);
|
Player.GainExp(resource.ExpFromDefeat * GameRepo.EXPRate);
|
||||||
@@ -209,8 +218,12 @@ public partial class Game : Node3D, IGame
|
|||||||
private void FloorClearMenu_TransitionCompleted()
|
private void FloorClearMenu_TransitionCompleted()
|
||||||
{
|
{
|
||||||
GameRepo.Resume();
|
GameRepo.Resume();
|
||||||
if (Player.Inventory.EquippedWeapon.Value.WeaponTags.Contains(WeaponTag.BreaksOnChange))
|
if (Player.Inventory.EquippedWeapon.Value.ItemTags.Contains(ItemTag.BreaksOnChange))
|
||||||
Player.Inventory.Unequip(Player.Inventory.EquippedWeapon.Value);
|
Player.Inventory.Unequip(Player.Inventory.EquippedWeapon.Value);
|
||||||
|
if (Player.Inventory.EquippedArmor.Value.ItemTags.Contains(ItemTag.BreaksOnChange))
|
||||||
|
Player.Inventory.Unequip(Player.Inventory.EquippedArmor.Value);
|
||||||
|
if (Player.Inventory.EquippedAccessory.Value.ItemTags.Contains(ItemTag.BreaksOnChange))
|
||||||
|
Player.Inventory.Unequip(Player.Inventory.EquippedAccessory.Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FloorClearMenu_GoToNextFloor()
|
private void FloorClearMenu_GoToNextFloor()
|
||||||
@@ -228,52 +241,12 @@ public partial class Game : Node3D, IGame
|
|||||||
private void GameEventDepot_RestorativePickedUp(Restorative obj)
|
private void GameEventDepot_RestorativePickedUp(Restorative obj)
|
||||||
=> Player.Stats.SetCurrentVT(Player.Stats.CurrentVT.Value + obj.VTRestoreAmount);
|
=> Player.Stats.SetCurrentVT(Player.Stats.CurrentVT.Value + obj.VTRestoreAmount);
|
||||||
|
|
||||||
private void Inventory_RaiseStatRequest(InventoryItemStats itemStats)
|
|
||||||
{
|
|
||||||
HealHP(itemStats.HealHPAmount);
|
|
||||||
HealVT(itemStats.HealVTAmount);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SetPauseMode(bool isPaused)
|
private void SetPauseMode(bool isPaused)
|
||||||
{
|
{
|
||||||
if (GetTree() != null)
|
if (GetTree() != null)
|
||||||
GetTree().Paused = isPaused;
|
GetTree().Paused = isPaused;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RaiseHP(int amountToRaise)
|
|
||||||
{
|
|
||||||
if (Player.Stats.CurrentHP.Value == Player.Stats.MaximumHP.Value)
|
|
||||||
{
|
|
||||||
Player.Stats.SetMaximumHP(Player.Stats.MaximumHP.Value + amountToRaise);
|
|
||||||
Player.Stats.SetCurrentHP(Player.Stats.MaximumHP.Value);
|
|
||||||
EmitSignal(SignalName.StatRaisedAlert, $"{amountToRaise}MAXHP Up.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void HealHP(int amountToRestore)
|
|
||||||
{
|
|
||||||
Player.Stats.SetCurrentHP(Player.Stats.CurrentHP.Value + amountToRestore);
|
|
||||||
var raiseString = amountToRestore == 1000 ? "MAX" : $"{amountToRestore}";
|
|
||||||
EmitSignal(SignalName.StatRaisedAlert, $"{raiseString}HP Restored.");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void RaiseVT(int amountToRaise)
|
|
||||||
{
|
|
||||||
if (Player.Stats.CurrentVT.Value == Player.Stats.MaximumVT.Value)
|
|
||||||
{
|
|
||||||
Player.Stats.SetMaximumVT(Player.Stats.MaximumVT.Value + amountToRaise);
|
|
||||||
Player.Stats.SetCurrentVT(Player.Stats.MaximumVT.Value);
|
|
||||||
EmitSignal(SignalName.StatRaisedAlert, $"{amountToRaise}MAXVT Up.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void HealVT(int amountToRestore)
|
|
||||||
{
|
|
||||||
Player.Stats.SetCurrentVT(Player.Stats.CurrentVT.Value + amountToRestore);
|
|
||||||
var raiseString = amountToRestore == 1000 ? "MAX" : $"{amountToRestore}";
|
|
||||||
EmitSignal(SignalName.StatRaisedAlert, $"{raiseString}VT Restored.");
|
|
||||||
}
|
|
||||||
|
|
||||||
public async void DoubleEXP(TimeSpan lengthOfEffect)
|
public async void DoubleEXP(TimeSpan lengthOfEffect)
|
||||||
{
|
{
|
||||||
InventoryMenu_CloseInventory();
|
InventoryMenu_CloseInventory();
|
||||||
|
|||||||
@@ -26,24 +26,6 @@ public interface IGameEventDepot : IDisposable
|
|||||||
event Action? MenuBackedOut;
|
event Action? MenuBackedOut;
|
||||||
public void OnMenuBackedOut();
|
public void OnMenuBackedOut();
|
||||||
|
|
||||||
event Action<Weapon>? EquippedWeapon;
|
|
||||||
public void OnEquippedWeapon(Weapon equippedWeapon);
|
|
||||||
|
|
||||||
event Action? UnequippedWeapon;
|
|
||||||
public void OnUnequippedWeapon();
|
|
||||||
|
|
||||||
event Action<Armor>? EquippedArmor;
|
|
||||||
public void OnEquippedArmor(Armor equippedArmor);
|
|
||||||
|
|
||||||
event Action? UnequippedArmor;
|
|
||||||
public void OnUnequippedArmor();
|
|
||||||
|
|
||||||
event Action<Accessory>? EquippedAccessory;
|
|
||||||
public void OnEquippedAccessory(Accessory equippedAccessory);
|
|
||||||
|
|
||||||
event Action? UnequippedAccessory;
|
|
||||||
public void OnUnequippedAccessory();
|
|
||||||
|
|
||||||
event Action? InventorySorted;
|
event Action? InventorySorted;
|
||||||
public void OnInventorySorted();
|
public void OnInventorySorted();
|
||||||
|
|
||||||
@@ -69,12 +51,6 @@ public class GameEventDepot : IGameEventDepot
|
|||||||
|
|
||||||
public event Action? MenuScrolled;
|
public event Action? MenuScrolled;
|
||||||
public event Action? MenuBackedOut;
|
public event Action? MenuBackedOut;
|
||||||
public event Action<Weapon>? EquippedWeapon;
|
|
||||||
public event Action? UnequippedWeapon;
|
|
||||||
public event Action<Armor>? EquippedArmor;
|
|
||||||
public event Action? UnequippedArmor;
|
|
||||||
public event Action<Accessory>? EquippedAccessory;
|
|
||||||
public event Action? UnequippedAccessory;
|
|
||||||
public event Action? InventorySorted;
|
public event Action? InventorySorted;
|
||||||
public event Action<ConsumableItemStats>? HealingItemConsumed;
|
public event Action<ConsumableItemStats>? HealingItemConsumed;
|
||||||
public event Action<Restorative>? RestorativePickedUp;
|
public event Action<Restorative>? RestorativePickedUp;
|
||||||
@@ -91,15 +67,6 @@ public class GameEventDepot : IGameEventDepot
|
|||||||
public void OnMenuScrolled() => MenuScrolled?.Invoke();
|
public void OnMenuScrolled() => MenuScrolled?.Invoke();
|
||||||
public void OnMenuBackedOut() => MenuBackedOut?.Invoke();
|
public void OnMenuBackedOut() => MenuBackedOut?.Invoke();
|
||||||
|
|
||||||
public void OnEquippedWeapon(Weapon equippedWeapon) => EquippedWeapon?.Invoke(equippedWeapon);
|
|
||||||
public void OnUnequippedWeapon() => UnequippedWeapon?.Invoke();
|
|
||||||
|
|
||||||
public void OnEquippedArmor(Armor equippedArmor) => EquippedArmor?.Invoke(equippedArmor);
|
|
||||||
public void OnUnequippedArmor() => UnequippedArmor?.Invoke();
|
|
||||||
|
|
||||||
public void OnEquippedAccessory(Accessory equippedAccessory) => EquippedAccessory?.Invoke(equippedAccessory);
|
|
||||||
public void OnUnequippedAccessory() => UnequippedAccessory?.Invoke();
|
|
||||||
|
|
||||||
public void OnInventorySorted() => InventorySorted?.Invoke();
|
public void OnInventorySorted() => InventorySorted?.Invoke();
|
||||||
public void OnHealingItemConsumed(ConsumableItemStats item) => HealingItemConsumed?.Invoke(item);
|
public void OnHealingItemConsumed(ConsumableItemStats item) => HealingItemConsumed?.Invoke(item);
|
||||||
public void OnRestorativePickedUp(Restorative restorative) => RestorativePickedUp?.Invoke(restorative);
|
public void OnRestorativePickedUp(Restorative restorative) => RestorativePickedUp?.Invoke(restorative);
|
||||||
|
|||||||
@@ -9,23 +9,19 @@ public interface IGame : IProvide<IGameRepo>, IProvide<IGameEventDepot>, IProvid
|
|||||||
{
|
{
|
||||||
event Game.StatRaisedAlertEventHandler StatRaisedAlert;
|
event Game.StatRaisedAlertEventHandler StatRaisedAlert;
|
||||||
|
|
||||||
public IPlayer Player { get; }
|
|
||||||
|
|
||||||
public RescuedItemDatabase RescuedItems { get; }
|
public RescuedItemDatabase RescuedItems { get; }
|
||||||
|
|
||||||
public void DropItem(IInventoryItem item);
|
public void DropItem(IInventoryItem item);
|
||||||
|
|
||||||
public void ThrowItem(IInventoryItem item);
|
public void ThrowItem(IInventoryItem item);
|
||||||
|
|
||||||
public void HealHP(int amountToRaise);
|
|
||||||
public void RaiseHP(int amountToRaise);
|
|
||||||
|
|
||||||
public void HealVT(int amountToRaise);
|
|
||||||
public void RaiseVT(int amountToRaise);
|
|
||||||
|
|
||||||
public void DoubleEXP(TimeSpan lengthOfEffect);
|
public void DoubleEXP(TimeSpan lengthOfEffect);
|
||||||
|
|
||||||
public void ToggleInventory();
|
public void ToggleInventory();
|
||||||
|
|
||||||
public void ToggleMinimap();
|
public void ToggleMinimap();
|
||||||
|
|
||||||
|
public void AnnounceMessageOnInventoryScreen(string message);
|
||||||
|
|
||||||
|
public void AnnounceMessageOnMainScreen(string message);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ public interface IInventoryMenu : IControl
|
|||||||
{
|
{
|
||||||
public Task RedrawInventory();
|
public Task RedrawInventory();
|
||||||
|
|
||||||
|
public Task ShowMessage(string message);
|
||||||
|
|
||||||
event InventoryMenu.ClosedMenuEventHandler ClosedMenu;
|
event InventoryMenu.ClosedMenuEventHandler ClosedMenu;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,16 +95,15 @@ public partial class InventoryMenu : Control, IInventoryMenu
|
|||||||
Player.Inventory.EquippedArmor.Sync += EquippedArmor_Sync;
|
Player.Inventory.EquippedArmor.Sync += EquippedArmor_Sync;
|
||||||
Player.Inventory.EquippedAccessory.Sync += EquippedAccessory_Sync;
|
Player.Inventory.EquippedAccessory.Sync += EquippedAccessory_Sync;
|
||||||
|
|
||||||
Game.StatRaisedAlert += Game_StatRaisedAlert;
|
|
||||||
SetProcessInput(false);
|
SetProcessInput(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void Game_StatRaisedAlert(string statRaisedAlert)
|
public async Task ShowMessage(string message)
|
||||||
{
|
{
|
||||||
SetProcessInput(false);
|
SetProcessInput(false);
|
||||||
await HideUserActionPrompt();
|
await HideUserActionPrompt();
|
||||||
await ShowInventoryInfo();
|
await ShowInventoryInfo();
|
||||||
ItemEffectLabel.Text = statRaisedAlert;
|
ItemEffectLabel.Text = message;
|
||||||
await ToSignal(GetTree().CreateTimer(1f), "timeout");
|
await ToSignal(GetTree().CreateTimer(1f), "timeout");
|
||||||
await RedrawInventory();
|
await RedrawInventory();
|
||||||
SetProcessInput(true);
|
SetProcessInput(true);
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
namespace GameJamDungeon;
|
using System.Collections.Immutable;
|
||||||
|
|
||||||
|
namespace GameJamDungeon;
|
||||||
|
|
||||||
public interface IEquipableItem : IInventoryItem
|
public interface IEquipableItem : IInventoryItem
|
||||||
{
|
{
|
||||||
public void Equip();
|
public ImmutableList<ItemTag> ItemTags { get; }
|
||||||
|
|
||||||
public void Unequip();
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using Chickensoft.Collections;
|
using Chickensoft.AutoInject;
|
||||||
|
using Chickensoft.Collections;
|
||||||
using Chickensoft.GodotNodeInterfaces;
|
using Chickensoft.GodotNodeInterfaces;
|
||||||
using Godot;
|
using Godot;
|
||||||
using System;
|
using System;
|
||||||
@@ -31,24 +32,18 @@ public interface IInventory : INode
|
|||||||
event Inventory.InventoryAtCapacityEventHandler InventoryAtCapacity;
|
event Inventory.InventoryAtCapacityEventHandler InventoryAtCapacity;
|
||||||
|
|
||||||
event Inventory.PickedUpItemEventHandler PickedUpItem;
|
event Inventory.PickedUpItemEventHandler PickedUpItem;
|
||||||
|
|
||||||
event Inventory.AccessoryUnequippedEventHandler AccessoryUnequipped;
|
|
||||||
|
|
||||||
event Inventory.RaiseStatRequestEventHandler RaiseStatRequest;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public partial class Inventory : Node, IInventory
|
public partial class Inventory : Node, IInventory
|
||||||
{
|
{
|
||||||
|
public override void _Notification(int what) => this.Notify(what);
|
||||||
|
|
||||||
// TODO: Constants class with export
|
// TODO: Constants class with export
|
||||||
private const int _maxInventorySize = 20;
|
private const int _maxInventorySize = 20;
|
||||||
|
|
||||||
[Signal]
|
[Signal]
|
||||||
public delegate void InventoryAtCapacityEventHandler(string rejectedItemName);
|
public delegate void InventoryAtCapacityEventHandler(string rejectedItemName);
|
||||||
[Signal]
|
[Signal]
|
||||||
public delegate void AccessoryUnequippedEventHandler(Accessory unequippedAccessory);
|
|
||||||
[Signal]
|
|
||||||
public delegate void RaiseStatRequestEventHandler(ConsumableItemStats consumableItemStats);
|
|
||||||
[Signal]
|
|
||||||
public delegate void PickedUpItemEventHandler(string pickedUpItemName);
|
public delegate void PickedUpItemEventHandler(string pickedUpItemName);
|
||||||
|
|
||||||
public Inventory()
|
public Inventory()
|
||||||
@@ -56,6 +51,27 @@ public partial class Inventory : Node, IInventory
|
|||||||
Items = [];
|
Items = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Setup()
|
||||||
|
{
|
||||||
|
EquippedWeapon.Changed += EquippedWeapon_Changed;
|
||||||
|
EquippedArmor.Changed += EquippedArmor_Changed;
|
||||||
|
EquippedAccessory.Changed += EquippedAccessory_Changed;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void EquippedAccessory_Changed(Accessory obj)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
private void EquippedArmor_Changed(Armor obj)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void EquippedWeapon_Changed(Weapon obj)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
public List<IInventoryItem> Items { get; private set; }
|
public List<IInventoryItem> Items { get; private set; }
|
||||||
|
|
||||||
public IAutoProp<Weapon> EquippedWeapon => _equippedWeapon;
|
public IAutoProp<Weapon> EquippedWeapon => _equippedWeapon;
|
||||||
@@ -96,21 +112,17 @@ public partial class Inventory : Node, IInventory
|
|||||||
|
|
||||||
public void Unequip(IEquipableItem equipable)
|
public void Unequip(IEquipableItem equipable)
|
||||||
{
|
{
|
||||||
if (equipable is Weapon weapon)
|
if (equipable is Weapon)
|
||||||
{
|
|
||||||
_equippedWeapon.OnNext(new Weapon());
|
_equippedWeapon.OnNext(new Weapon());
|
||||||
if (weapon.WeaponTags.Contains(WeaponTag.BreaksOnChange))
|
else if (equipable is Armor)
|
||||||
Items.Remove(weapon);
|
|
||||||
}
|
|
||||||
else if (equipable is Armor armor)
|
|
||||||
_equippedArmor.OnNext(new Armor());
|
_equippedArmor.OnNext(new Armor());
|
||||||
else if (equipable is Accessory accessory)
|
else if (equipable is Accessory)
|
||||||
{
|
|
||||||
EmitSignal(SignalName.AccessoryUnequipped, _equippedAccessory.Value);
|
|
||||||
_equippedAccessory.OnNext(new Accessory());
|
_equippedAccessory.OnNext(new Accessory());
|
||||||
}
|
|
||||||
else
|
else
|
||||||
throw new NotImplementedException("Item type is not supported.");
|
throw new NotImplementedException("Item type is not supported.");
|
||||||
|
|
||||||
|
if (equipable.ItemTags.Contains(ItemTag.BreaksOnChange))
|
||||||
|
Remove(equipable);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsEquipped(IEquipableItem equipable)
|
public bool IsEquipped(IEquipableItem equipable)
|
||||||
|
|||||||
@@ -26,4 +26,7 @@ public partial class InventoryItemStats : Resource
|
|||||||
|
|
||||||
[Export(PropertyHint.Range, "0, 999, 1")]
|
[Export(PropertyHint.Range, "0, 999, 1")]
|
||||||
public int ThrowDamage { get; set; } = 5;
|
public int ThrowDamage { get; set; } = 5;
|
||||||
|
|
||||||
|
[Export]
|
||||||
|
public Godot.Collections.Array<ItemTag> ItemTags { get; set; } = new Godot.Collections.Array<ItemTag>();
|
||||||
}
|
}
|
||||||
@@ -43,6 +43,8 @@ public partial class Accessory : Node3D, IEquipableItem
|
|||||||
|
|
||||||
public ImmutableList<AccessoryTag> AccessoryTags => [.. _accessoryStats.AccessoryTags];
|
public ImmutableList<AccessoryTag> AccessoryTags => [.. _accessoryStats.AccessoryTags];
|
||||||
|
|
||||||
|
public ImmutableList<ItemTag> ItemTags => [.. _accessoryStats.ItemTags];
|
||||||
|
|
||||||
public void OnReady()
|
public void OnReady()
|
||||||
{
|
{
|
||||||
Pickup.BodyEntered += OnEntered;
|
Pickup.BodyEntered += OnEntered;
|
||||||
@@ -54,16 +56,6 @@ public partial class Accessory : Node3D, IEquipableItem
|
|||||||
_accessoryStats = (AccessoryStats)inventoryItemStats;
|
_accessoryStats = (AccessoryStats)inventoryItemStats;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Equip()
|
|
||||||
{
|
|
||||||
GameEventDepot.OnEquippedAccessory(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Unequip()
|
|
||||||
{
|
|
||||||
GameEventDepot.OnUnequippedAccessory();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Throw()
|
public void Throw()
|
||||||
{
|
{
|
||||||
Player.Inventory.Remove(this);
|
Player.Inventory.Remove(this);
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ using Chickensoft.AutoInject;
|
|||||||
using Chickensoft.Introspection;
|
using Chickensoft.Introspection;
|
||||||
using Godot;
|
using Godot;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Immutable;
|
||||||
|
|
||||||
namespace GameJamDungeon;
|
namespace GameJamDungeon;
|
||||||
|
|
||||||
@@ -10,8 +11,6 @@ public partial class Armor : Node3D, IEquipableItem
|
|||||||
{
|
{
|
||||||
public override void _Notification(int what) => this.Notify(what);
|
public override void _Notification(int what) => this.Notify(what);
|
||||||
|
|
||||||
[Dependency] public IGameEventDepot GameEventDepot => this.DependOn<IGameEventDepot>();
|
|
||||||
|
|
||||||
[Dependency] public IPlayer Player => this.DependOn<IPlayer>();
|
[Dependency] public IPlayer Player => this.DependOn<IPlayer>();
|
||||||
|
|
||||||
[Export] private ArmorStats _armorStats { get; set; } = new ArmorStats();
|
[Export] private ArmorStats _armorStats { get; set; } = new ArmorStats();
|
||||||
@@ -36,6 +35,8 @@ public partial class Armor : Node3D, IEquipableItem
|
|||||||
|
|
||||||
public int Defense => _armorStats.Defense;
|
public int Defense => _armorStats.Defense;
|
||||||
|
|
||||||
|
public ImmutableList<ItemTag> ItemTags => [.. _armorStats.ItemTags];
|
||||||
|
|
||||||
public void OnReady()
|
public void OnReady()
|
||||||
{
|
{
|
||||||
Pickup.BodyEntered += OnEntered;
|
Pickup.BodyEntered += OnEntered;
|
||||||
@@ -47,16 +48,6 @@ public partial class Armor : Node3D, IEquipableItem
|
|||||||
_armorStats = (ArmorStats)inventoryItemStats;
|
_armorStats = (ArmorStats)inventoryItemStats;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Equip()
|
|
||||||
{
|
|
||||||
GameEventDepot.OnEquippedArmor(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Unequip()
|
|
||||||
{
|
|
||||||
GameEventDepot.OnUnequippedArmor();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Throw()
|
public void Throw()
|
||||||
{
|
{
|
||||||
Player.Inventory.Remove(this);
|
Player.Inventory.Remove(this);
|
||||||
|
|||||||
@@ -10,9 +10,6 @@ public partial class ConsumableItem : Node3D, IUsableItem
|
|||||||
{
|
{
|
||||||
public override void _Notification(int what) => this.Notify(what);
|
public override void _Notification(int what) => this.Notify(what);
|
||||||
|
|
||||||
[Signal]
|
|
||||||
public delegate void RaiseStatRequestEventHandler(ConsumableItemStats consumableItemStats);
|
|
||||||
|
|
||||||
[Dependency] public IGame Game => this.DependOn<IGame>();
|
[Dependency] public IGame Game => this.DependOn<IGame>();
|
||||||
|
|
||||||
[Dependency] public IPlayer Player => this.DependOn<IPlayer>();
|
[Dependency] public IPlayer Player => this.DependOn<IPlayer>();
|
||||||
@@ -40,15 +37,15 @@ public partial class ConsumableItem : Node3D, IUsableItem
|
|||||||
|
|
||||||
public void Use()
|
public void Use()
|
||||||
{
|
{
|
||||||
if (_consumableItemStats.RaiseHPAmount > 0)
|
if (Player.Stats.CurrentHP.Value == Player.Stats.MaximumHP.Value && _consumableItemStats.RaiseHPAmount > 0)
|
||||||
Game.RaiseHP(_consumableItemStats.RaiseHPAmount);
|
Player.RaiseHP(_consumableItemStats.RaiseHPAmount);
|
||||||
if (_consumableItemStats.RaiseVTAmount > 0)
|
if (Player.Stats.CurrentVT.Value == Player.Stats.MaximumVT.Value && _consumableItemStats.RaiseVTAmount > 0)
|
||||||
Game.RaiseVT(_consumableItemStats.RaiseVTAmount);
|
Player.RaiseVT(_consumableItemStats.RaiseVTAmount);
|
||||||
|
|
||||||
if (_consumableItemStats.HealHPAmount > 0 && Player.Stats.CurrentHP.Value != Player.Stats.MaximumHP.Value)
|
if (_consumableItemStats.HealHPAmount > 0 && Player.Stats.CurrentHP.Value != Player.Stats.MaximumHP.Value)
|
||||||
Game.HealHP(_consumableItemStats.HealHPAmount);
|
Player.HealHP(_consumableItemStats.HealHPAmount);
|
||||||
if (_consumableItemStats.HealVTAmount > 0 && Player.Stats.CurrentVT.Value != Player.Stats.MaximumVT.Value)
|
if (_consumableItemStats.HealVTAmount > 0 && Player.Stats.CurrentVT.Value != Player.Stats.MaximumVT.Value)
|
||||||
Game.HealVT(_consumableItemStats.HealVTAmount);
|
Player.HealVT(_consumableItemStats.HealVTAmount);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetItemStats(InventoryItemStats inventoryItemStats)
|
public void SetItemStats(InventoryItemStats inventoryItemStats)
|
||||||
|
|||||||
@@ -32,11 +32,11 @@ public partial class DroppedItem : RigidBody3D, IDroppedItem
|
|||||||
|
|
||||||
public async void Drop()
|
public async void Drop()
|
||||||
{
|
{
|
||||||
AddCollisionExceptionWith((Node)Game.Player);
|
AddCollisionExceptionWith((Node)Player);
|
||||||
GlobalPosition = Player.CurrentPosition + Vector3.Up;
|
GlobalPosition = Player.CurrentPosition + Vector3.Up;
|
||||||
ApplyCentralImpulse(-Player.CurrentBasis.Z.Normalized() * 5.0f);
|
ApplyCentralImpulse(-Player.CurrentBasis.Z.Normalized() * 5.0f);
|
||||||
await ToSignal(GetTree().CreateTimer(1.5), "timeout");
|
await ToSignal(GetTree().CreateTimer(1.5), "timeout");
|
||||||
RemoveCollisionExceptionWith((Node)Game.Player);
|
RemoveCollisionExceptionWith((Node)Player);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RescueItem()
|
public void RescueItem()
|
||||||
|
|||||||
@@ -63,9 +63,9 @@ public partial class ThrowableItem : Node3D, IUsableItem
|
|||||||
public void Use()
|
public void Use()
|
||||||
{
|
{
|
||||||
if (_throwableItemStats.HealHPAmount > 0)
|
if (_throwableItemStats.HealHPAmount > 0)
|
||||||
Game.HealHP(_throwableItemStats.HealHPAmount);
|
Player.HealHP(_throwableItemStats.HealHPAmount);
|
||||||
if (_throwableItemStats.HealVTAmount > 0)
|
if (_throwableItemStats.HealVTAmount > 0)
|
||||||
Game.HealVT(_throwableItemStats.HealVTAmount);
|
Player.HealVT(_throwableItemStats.HealVTAmount);
|
||||||
|
|
||||||
if (_throwableItemStats.UsableItemTags.Contains(UsableItemTag.DoubleEXP))
|
if (_throwableItemStats.UsableItemTags.Contains(UsableItemTag.DoubleEXP))
|
||||||
Game.DoubleEXP(TimeSpan.FromSeconds(30));
|
Game.DoubleEXP(TimeSpan.FromSeconds(30));
|
||||||
|
|||||||
@@ -45,6 +45,8 @@ public partial class Weapon : Node3D, IInventoryItem, IEquipableItem
|
|||||||
|
|
||||||
public ImmutableList<WeaponTag> WeaponTags => [.. _weaponStats.WeaponTags];
|
public ImmutableList<WeaponTag> WeaponTags => [.. _weaponStats.WeaponTags];
|
||||||
|
|
||||||
|
public ImmutableList<ItemTag> ItemTags => [.. _weaponStats.ItemTags];
|
||||||
|
|
||||||
public ElementType WeaponElement => _weaponStats.WeaponElement;
|
public ElementType WeaponElement => _weaponStats.WeaponElement;
|
||||||
|
|
||||||
public double ElementalDamageBonus => _weaponStats.ElementalDamageBonus;
|
public double ElementalDamageBonus => _weaponStats.ElementalDamageBonus;
|
||||||
@@ -62,16 +64,6 @@ public partial class Weapon : Node3D, IInventoryItem, IEquipableItem
|
|||||||
Sprite.Texture = texture;
|
Sprite.Texture = texture;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Equip()
|
|
||||||
{
|
|
||||||
EmitSignal(SignalName.EquippedItem, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Unequip()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Throw()
|
public void Throw()
|
||||||
{
|
{
|
||||||
Player.Inventory.Remove(this);
|
Player.Inventory.Remove(this);
|
||||||
|
|||||||
@@ -750,7 +750,6 @@ mesh = SubResource("ArrayMesh_xh2ej")
|
|||||||
[node name="StaticBody3D" type="StaticBody3D" parent="02_ALTAR_FLOOR_ZER0_VER_1/COLLISION"]
|
[node name="StaticBody3D" type="StaticBody3D" parent="02_ALTAR_FLOOR_ZER0_VER_1/COLLISION"]
|
||||||
|
|
||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="02_ALTAR_FLOOR_ZER0_VER_1/COLLISION/StaticBody3D"]
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="02_ALTAR_FLOOR_ZER0_VER_1/COLLISION/StaticBody3D"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
|
|
||||||
shape = SubResource("ConcavePolygonShape3D_aqomv")
|
shape = SubResource("ConcavePolygonShape3D_aqomv")
|
||||||
|
|
||||||
[node name="CollisionShape3D2" type="CollisionShape3D" parent="02_ALTAR_FLOOR_ZER0_VER_1/COLLISION/StaticBody3D"]
|
[node name="CollisionShape3D2" type="CollisionShape3D" parent="02_ALTAR_FLOOR_ZER0_VER_1/COLLISION/StaticBody3D"]
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=17 format=3 uid="uid://bc1sp6xwe0j65"]
|
[gd_scene load_steps=16 format=3 uid="uid://bc1sp6xwe0j65"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://dwt6302nsf4vq" path="res://src/map/dungeon/code/DungeonFloor.cs" id="1_0ecnn"]
|
[ext_resource type="Script" uid="uid://dwt6302nsf4vq" path="res://src/map/dungeon/code/DungeonFloor.cs" id="1_0ecnn"]
|
||||||
[ext_resource type="Script" uid="uid://b1x125h0tya2w" path="res://addons/SimpleDungeons/DungeonGenerator3D.gd" id="2_cxmwa"]
|
[ext_resource type="Script" uid="uid://b1x125h0tya2w" path="res://addons/SimpleDungeons/DungeonGenerator3D.gd" id="2_cxmwa"]
|
||||||
@@ -14,13 +14,12 @@
|
|||||||
[ext_resource type="PackedScene" uid="uid://dbvr8ewajja6a" path="res://src/enemy/EnemyDatabase.tscn" id="12_aw26s"]
|
[ext_resource type="PackedScene" uid="uid://dbvr8ewajja6a" path="res://src/enemy/EnemyDatabase.tscn" id="12_aw26s"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bksq62muhk3h5" path="res://src/enemy/enemy_types/1. sproingy/Sproingy.tscn" id="13_kwaga"]
|
[ext_resource type="PackedScene" uid="uid://bksq62muhk3h5" path="res://src/enemy/enemy_types/1. sproingy/Sproingy.tscn" id="13_kwaga"]
|
||||||
[ext_resource type="PackedScene" uid="uid://b0gwivt7cw7nd" path="res://src/enemy/enemy_types/2. michael/Michael.tscn" id="14_gkkr3"]
|
[ext_resource type="PackedScene" uid="uid://b0gwivt7cw7nd" path="res://src/enemy/enemy_types/2. michael/Michael.tscn" id="14_gkkr3"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cvk007twac22c" path="res://src/enemy/enemy_types/3. filth_eater/FilthEater.tscn" id="15_kwaga"]
|
|
||||||
|
|
||||||
[sub_resource type="NavigationMesh" id="NavigationMesh_4d8mx"]
|
[sub_resource type="NavigationMesh" id="NavigationMesh_4d8mx"]
|
||||||
sample_partition_type = 2
|
sample_partition_type = 2
|
||||||
geometry_parsed_geometry_type = 0
|
geometry_parsed_geometry_type = 0
|
||||||
|
|
||||||
[node name="Floor1" type="Node3D"]
|
[node name="Floor01" type="Node3D"]
|
||||||
script = ExtResource("1_0ecnn")
|
script = ExtResource("1_0ecnn")
|
||||||
|
|
||||||
[node name="NavigationRegion3D" type="NavigationRegion3D" parent="."]
|
[node name="NavigationRegion3D" type="NavigationRegion3D" parent="."]
|
||||||
@@ -41,5 +40,4 @@ hide_debug_visuals_for_all_generated_rooms = false
|
|||||||
|
|
||||||
[node name="EnemyDatabase" parent="." instance=ExtResource("12_aw26s")]
|
[node name="EnemyDatabase" parent="." instance=ExtResource("12_aw26s")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
EnemyList = Array[PackedScene]([ExtResource("13_kwaga"), ExtResource("14_gkkr3"), ExtResource("15_kwaga")])
|
EnemyList = Array[PackedScene]([ExtResource("13_kwaga"), ExtResource("14_gkkr3")])
|
||||||
SpawnRate = PackedFloat32Array(1, 1, 10)
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=15 format=3 uid="uid://dmiqwmivkjgmq"]
|
[gd_scene load_steps=16 format=3 uid="uid://dmiqwmivkjgmq"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://b1x125h0tya2w" path="res://addons/SimpleDungeons/DungeonGenerator3D.gd" id="1_afeds"]
|
[ext_resource type="Script" uid="uid://b1x125h0tya2w" path="res://addons/SimpleDungeons/DungeonGenerator3D.gd" id="1_afeds"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dpec2lbt83dhe" path="res://src/map/dungeon/scenes/Antechamber.tscn" id="3_7txs6"]
|
[ext_resource type="PackedScene" uid="uid://dpec2lbt83dhe" path="res://src/map/dungeon/scenes/Antechamber.tscn" id="3_7txs6"]
|
||||||
@@ -13,13 +13,14 @@
|
|||||||
[ext_resource type="PackedScene" uid="uid://dbvr8ewajja6a" path="res://src/enemy/EnemyDatabase.tscn" id="11_yvj8v"]
|
[ext_resource type="PackedScene" uid="uid://dbvr8ewajja6a" path="res://src/enemy/EnemyDatabase.tscn" id="11_yvj8v"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bksq62muhk3h5" path="res://src/enemy/enemy_types/1. sproingy/Sproingy.tscn" id="12_pmbic"]
|
[ext_resource type="PackedScene" uid="uid://bksq62muhk3h5" path="res://src/enemy/enemy_types/1. sproingy/Sproingy.tscn" id="12_pmbic"]
|
||||||
[ext_resource type="PackedScene" uid="uid://b0gwivt7cw7nd" path="res://src/enemy/enemy_types/2. michael/Michael.tscn" id="13_eyrkc"]
|
[ext_resource type="PackedScene" uid="uid://b0gwivt7cw7nd" path="res://src/enemy/enemy_types/2. michael/Michael.tscn" id="13_eyrkc"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bkj1kyqu7reul" path="res://src/enemy/enemy_types/13. gold sproingy/GoldSproingy.tscn" id="14_pmbic"]
|
||||||
|
|
||||||
[sub_resource type="NavigationMesh" id="NavigationMesh_gqi8w"]
|
[sub_resource type="NavigationMesh" id="NavigationMesh_gqi8w"]
|
||||||
border_size = 1.0
|
border_size = 1.0
|
||||||
agent_height = 3.0
|
agent_height = 3.0
|
||||||
agent_radius = 0.1
|
agent_radius = 0.1
|
||||||
|
|
||||||
[node name="Floor1" type="Node3D"]
|
[node name="Floor02" type="Node3D"]
|
||||||
script = ExtResource("5_ld0kt")
|
script = ExtResource("5_ld0kt")
|
||||||
|
|
||||||
[node name="NavigationRegion3D" type="NavigationRegion3D" parent="."]
|
[node name="NavigationRegion3D" type="NavigationRegion3D" parent="."]
|
||||||
@@ -37,4 +38,5 @@ generate_on_ready = false
|
|||||||
|
|
||||||
[node name="EnemyDatabase" parent="." instance=ExtResource("11_yvj8v")]
|
[node name="EnemyDatabase" parent="." instance=ExtResource("11_yvj8v")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
EnemyList = Array[PackedScene]([ExtResource("12_pmbic"), ExtResource("13_eyrkc")])
|
EnemyList = Array[PackedScene]([ExtResource("12_pmbic"), ExtResource("13_eyrkc"), ExtResource("14_pmbic")])
|
||||||
|
SpawnRate = PackedFloat32Array(1, 1, 0.05)
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ border_size = 1.0
|
|||||||
agent_height = 3.0
|
agent_height = 3.0
|
||||||
agent_radius = 0.1
|
agent_radius = 0.1
|
||||||
|
|
||||||
[node name="Floor1" type="Node3D"]
|
[node name="Floor03" type="Node3D"]
|
||||||
script = ExtResource("5_mo2td")
|
script = ExtResource("5_mo2td")
|
||||||
|
|
||||||
[node name="NavigationRegion3D" type="NavigationRegion3D" parent="."]
|
[node name="NavigationRegion3D" type="NavigationRegion3D" parent="."]
|
||||||
|
|||||||
41
src/map/dungeon/floors/Floor04.tscn
Normal file
41
src/map/dungeon/floors/Floor04.tscn
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
[gd_scene load_steps=15 format=3 uid="uid://cikq7vuorlpbl"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://dwt6302nsf4vq" path="res://src/map/dungeon/code/DungeonFloor.cs" id="1_8amoj"]
|
||||||
|
[ext_resource type="Script" uid="uid://b1x125h0tya2w" path="res://addons/SimpleDungeons/DungeonGenerator3D.gd" id="2_p7nwd"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dpec2lbt83dhe" path="res://src/map/dungeon/scenes/Antechamber.tscn" id="3_te0rp"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://b82dx66mgs2d7" path="res://src/map/dungeon/scenes/BasinRoom.tscn" id="4_i5hjj"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://b7111krf365x0" path="res://src/map/dungeon/scenes/InnerBalcony.tscn" id="5_katpr"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://c1qicmrcg6q6x" path="res://src/map/dungeon/scenes/ColumnRoom.tscn" id="6_8pmtc"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dfpyfpnya0f4u" path="res://src/map/dungeon/scenes/WaterRoom.tscn" id="7_5wyu4"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://vdhl32je6hq2" path="res://src/map/dungeon/scenes/Antechamber_2.tscn" id="8_36gcj"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://cam640h4euewx" path="res://src/map/dungeon/scenes/PitRoom2.tscn" id="9_gn1yf"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bn4gslp2gk8ds" path="res://src/map/dungeon/corridor/Corridor.tscn" id="10_he2ag"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dbvr8ewajja6a" path="res://src/enemy/EnemyDatabase.tscn" id="11_f4225"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://b0gwivt7cw7nd" path="res://src/enemy/enemy_types/2. michael/Michael.tscn" id="13_5kttw"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://cvk007twac22c" path="res://src/enemy/enemy_types/3. filth_eater/FilthEater.tscn" id="14_h5hhw"]
|
||||||
|
|
||||||
|
[sub_resource type="NavigationMesh" id="NavigationMesh_gqi8w"]
|
||||||
|
border_size = 1.0
|
||||||
|
agent_height = 3.0
|
||||||
|
agent_radius = 0.1
|
||||||
|
|
||||||
|
[node name="Floor04" type="Node3D"]
|
||||||
|
script = ExtResource("1_8amoj")
|
||||||
|
|
||||||
|
[node name="NavigationRegion3D" type="NavigationRegion3D" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
navigation_mesh = SubResource("NavigationMesh_gqi8w")
|
||||||
|
|
||||||
|
[node name="DungeonGenerator" type="Node3D" parent="NavigationRegion3D"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
script = ExtResource("2_p7nwd")
|
||||||
|
room_scenes = Array[PackedScene]([ExtResource("3_te0rp"), ExtResource("4_i5hjj"), ExtResource("5_katpr"), ExtResource("6_8pmtc"), ExtResource("7_5wyu4"), ExtResource("8_36gcj"), ExtResource("9_gn1yf")])
|
||||||
|
corridor_room_scene = ExtResource("10_he2ag")
|
||||||
|
dungeon_size = Vector3i(60, 1, 60)
|
||||||
|
voxel_scale = Vector3(4, 4, 4)
|
||||||
|
generate_on_ready = false
|
||||||
|
|
||||||
|
[node name="EnemyDatabase" parent="." instance=ExtResource("11_f4225")]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
EnemyList = Array[PackedScene]([ExtResource("13_5kttw"), ExtResource("14_h5hhw")])
|
||||||
|
SpawnRate = PackedFloat32Array(0.5, 1)
|
||||||
42
src/map/dungeon/floors/Floor05.tscn
Normal file
42
src/map/dungeon/floors/Floor05.tscn
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
[gd_scene load_steps=16 format=3 uid="uid://t7cac7801bnk"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://dwt6302nsf4vq" path="res://src/map/dungeon/code/DungeonFloor.cs" id="1_8l7r7"]
|
||||||
|
[ext_resource type="Script" uid="uid://b1x125h0tya2w" path="res://addons/SimpleDungeons/DungeonGenerator3D.gd" id="2_ksplq"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dpec2lbt83dhe" path="res://src/map/dungeon/scenes/Antechamber.tscn" id="3_b3rou"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://b82dx66mgs2d7" path="res://src/map/dungeon/scenes/BasinRoom.tscn" id="4_duhq4"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://b7111krf365x0" path="res://src/map/dungeon/scenes/InnerBalcony.tscn" id="5_ut4ij"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://c1qicmrcg6q6x" path="res://src/map/dungeon/scenes/ColumnRoom.tscn" id="6_lposy"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dfpyfpnya0f4u" path="res://src/map/dungeon/scenes/WaterRoom.tscn" id="7_mb8sd"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://vdhl32je6hq2" path="res://src/map/dungeon/scenes/Antechamber_2.tscn" id="8_573ke"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://cam640h4euewx" path="res://src/map/dungeon/scenes/PitRoom2.tscn" id="9_puq45"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bn4gslp2gk8ds" path="res://src/map/dungeon/corridor/Corridor.tscn" id="10_slkpn"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dbvr8ewajja6a" path="res://src/enemy/EnemyDatabase.tscn" id="11_l2dei"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://b0gwivt7cw7nd" path="res://src/enemy/enemy_types/2. michael/Michael.tscn" id="12_uv3l4"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://cvk007twac22c" path="res://src/enemy/enemy_types/3. filth_eater/FilthEater.tscn" id="13_v44hk"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bkj1kyqu7reul" path="res://src/enemy/enemy_types/13. gold sproingy/GoldSproingy.tscn" id="14_ksplq"]
|
||||||
|
|
||||||
|
[sub_resource type="NavigationMesh" id="NavigationMesh_gqi8w"]
|
||||||
|
border_size = 1.0
|
||||||
|
agent_height = 3.0
|
||||||
|
agent_radius = 0.1
|
||||||
|
|
||||||
|
[node name="Floor05" type="Node3D"]
|
||||||
|
script = ExtResource("1_8l7r7")
|
||||||
|
|
||||||
|
[node name="NavigationRegion3D" type="NavigationRegion3D" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
navigation_mesh = SubResource("NavigationMesh_gqi8w")
|
||||||
|
|
||||||
|
[node name="DungeonGenerator" type="Node3D" parent="NavigationRegion3D"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
script = ExtResource("2_ksplq")
|
||||||
|
room_scenes = Array[PackedScene]([ExtResource("3_b3rou"), ExtResource("4_duhq4"), ExtResource("5_ut4ij"), ExtResource("6_lposy"), ExtResource("7_mb8sd"), ExtResource("8_573ke"), ExtResource("9_puq45")])
|
||||||
|
corridor_room_scene = ExtResource("10_slkpn")
|
||||||
|
dungeon_size = Vector3i(60, 1, 60)
|
||||||
|
voxel_scale = Vector3(4, 4, 4)
|
||||||
|
generate_on_ready = false
|
||||||
|
|
||||||
|
[node name="EnemyDatabase" parent="." instance=ExtResource("11_l2dei")]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
EnemyList = Array[PackedScene]([ExtResource("12_uv3l4"), ExtResource("13_v44hk"), ExtResource("14_ksplq")])
|
||||||
|
SpawnRate = PackedFloat32Array(0.5, 1, 0.05)
|
||||||
41
src/map/dungeon/floors/Floor06.tscn
Normal file
41
src/map/dungeon/floors/Floor06.tscn
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
[gd_scene load_steps=15 format=3 uid="uid://da107mywg18x1"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://dwt6302nsf4vq" path="res://src/map/dungeon/code/DungeonFloor.cs" id="1_51vs0"]
|
||||||
|
[ext_resource type="Script" uid="uid://b1x125h0tya2w" path="res://addons/SimpleDungeons/DungeonGenerator3D.gd" id="2_ixj2e"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dpec2lbt83dhe" path="res://src/map/dungeon/scenes/Antechamber.tscn" id="3_rgrkc"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://b82dx66mgs2d7" path="res://src/map/dungeon/scenes/BasinRoom.tscn" id="4_ltey6"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://b7111krf365x0" path="res://src/map/dungeon/scenes/InnerBalcony.tscn" id="5_xalbn"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://c1qicmrcg6q6x" path="res://src/map/dungeon/scenes/ColumnRoom.tscn" id="6_yfjr1"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dfpyfpnya0f4u" path="res://src/map/dungeon/scenes/WaterRoom.tscn" id="7_wnhhx"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://vdhl32je6hq2" path="res://src/map/dungeon/scenes/Antechamber_2.tscn" id="8_7s220"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://cam640h4euewx" path="res://src/map/dungeon/scenes/PitRoom2.tscn" id="9_twkiu"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bn4gslp2gk8ds" path="res://src/map/dungeon/corridor/Corridor.tscn" id="10_xh2mp"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dbvr8ewajja6a" path="res://src/enemy/EnemyDatabase.tscn" id="11_vn8cd"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://feegakykn3fv" path="res://src/enemy/enemy_types/5. ballos/Ballos.tscn" id="13_0tmnj"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://cvk007twac22c" path="res://src/enemy/enemy_types/3. filth_eater/FilthEater.tscn" id="13_gb3sg"]
|
||||||
|
|
||||||
|
[sub_resource type="NavigationMesh" id="NavigationMesh_gqi8w"]
|
||||||
|
border_size = 1.0
|
||||||
|
agent_height = 3.0
|
||||||
|
agent_radius = 0.1
|
||||||
|
|
||||||
|
[node name="Floor06" type="Node3D"]
|
||||||
|
script = ExtResource("1_51vs0")
|
||||||
|
|
||||||
|
[node name="NavigationRegion3D" type="NavigationRegion3D" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
navigation_mesh = SubResource("NavigationMesh_gqi8w")
|
||||||
|
|
||||||
|
[node name="DungeonGenerator" type="Node3D" parent="NavigationRegion3D"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
script = ExtResource("2_ixj2e")
|
||||||
|
room_scenes = Array[PackedScene]([ExtResource("3_rgrkc"), ExtResource("4_ltey6"), ExtResource("5_xalbn"), ExtResource("6_yfjr1"), ExtResource("7_wnhhx"), ExtResource("8_7s220"), ExtResource("9_twkiu")])
|
||||||
|
corridor_room_scene = ExtResource("10_xh2mp")
|
||||||
|
dungeon_size = Vector3i(60, 1, 60)
|
||||||
|
voxel_scale = Vector3(4, 4, 4)
|
||||||
|
generate_on_ready = false
|
||||||
|
|
||||||
|
[node name="EnemyDatabase" parent="." instance=ExtResource("11_vn8cd")]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
EnemyList = Array[PackedScene]([ExtResource("13_gb3sg"), ExtResource("13_0tmnj")])
|
||||||
|
SpawnRate = PackedFloat32Array(1, 0.5)
|
||||||
42
src/map/dungeon/floors/Floor07.tscn
Normal file
42
src/map/dungeon/floors/Floor07.tscn
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
[gd_scene load_steps=16 format=3 uid="uid://cgtqjgh1f5fqi"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://dwt6302nsf4vq" path="res://src/map/dungeon/code/DungeonFloor.cs" id="1_un5rc"]
|
||||||
|
[ext_resource type="Script" uid="uid://b1x125h0tya2w" path="res://addons/SimpleDungeons/DungeonGenerator3D.gd" id="2_purgj"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dpec2lbt83dhe" path="res://src/map/dungeon/scenes/Antechamber.tscn" id="3_67qnt"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://b82dx66mgs2d7" path="res://src/map/dungeon/scenes/BasinRoom.tscn" id="4_ogmgc"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://b7111krf365x0" path="res://src/map/dungeon/scenes/InnerBalcony.tscn" id="5_fjqnq"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://c1qicmrcg6q6x" path="res://src/map/dungeon/scenes/ColumnRoom.tscn" id="6_bji1g"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dfpyfpnya0f4u" path="res://src/map/dungeon/scenes/WaterRoom.tscn" id="7_sqvag"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://vdhl32je6hq2" path="res://src/map/dungeon/scenes/Antechamber_2.tscn" id="8_c5i81"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://cam640h4euewx" path="res://src/map/dungeon/scenes/PitRoom2.tscn" id="9_lo82o"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bn4gslp2gk8ds" path="res://src/map/dungeon/corridor/Corridor.tscn" id="10_xvcp8"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dbvr8ewajja6a" path="res://src/enemy/EnemyDatabase.tscn" id="11_xast8"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://cvk007twac22c" path="res://src/enemy/enemy_types/3. filth_eater/FilthEater.tscn" id="12_tr8km"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://feegakykn3fv" path="res://src/enemy/enemy_types/5. ballos/Ballos.tscn" id="13_43euk"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dlw5cvutvypxn" path="res://src/enemy/enemy_types/6. chariot/Chariot.tscn" id="14_purgj"]
|
||||||
|
|
||||||
|
[sub_resource type="NavigationMesh" id="NavigationMesh_gqi8w"]
|
||||||
|
border_size = 1.0
|
||||||
|
agent_height = 3.0
|
||||||
|
agent_radius = 0.1
|
||||||
|
|
||||||
|
[node name="Floor07" type="Node3D"]
|
||||||
|
script = ExtResource("1_un5rc")
|
||||||
|
|
||||||
|
[node name="NavigationRegion3D" type="NavigationRegion3D" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
navigation_mesh = SubResource("NavigationMesh_gqi8w")
|
||||||
|
|
||||||
|
[node name="DungeonGenerator" type="Node3D" parent="NavigationRegion3D"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
script = ExtResource("2_purgj")
|
||||||
|
room_scenes = Array[PackedScene]([ExtResource("3_67qnt"), ExtResource("4_ogmgc"), ExtResource("5_fjqnq"), ExtResource("6_bji1g"), ExtResource("7_sqvag"), ExtResource("8_c5i81"), ExtResource("9_lo82o")])
|
||||||
|
corridor_room_scene = ExtResource("10_xvcp8")
|
||||||
|
dungeon_size = Vector3i(60, 1, 60)
|
||||||
|
voxel_scale = Vector3(4, 4, 4)
|
||||||
|
generate_on_ready = false
|
||||||
|
|
||||||
|
[node name="EnemyDatabase" parent="." instance=ExtResource("11_xast8")]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
EnemyList = Array[PackedScene]([ExtResource("12_tr8km"), ExtResource("13_43euk"), ExtResource("14_purgj")])
|
||||||
|
SpawnRate = PackedFloat32Array(0.5, 1, 0.25)
|
||||||
40
src/map/dungeon/floors/Floor08.tscn
Normal file
40
src/map/dungeon/floors/Floor08.tscn
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
[gd_scene load_steps=15 format=3 uid="uid://dg20ovvj2m2lp"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://dwt6302nsf4vq" path="res://src/map/dungeon/code/DungeonFloor.cs" id="1_qs20c"]
|
||||||
|
[ext_resource type="Script" uid="uid://b1x125h0tya2w" path="res://addons/SimpleDungeons/DungeonGenerator3D.gd" id="2_6ps7u"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dpec2lbt83dhe" path="res://src/map/dungeon/scenes/Antechamber.tscn" id="3_pn3nc"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://b82dx66mgs2d7" path="res://src/map/dungeon/scenes/BasinRoom.tscn" id="4_esh22"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://b7111krf365x0" path="res://src/map/dungeon/scenes/InnerBalcony.tscn" id="5_mir7f"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://c1qicmrcg6q6x" path="res://src/map/dungeon/scenes/ColumnRoom.tscn" id="6_1elux"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dfpyfpnya0f4u" path="res://src/map/dungeon/scenes/WaterRoom.tscn" id="7_c68jx"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://vdhl32je6hq2" path="res://src/map/dungeon/scenes/Antechamber_2.tscn" id="8_3lecr"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://cam640h4euewx" path="res://src/map/dungeon/scenes/PitRoom2.tscn" id="9_dtrr3"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bn4gslp2gk8ds" path="res://src/map/dungeon/corridor/Corridor.tscn" id="10_vtwmp"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dbvr8ewajja6a" path="res://src/enemy/EnemyDatabase.tscn" id="11_uflod"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://feegakykn3fv" path="res://src/enemy/enemy_types/5. ballos/Ballos.tscn" id="13_c8dl5"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dlw5cvutvypxn" path="res://src/enemy/enemy_types/6. chariot/Chariot.tscn" id="13_qs20c"]
|
||||||
|
|
||||||
|
[sub_resource type="NavigationMesh" id="NavigationMesh_gqi8w"]
|
||||||
|
border_size = 1.0
|
||||||
|
agent_height = 3.0
|
||||||
|
agent_radius = 0.1
|
||||||
|
|
||||||
|
[node name="Floor08" type="Node3D"]
|
||||||
|
script = ExtResource("1_qs20c")
|
||||||
|
|
||||||
|
[node name="NavigationRegion3D" type="NavigationRegion3D" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
navigation_mesh = SubResource("NavigationMesh_gqi8w")
|
||||||
|
|
||||||
|
[node name="DungeonGenerator" type="Node3D" parent="NavigationRegion3D"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
script = ExtResource("2_6ps7u")
|
||||||
|
room_scenes = Array[PackedScene]([ExtResource("3_pn3nc"), ExtResource("4_esh22"), ExtResource("5_mir7f"), ExtResource("6_1elux"), ExtResource("7_c68jx"), ExtResource("8_3lecr"), ExtResource("9_dtrr3")])
|
||||||
|
corridor_room_scene = ExtResource("10_vtwmp")
|
||||||
|
dungeon_size = Vector3i(60, 1, 60)
|
||||||
|
voxel_scale = Vector3(4, 4, 4)
|
||||||
|
generate_on_ready = false
|
||||||
|
|
||||||
|
[node name="EnemyDatabase" parent="." instance=ExtResource("11_uflod")]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
EnemyList = Array[PackedScene]([ExtResource("13_c8dl5"), ExtResource("13_qs20c")])
|
||||||
42
src/map/dungeon/floors/Floor09.tscn
Normal file
42
src/map/dungeon/floors/Floor09.tscn
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
[gd_scene load_steps=16 format=3 uid="uid://b5jk743ng6fqg"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://dwt6302nsf4vq" path="res://src/map/dungeon/code/DungeonFloor.cs" id="1_ah6eb"]
|
||||||
|
[ext_resource type="Script" uid="uid://b1x125h0tya2w" path="res://addons/SimpleDungeons/DungeonGenerator3D.gd" id="2_2l5nt"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dpec2lbt83dhe" path="res://src/map/dungeon/scenes/Antechamber.tscn" id="3_f55jb"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://b82dx66mgs2d7" path="res://src/map/dungeon/scenes/BasinRoom.tscn" id="4_iljqd"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://b7111krf365x0" path="res://src/map/dungeon/scenes/InnerBalcony.tscn" id="5_2admg"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://c1qicmrcg6q6x" path="res://src/map/dungeon/scenes/ColumnRoom.tscn" id="6_fuh3g"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dfpyfpnya0f4u" path="res://src/map/dungeon/scenes/WaterRoom.tscn" id="7_lk05i"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://vdhl32je6hq2" path="res://src/map/dungeon/scenes/Antechamber_2.tscn" id="8_b81ow"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://cam640h4euewx" path="res://src/map/dungeon/scenes/PitRoom2.tscn" id="9_tl40f"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bn4gslp2gk8ds" path="res://src/map/dungeon/corridor/Corridor.tscn" id="10_glh5y"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dbvr8ewajja6a" path="res://src/enemy/EnemyDatabase.tscn" id="11_xxd5b"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://feegakykn3fv" path="res://src/enemy/enemy_types/5. ballos/Ballos.tscn" id="12_mhyau"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dlw5cvutvypxn" path="res://src/enemy/enemy_types/6. chariot/Chariot.tscn" id="13_v2ihw"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bkj1kyqu7reul" path="res://src/enemy/enemy_types/13. gold sproingy/GoldSproingy.tscn" id="14_2l5nt"]
|
||||||
|
|
||||||
|
[sub_resource type="NavigationMesh" id="NavigationMesh_gqi8w"]
|
||||||
|
border_size = 1.0
|
||||||
|
agent_height = 3.0
|
||||||
|
agent_radius = 0.1
|
||||||
|
|
||||||
|
[node name="Floor09" type="Node3D"]
|
||||||
|
script = ExtResource("1_ah6eb")
|
||||||
|
|
||||||
|
[node name="NavigationRegion3D" type="NavigationRegion3D" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
navigation_mesh = SubResource("NavigationMesh_gqi8w")
|
||||||
|
|
||||||
|
[node name="DungeonGenerator" type="Node3D" parent="NavigationRegion3D"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
script = ExtResource("2_2l5nt")
|
||||||
|
room_scenes = Array[PackedScene]([ExtResource("3_f55jb"), ExtResource("4_iljqd"), ExtResource("5_2admg"), ExtResource("6_fuh3g"), ExtResource("7_lk05i"), ExtResource("8_b81ow"), ExtResource("9_tl40f")])
|
||||||
|
corridor_room_scene = ExtResource("10_glh5y")
|
||||||
|
dungeon_size = Vector3i(60, 1, 60)
|
||||||
|
voxel_scale = Vector3(4, 4, 4)
|
||||||
|
generate_on_ready = false
|
||||||
|
|
||||||
|
[node name="EnemyDatabase" parent="." instance=ExtResource("11_xxd5b")]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
EnemyList = Array[PackedScene]([ExtResource("12_mhyau"), ExtResource("13_v2ihw"), ExtResource("14_2l5nt")])
|
||||||
|
SpawnRate = PackedFloat32Array(1, 1, 0.05)
|
||||||
@@ -24,6 +24,20 @@ public interface IPlayer : IKillable
|
|||||||
|
|
||||||
public void TeleportPlayer(Vector3 newPosition);
|
public void TeleportPlayer(Vector3 newPosition);
|
||||||
|
|
||||||
|
public void HealHP(int amount);
|
||||||
|
|
||||||
|
public void RaiseHP(int amount);
|
||||||
|
|
||||||
|
public void HealVT(int amount);
|
||||||
|
|
||||||
|
public void RaiseVT(int amount);
|
||||||
|
|
||||||
|
public void RaiseBonusAttack(int amount);
|
||||||
|
|
||||||
|
public void RaiseBonusDefense(int amount);
|
||||||
|
|
||||||
|
public void RaiseBonusLuck(int amount);
|
||||||
|
|
||||||
public IInventory Inventory { get; }
|
public IInventory Inventory { get; }
|
||||||
|
|
||||||
public PlayerStats Stats { get; }
|
public PlayerStats Stats { get; }
|
||||||
|
|||||||
@@ -162,7 +162,6 @@ public partial class Player : CharacterBody3D, IPlayer
|
|||||||
this.Provide();
|
this.Provide();
|
||||||
PlayerLogic.Start();
|
PlayerLogic.Start();
|
||||||
HealthTimer.Timeout += OnHealthTimerTimeout;
|
HealthTimer.Timeout += OnHealthTimerTimeout;
|
||||||
Inventory.AccessoryUnequipped += Inventory_AccessoryUnequipped;
|
|
||||||
Hitbox.AreaEntered += Hitbox_AreaEntered;
|
Hitbox.AreaEntered += Hitbox_AreaEntered;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -193,6 +192,52 @@ public partial class Player : CharacterBody3D, IPlayer
|
|||||||
EmitSignal(SignalName.PauseButtonPressed);
|
EmitSignal(SignalName.PauseButtonPressed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void RaiseHP(int amountToRaise)
|
||||||
|
{
|
||||||
|
Stats.SetMaximumHP(Stats.MaximumHP.Value + amountToRaise);
|
||||||
|
Stats.SetCurrentHP(Stats.MaximumHP.Value);
|
||||||
|
Game.AnnounceMessageOnInventoryScreen($"{amountToRaise}MAXHP Up.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void HealHP(int amountToRestore)
|
||||||
|
{
|
||||||
|
Stats.SetCurrentHP(Stats.CurrentHP.Value + amountToRestore);
|
||||||
|
var raiseString = amountToRestore == 1000 ? "MAX" : $"{amountToRestore}";
|
||||||
|
Game.AnnounceMessageOnInventoryScreen($"{raiseString}HP Restored.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RaiseVT(int amountToRaise)
|
||||||
|
{
|
||||||
|
if (Stats.CurrentVT.Value == Stats.MaximumVT.Value)
|
||||||
|
{
|
||||||
|
Stats.SetMaximumVT(Stats.MaximumVT.Value + amountToRaise);
|
||||||
|
Stats.SetCurrentVT(Stats.MaximumVT.Value);
|
||||||
|
Game.AnnounceMessageOnInventoryScreen($"{amountToRaise}MAXVT Up.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void HealVT(int amountToRestore)
|
||||||
|
{
|
||||||
|
Stats.SetCurrentVT(Stats.CurrentVT.Value + amountToRestore);
|
||||||
|
var raiseString = amountToRestore == 1000 ? "MAX" : $"{amountToRestore}";
|
||||||
|
Game.AnnounceMessageOnInventoryScreen($"{raiseString}VT Restored.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RaiseBonusAttack(int amount)
|
||||||
|
{
|
||||||
|
Stats.SetBonusAttack(Stats.BonusAttack.Value + amount);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RaiseBonusDefense(int amount)
|
||||||
|
{
|
||||||
|
Stats.SetBonusDefense(Stats.BonusDefense.Value + amount);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RaiseBonusLuck(int amount)
|
||||||
|
{
|
||||||
|
Stats.SetLuck(amount);
|
||||||
|
}
|
||||||
|
|
||||||
public void Move(float delta)
|
public void Move(float delta)
|
||||||
{
|
{
|
||||||
var rawInput = GlobalInputVector;
|
var rawInput = GlobalInputVector;
|
||||||
|
|||||||
Reference in New Issue
Block a user