fix: Aquarium no longer uses list to kill fish (#2090)
This commit is contained in:
parent
d5160bd6db
commit
a8b625b338
1 changed files with 7 additions and 11 deletions
|
|
@ -551,25 +551,21 @@ namespace Server.Items
|
||||||
|
|
||||||
public virtual void KillFish(int amount)
|
public virtual void KillFish(int amount)
|
||||||
{
|
{
|
||||||
var toKill = new List<BaseFish>();
|
using var toKill = PooledRefList<Item>.Create();
|
||||||
|
|
||||||
for (var i = 0; i < Items.Count; i++)
|
for (var i = 0; i < Items.Count; i++)
|
||||||
{
|
{
|
||||||
if (Items[i] is BaseFish)
|
if (Items[i] is BaseFish { Dead: false } fish)
|
||||||
{
|
{
|
||||||
var fish = (BaseFish)Items[i];
|
toKill.Add(fish);
|
||||||
|
|
||||||
if (!fish.Dead)
|
|
||||||
{
|
|
||||||
toKill.Add(fish);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
while (amount > 0 && toKill.Count > 0)
|
toKill.Shuffle();
|
||||||
|
|
||||||
|
for (var i = 0; i < amount; i++)
|
||||||
{
|
{
|
||||||
var kill = toKill.TakeRandomElement();
|
(toKill[i] as BaseFish)!.Kill();
|
||||||
kill.Kill();
|
|
||||||
|
|
||||||
amount -= 1;
|
amount -= 1;
|
||||||
LiveCreatures = Math.Max(LiveCreatures - 1, 0);
|
LiveCreatures = Math.Max(LiveCreatures - 1, 0);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue