Make random entity loot and block drops seed-specific
NeunEinser opened this issue ยท 2 comments
Currently, random loot from entities and blocks will be different for every player.
It could be implemented, that the n-th kill of an entity from a specific type always uses the same DeathLootTableSeed depending on the card's seed. The count of kills should be per team.
A similar concept could be applied to blocks that have randomized drops.
So I thought about this a little more.
First of all, I'd want it to work consistently for all loot tables. That would require to make my own implementation of block drops (which would be possible by modifying loot tables).
This also poses the problem that you cannot simply store a single "startseed" for which you initialize all loot tables. That would make some very obvious patterns since you'd end up with the same sequence of seeds for all loot tables. In order to prevent that, some sort of salting would need to be implemented with a hardcoded salt for each loot table.
Assuming you have a perfect, or close to perfect, implementation with no obvious pattern, this still poses the question whether it's actually good for the game in general.
The only thing it would be good for is any kind of seed competitions.
It would suck for general random seed "speed runs" though. The optimal way to play would basically be "have some sort of tool which tells you exactly how much of each mob you need to kill for a certain thing to drop, and generate enough cards until you have one with good odds"
This might be good in some ways, as everything becomes more predictable, and of course if a card looks bad, it might already be a viable strategy to just skip it, even without that additional information. However, I feel like it would not be good a seed, just by looking at the seed, too predictable.
And ofc things like spawn occurrences can still not be influenced at all, giving players with a better spawn rate an advantage anyways, regardless of this implementation.
Because of this, I am closing this as won't implement.