Enemy loot table, start revamping floor node code structure
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user