var getRandomVector = () => new Vector2(system.Random.NextFloat(-Offset, Offset), system.Random.NextFloat(-Offset, Offset));
- foreach (var (entityId, minMax) in Spawn)
+ var executions = 1;
+ if (system.EntityManager.TryGetComponent<StackComponent>(owner, out var stack))
{
- var count = minMax.Min >= minMax.Max
- ? minMax.Min
- : system.Random.Next(minMax.Min, minMax.Max + 1);
-
- if (count == 0) continue;
+ executions = stack.Count;
+ }
- if (EntityPrototypeHelpers.HasComponent<StackComponent>(entityId, system.PrototypeManager, system.ComponentFactory))
+ foreach (var (entityId, minMax) in Spawn)
+ {
+ for (var execution = 0; execution < executions; execution++)
{
- var spawned = system.EntityManager.SpawnEntity(entityId, position.Offset(getRandomVector()));
- system.StackSystem.SetCount(spawned, count);
+ var count = minMax.Min >= minMax.Max
+ ? minMax.Min
+ : system.Random.Next(minMax.Min, minMax.Max + 1);
- TransferForensics(spawned, system, owner);
- }
- else
- {
- for (var i = 0; i < count; i++)
+ if (count == 0) continue;
+
+ if (EntityPrototypeHelpers.HasComponent<StackComponent>(entityId, system.PrototypeManager, system.ComponentFactory))
{
var spawned = system.EntityManager.SpawnEntity(entityId, position.Offset(getRandomVector()));
+ system.StackSystem.SetCount(spawned, count);
TransferForensics(spawned, system, owner);
}
+ else
+ {
+ for (var i = 0; i < count; i++)
+ {
+ var spawned = system.EntityManager.SpawnEntity(entityId, position.Offset(getRandomVector()));
+
+ TransferForensics(spawned, system, owner);
+ }
+ }
}
}
}