Enemy loot table, start revamping floor node code structure

This commit is contained in:
2026-06-10 17:07:49 -07:00
parent e889709a91
commit fc598ab48f
18 changed files with 103 additions and 20 deletions
+9 -4
View File
@@ -479,10 +479,15 @@ public partial class Game : Node3D, IGame
restorative.GlobalPosition = new Vector3(vector.X, 2f, vector.Z) + (-_player.GetGlobalBasis().Z);
}
private void DropItem(Vector3 vector)
private void DropItem(IEnemyLootTable lootTable, Vector3 vector)
{
var randomItem = ItemDatabase.Instance.PickItem<IBaseInventoryItem>() as Node3D;
var duplicated = randomItem.Duplicate((int)DuplicateFlags.UseInstantiation) as Node3D;
var enemyLootTable = lootTable as EnemyLootTable;
if (lootTable == null || enemyLootTable.Items.Count <= 0)
return;
var randomItem = enemyLootTable.Items.PickRandom();
var pickedItem = ItemDatabase.Instance.Items.Single(x => x.ItemName == randomItem.Name) as Node3D;
var duplicated = pickedItem.Duplicate((int)DuplicateFlags.UseInstantiation) as Node3D;
AddChild(duplicated);
duplicated.GlobalPosition = new Vector3(vector.X, 2f, vector.Z) + (-_player.GetGlobalBasis().Z);
}
@@ -898,7 +903,7 @@ public partial class Game : Node3D, IGame
var rng = new RandomNumberGenerator();
rng.Randomize();
if (rng.Randf() < 0.15f)
DropItem(obj.GlobalPosition);
DropItem(obj.LootTable, obj.GlobalPosition);
else
DropRestorative(obj.GlobalPosition);
}