Switch navigation mesh to be based on collision only, not collision and texture meshes

Will need to finetune enemy navigation agent placement depending on if they're now too high/low to sit in the navigation region
This commit is contained in:
2026-02-25 22:33:38 -08:00
parent 9d18bbb349
commit a686ce2fbc
59 changed files with 442 additions and 457 deletions

View File

@@ -0,0 +1,61 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.11.35222.181
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ma", "Ma.csproj", "{94D57D73-EDC5-47B2-BF34-7B57BA9C3881}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Zennysoft.Game.Abstractions", "..\Zennysoft.Game.Abstractions\Zennysoft.Game.Abstractions.csproj", "{D65D2AE9-D371-49F8-9E1D-BBA2907AB4AA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Zennysoft.Game.Implementation", "..\Zennysoft.Game.Godot.Implementation\Zennysoft.Game.Implementation.csproj", "{F6808C1C-EDFB-4602-BA01-34FB682A270C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Zennysoft.Ma.Adapter", "..\Zennysoft.Game.Ma.Implementation\Zennysoft.Ma.Adapter.csproj", "{CC55EDC3-B9EA-4393-BE4D-630C34393A94}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
ExportDebug|Any CPU = ExportDebug|Any CPU
ExportRelease|Any CPU = ExportRelease|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{94D57D73-EDC5-47B2-BF34-7B57BA9C3881}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{94D57D73-EDC5-47B2-BF34-7B57BA9C3881}.Debug|Any CPU.Build.0 = Debug|Any CPU
{94D57D73-EDC5-47B2-BF34-7B57BA9C3881}.ExportDebug|Any CPU.ActiveCfg = ExportDebug|Any CPU
{94D57D73-EDC5-47B2-BF34-7B57BA9C3881}.ExportDebug|Any CPU.Build.0 = ExportDebug|Any CPU
{94D57D73-EDC5-47B2-BF34-7B57BA9C3881}.ExportRelease|Any CPU.ActiveCfg = ExportRelease|Any CPU
{94D57D73-EDC5-47B2-BF34-7B57BA9C3881}.ExportRelease|Any CPU.Build.0 = ExportRelease|Any CPU
{94D57D73-EDC5-47B2-BF34-7B57BA9C3881}.Release|Any CPU.ActiveCfg = ExportRelease|Any CPU
{94D57D73-EDC5-47B2-BF34-7B57BA9C3881}.Release|Any CPU.Build.0 = ExportRelease|Any CPU
{D65D2AE9-D371-49F8-9E1D-BBA2907AB4AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D65D2AE9-D371-49F8-9E1D-BBA2907AB4AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D65D2AE9-D371-49F8-9E1D-BBA2907AB4AA}.ExportDebug|Any CPU.ActiveCfg = Debug|Any CPU
{D65D2AE9-D371-49F8-9E1D-BBA2907AB4AA}.ExportDebug|Any CPU.Build.0 = Debug|Any CPU
{D65D2AE9-D371-49F8-9E1D-BBA2907AB4AA}.ExportRelease|Any CPU.ActiveCfg = Release|Any CPU
{D65D2AE9-D371-49F8-9E1D-BBA2907AB4AA}.ExportRelease|Any CPU.Build.0 = Release|Any CPU
{D65D2AE9-D371-49F8-9E1D-BBA2907AB4AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D65D2AE9-D371-49F8-9E1D-BBA2907AB4AA}.Release|Any CPU.Build.0 = Release|Any CPU
{F6808C1C-EDFB-4602-BA01-34FB682A270C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F6808C1C-EDFB-4602-BA01-34FB682A270C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F6808C1C-EDFB-4602-BA01-34FB682A270C}.ExportDebug|Any CPU.ActiveCfg = Debug|Any CPU
{F6808C1C-EDFB-4602-BA01-34FB682A270C}.ExportDebug|Any CPU.Build.0 = Debug|Any CPU
{F6808C1C-EDFB-4602-BA01-34FB682A270C}.ExportRelease|Any CPU.ActiveCfg = Release|Any CPU
{F6808C1C-EDFB-4602-BA01-34FB682A270C}.ExportRelease|Any CPU.Build.0 = Release|Any CPU
{F6808C1C-EDFB-4602-BA01-34FB682A270C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F6808C1C-EDFB-4602-BA01-34FB682A270C}.Release|Any CPU.Build.0 = Release|Any CPU
{CC55EDC3-B9EA-4393-BE4D-630C34393A94}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CC55EDC3-B9EA-4393-BE4D-630C34393A94}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CC55EDC3-B9EA-4393-BE4D-630C34393A94}.ExportDebug|Any CPU.ActiveCfg = Debug|Any CPU
{CC55EDC3-B9EA-4393-BE4D-630C34393A94}.ExportDebug|Any CPU.Build.0 = Debug|Any CPU
{CC55EDC3-B9EA-4393-BE4D-630C34393A94}.ExportRelease|Any CPU.ActiveCfg = Release|Any CPU
{CC55EDC3-B9EA-4393-BE4D-630C34393A94}.ExportRelease|Any CPU.Build.0 = Release|Any CPU
{CC55EDC3-B9EA-4393-BE4D-630C34393A94}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CC55EDC3-B9EA-4393-BE4D-630C34393A94}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {797FF6A1-5959-42C9-A7A2-A8D39F9AC1A4}
EndGlobalSection
EndGlobal

View File

@@ -9,7 +9,7 @@ custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="../../Export/Export.exe"
export_path="../../Demo/Export.exe"
patches=PackedStringArray()
encryption_include_filters=""
encryption_exclude_filters=""

View File

@@ -180,8 +180,7 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLo
{
_morphSFX.Play();
SetPhysicsProcess(false);
_enemyLogic.Input(new EnemyLogic.Input.Defeated());
Callable.From(QueueFree);
Die();
}
public IDungeonRoom GetCurrentRoom(ImmutableList<IDungeonRoom> roomList)

View File

@@ -107,7 +107,7 @@ _acquireTargetTime = 2.0
[node name="NavigationAgent" type="NavigationAgent3D" parent="Components"]
unique_name_in_owner = true
avoidance_enabled = true
radius = 1.0
radius = 3.0
[node name="SFX" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.0617, 0)

View File

@@ -103,7 +103,7 @@ _acquireTargetTime = 2.0
[node name="NavigationAgent" type="NavigationAgent3D" parent="Components"]
unique_name_in_owner = true
avoidance_enabled = true
radius = 1.0
radius = 3.0
[node name="HitSounds" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.71715, 0)

View File

@@ -16,10 +16,11 @@ height = 5.0
radius = 1.0
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
radius = 1.0
radius = 2.54294
height = 5.08589
[sub_resource type="SphereShape3D" id="SphereShape3D_0y048"]
radius = 1.0
radius = 2.30121
[sub_resource type="Resource" id="Resource_fv5vf"]
script = ExtResource("4_5eid5")
@@ -48,7 +49,7 @@ script = ExtResource("1_p438s")
[node name="LineOfSight" type="Area3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 2.5865, 0)
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.55601, 0)
collision_layer = 2
collision_mask = 2
@@ -58,17 +59,17 @@ shape = SubResource("CylinderShape3D_jbgmx")
[node name="CollisionShape" type="CollisionShape3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 2.5865, 0)
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.55601, 0)
shape = SubResource("CapsuleShape3D_cwfph")
[node name="Raycast" type="RayCast3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.63979, 0)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.6093, 0)
target_position = Vector3(0, 0, -5)
collision_mask = 3
[node name="Collision" type="Area3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5865, 0)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.55601, 0)
collision_layer = 2048
collision_mask = 0
@@ -83,7 +84,7 @@ EnemyLoreInfo = SubResource("Resource_fv5vf")
[node name="PlayerDetector" type="Area3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5865, 0)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.55601, 0)
collision_layer = 0
collision_mask = 34
@@ -92,7 +93,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.2771, 0)
shape = SubResource("CylinderShape3D_qbmfg")
[node name="Components" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5865, 0)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.55601, 0)
[node name="PatrolBehavior" parent="Components" instance=ExtResource("5_pvjvo")]
unique_name_in_owner = true
@@ -108,11 +109,11 @@ _acquireTargetTime = 2.0
[node name="NavigationAgent" type="NavigationAgent3D" parent="Components"]
unique_name_in_owner = true
avoidance_enabled = true
radius = 1.0
debug_enabled = true
height = 2.0
radius = 3.0
[node name="HitSounds" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5865, 0)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.55601, 0)
[node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true

View File

@@ -33,12 +33,12 @@ script = ExtResource("1_e2477")
[node name="CollisionShape" type="CollisionShape3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 2.2559, 0)
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.65049, 0)
shape = SubResource("CapsuleShape3D_cwfph")
[node name="LineOfSight" type="Area3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 2.2559, 0)
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.65049, 0)
collision_layer = 2
collision_mask = 2
@@ -53,7 +53,7 @@ target_position = Vector3(0, 0, -5)
collision_mask = 3
[node name="Collision" type="Area3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.2559, 0)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.65049, 0)
collision_layer = 2048
collision_mask = 0
@@ -66,7 +66,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.0147337, 0)
[node name="PlayerDetector" type="Area3D" parent="."]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.2559, 0)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.65049, 0)
collision_layer = 0
collision_mask = 34
@@ -74,7 +74,7 @@ collision_mask = 34
shape = SubResource("CylinderShape3D_tbkej")
[node name="Components" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.2559, 0)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.65049, 0)
[node name="PatrolBehavior" parent="Components" instance=ExtResource("4_dxxe5")]
unique_name_in_owner = true
@@ -90,10 +90,10 @@ _acquireTargetTime = 2.0
[node name="NavigationAgent" type="NavigationAgent3D" parent="Components"]
unique_name_in_owner = true
avoidance_enabled = true
radius = 2.0
radius = 3.0
[node name="HitSounds" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.2559, 0)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.65049, 0)
[node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
unique_name_in_owner = true

View File

@@ -102,7 +102,7 @@ unique_name_in_owner = true
[node name="NavigationAgent" type="NavigationAgent3D" parent="Components"]
unique_name_in_owner = true
avoidance_enabled = true
radius = 1.0
radius = 3.0
[node name="SFX" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.09874, 0)

View File

@@ -482,9 +482,27 @@ public partial class Game : Node3D, IGame
_effectService.GetBasicItem<IBaseInventoryItem>();
break;
case ItemTag.UnequipAllItems:
_player.EquipmentComponent.Unequip(_player.EquipmentComponent.EquippedWeapon.Value);
_player.EquipmentComponent.Unequip(_player.EquipmentComponent.EquippedArmor.Value);
_player.EquipmentComponent.Unequip(_player.EquipmentComponent.EquippedAccessory.Value);
_player.Unequip(_player.EquipmentComponent.EquippedWeapon.Value);
_player.Unequip(_player.EquipmentComponent.EquippedArmor.Value);
_player.Unequip(_player.EquipmentComponent.EquippedAccessory.Value);
break;
case ItemTag.RestrictUnequip:
_effectService.GlueAllEquipment(_player);
break;
case ItemTag.EjectAllItems:
_player.EquipmentComponent.EquippedWeapon.Value.Glued = false;
_player.EquipmentComponent.EquippedArmor.Value.Glued = false;
_player.EquipmentComponent.EquippedAccessory.Value.Glued = false;
_player.Unequip(_player.EquipmentComponent.EquippedWeapon.Value);
_player.Unequip(_player.EquipmentComponent.EquippedArmor.Value);
_player.Unequip(_player.EquipmentComponent.EquippedAccessory.Value);
_player.Inventory.Items.Remove(boxItem);
foreach (var item in _player.Inventory.Items.ToList())
ThrowItem(item);
_player.Inventory.Items.Clear();
GameRepo.CloseInventory();
break;
}
}
@@ -611,10 +629,18 @@ public partial class Game : Node3D, IGame
_effectService.MeltAllEquipment(_player);
SfxDatabase.Instance.Play(SoundEffect.DecreaseStat);
break;
case UsableItemTag.GlueAllEquipment:
_effectService.GlueAllEquipment(_player);
SfxDatabase.Instance.Play(SoundEffect.DecreaseStat);
break;
case UsableItemTag.RestoreStats:
_effectService.RestoreParameters(_player);
SfxDatabase.Instance.Play(SoundEffect.IncreaseStat);
break;
case UsableItemTag.LowerTargetTo1HP:
_player.HealthComponent.SetCurrentHealth(1);
SfxDatabase.Instance.Play(SoundEffect.DecreaseStat);
break;
}
}
@@ -633,6 +659,7 @@ public partial class Game : Node3D, IGame
GameRepo.AnnounceMessageOnMainScreen("Experience points effect wore off.");
SfxDatabase.Instance.Play(SoundEffect.MoveUI);
_player.ExperiencePointsComponent.ModifyExpGainRate(_player.ExperiencePointsComponent.ExpGainRate.Value / 2);
_doubleExpTimer.Stop();
}
private void GameRepo_EnemyDied(IEnemy obj)

View File

@@ -273,6 +273,24 @@ public class EffectService
}
}
public void GlueAllEquipment(IPlayer player)
{
var weapon = player.EquipmentComponent.EquippedWeapon.Value;
var armor = player.EquipmentComponent.EquippedArmor.Value;
var accessory = player.EquipmentComponent.EquippedAccessory.Value;
if (weapon != null && !string.IsNullOrEmpty(weapon.ItemName))
weapon.Glued = true;
if (armor != null && !string.IsNullOrEmpty(armor.ItemName))
armor.Glued = true;
if (accessory != null && !string.IsNullOrEmpty(accessory.ItemName))
accessory.Glued = true;
player.EquipmentComponent.UpdateEquipment(weapon);
player.EquipmentComponent.UpdateEquipment(armor);
player.EquipmentComponent.UpdateEquipment(accessory);
}
public void TeleportToRandomRoom(IPlayer player)
{
var currentFloor = _game.CurrentFloor;

View File

@@ -11,7 +11,7 @@ PermanentRaiseHPAmount = 0
PermanentRaiseVTAmount = 8
Name = "Stelo Fragment"
StatDescription = "Restores 30 VT.
If HP is currently full, raises Maximum VT by 8."
If VT is currently full, raises Maximum VT by 8."
FlavorText = ""
SpawnRate = 0.5
BonusAttack = 0

View File

@@ -26,7 +26,7 @@ mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/fix_alpha_border=false
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false

View File

@@ -26,7 +26,7 @@ mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/fix_alpha_border=false
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false

View File

@@ -26,7 +26,7 @@ mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/fix_alpha_border=false
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false

View File

@@ -26,7 +26,7 @@ mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/fix_alpha_border=false
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false

View File

@@ -26,7 +26,7 @@ mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/fix_alpha_border=false
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false

View File

@@ -114,9 +114,32 @@ public partial class ThrownItem : RigidBody3D, IThrownItem
{
case UsableItemTag.LowerTargetTo1HP:
enemy.HealthComponent.SetCurrentHealth(1);
SfxDatabase.Instance.Play(SoundEffect.DecreaseStat);
break;
case UsableItemTag.DecreaseAllStats:
enemy.AttackComponent.Reduce(usableItem.Stats.BonusAttack);
enemy.DefenseComponent.Reduce(usableItem.Stats.BonusDefense);
SfxDatabase.Instance.Play(SoundEffect.DecreaseStat);
break;
case UsableItemTag.DecreaseAttack:
enemy.AttackComponent.LowerMaximumAttack(usableItem.Stats.BonusAttack);
SfxDatabase.Instance.Play(SoundEffect.DecreaseStat);
break;
case UsableItemTag.DecreaseDefense:
enemy.DefenseComponent.LowerMaximumDefense(usableItem.Stats.BonusDefense);
SfxDatabase.Instance.Play(SoundEffect.DecreaseStat);
break;
case UsableItemTag.IncreaseAttack:
enemy.AttackComponent.RaiseMaximumAttack(usableItem.Stats.BonusAttack);
SfxDatabase.Instance.Play(SoundEffect.IncreaseStat);
break;
case UsableItemTag.IncreaseDefense:
enemy.DefenseComponent.RaiseMaximumDefense(usableItem.Stats.BonusDefense);
SfxDatabase.Instance.Play(SoundEffect.IncreaseStat);
break;
case UsableItemTag.TeleportToRandomLocation:
_effectService.TeleportToRandomRoom(enemy);
SfxDatabase.Instance.Play(SoundEffect.TeleportToRandomRoom);
break;
case UsableItemTag.Clone:
_effectService.CloneEnemy(enemy);

View File

@@ -13,7 +13,7 @@ viewport_path = NodePath("Sprite3D/SubViewportContainer/SubViewport")
[node name="Hitbox" type="RigidBody3D"]
process_mode = 1
collision_layer = 3072
collision_layer = 1024
collision_mask = 2049
gravity_scale = 0.2
contact_monitor = true

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=29 format=3 uid="uid://b6akxaacr8jd2"]
[gd_scene load_steps=30 format=3 uid="uid://b6akxaacr8jd2"]
[ext_resource type="Script" uid="uid://bccyfmj8ikewh" path="res://src/map/dungeon/code/SpecialRoom.cs" id="1_r0ujh"]
[ext_resource type="PackedScene" uid="uid://clg0hy24ip0gd" path="res://src/map/dungeon/models/Area 2/Puer/A2-Puer.glb" id="2_r0ujh"]
@@ -105,6 +105,9 @@ size = Vector3(16.0153, 8.34869, 0.344238)
height = 4.7168
radius = 0.452637
[sub_resource type="BoxShape3D" id="BoxShape3D_pycw7"]
size = Vector3(36.5886, 0.982544, 36.2278)
[sub_resource type="BoxShape3D" id="BoxShape3D_407jo"]
size = Vector3(36, 6, 36)
@@ -285,6 +288,10 @@ shape = SubResource("CylinderShape3D_407jo")
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17.5273, -3.47329, -9.92922)
shape = SubResource("CylinderShape3D_407jo")
[node name="CollisionShape3D22" type="CollisionShape3D" parent="Collisions/StaticBody3D2"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.174683, -6.34227, -7.33823)
shape = SubResource("BoxShape3D_pycw7")
[node name="Room" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0)

View File

@@ -89,6 +89,7 @@ theme_override_styles/pressed_mirrored = ExtResource("3_dftre")
theme_override_styles/pressed = ExtResource("3_dftre")
theme_override_styles/normal_mirrored = ExtResource("3_dftre")
theme_override_styles/normal = ExtResource("3_dftre")
disabled = true
shortcut = ExtResource("2_7fwjx")
text = "Enemy Viewer"
alignment = 0
@@ -114,6 +115,7 @@ theme_override_styles/pressed_mirrored = ExtResource("3_dftre")
theme_override_styles/pressed = ExtResource("3_dftre")
theme_override_styles/normal_mirrored = ExtResource("3_dftre")
theme_override_styles/normal = ExtResource("3_dftre")
disabled = true
shortcut = ExtResource("2_7fwjx")
text = "Gallery"
alignment = 0

View File

@@ -1084,6 +1084,48 @@ tracks/2/keys = {
"values": [0, 30]
}
[sub_resource type="Animation" id="Animation_pyqdk"]
resource_name = "Hit Wall"
tracks/0/type = "audio"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("%HitWallSound")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 0.0,
"stream": ExtResource("8_ajbah")
}],
"times": PackedFloat32Array(0)
}
tracks/0/use_blend = true
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Weapon Animations:animation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [&"wall_hit"]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Weapon Animations:frame")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.933333),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0, 28]
}
[sub_resource type="Animation" id="Animation_7rguc"]
resource_name = "Love Judgement"
length = 1.23334
@@ -1417,49 +1459,6 @@ tracks/2/keys = {
"values": [0, 30]
}
[sub_resource type="Animation" id="Animation_pyqdk"]
resource_name = "Hit Wall"
length = 1.0
tracks/0/type = "audio"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("%HitWallSound")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 0.0,
"stream": ExtResource("8_ajbah")
}],
"times": PackedFloat32Array(0)
}
tracks/0/use_blend = true
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Weapon Animations:animation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [&"wall_hit"]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Weapon Animations:frame")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.933333),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0, 28]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_ickvi"]
_data = {
&"Air Slash": SubResource("Animation_l7c4m"),

View File

@@ -163,7 +163,7 @@ public partial class InventoryMenu : Control, IInventoryMenu
ActionPanel.Hide();
SetProcessInput(true);
ActionPanel.SetProcessInput(false);
if (!_player.Inventory.Items.Contains(_currentlySelected.Item.Value))
if (_player.Inventory.Items.Any() && !_player.Inventory.Items.Contains(_currentlySelected.Item.Value))
_currentlySelected = null;
ResetInventoryState();
}

View File

@@ -63,7 +63,7 @@ public partial class LoadNextLevel : Control, IFloorClearMenu
ExitButton.Pressed += ExitButton_Pressed;
}
private void CurrentFloorNumber_Sync(int _) => FloorNumber.Text = _map.CurrentFloorNumber.Value.ToString("D2");
private void CurrentFloorNumber_Sync(int _) => FloorNumber.Text = (_map.CurrentFloorNumber.Value + 1).ToString("D2");
private void EquipmentComponent_EquipmentChanged(IEquipableItem obj)
{