ZarroTsu
Official Terrarian
I've noticed a few threads intent on alleviating drop rates, and this is another method I've had on the back-burner.
"Chaining" drops would be the act of killing a monster with the same loot repeatedly and exclusively. As the 'chain' gets longer, the drop rate of the item you're looking for would become more and more likely. When the item is dropped, the chain would be reset to zero.
Killing a monster that does not drop the same loot would "break" (zero) the chain, resetting the odds to default, and forcing the hunter to start over.
Saving/exiting would also "break" (zero) the chain.
"Chaining" drops would be the act of killing a monster with the same loot repeatedly and exclusively. As the 'chain' gets longer, the drop rate of the item you're looking for would become more and more likely. When the item is dropped, the chain would be reset to zero.
Killing a monster that does not drop the same loot would "break" (zero) the chain, resetting the odds to default, and forcing the hunter to start over.
Saving/exiting would also "break" (zero) the chain.
On a basis of coding this, the item code(s) and chain count would simply be stored on the Character entity as a 2D or 3D array, and checked/added/changed as necessary.
I assume enemy kills and the character entity are connected in a way that this could work, since the banner drops per 50 kills goes to the specific player that dealt the 50th kill. So implementing this shouldn't be difficult, in theory.
Upon saving the character, the chain can simply be neglected from being saved, and initialized as {null} for item values and {0} for each chain count.
If I recall correctly, enemy drop rates are based on rand({odds}), so the act of subtracting the chain's value from {odds} would be the simplest method.
I assume enemy kills and the character entity are connected in a way that this could work, since the banner drops per 50 kills goes to the specific player that dealt the 50th kill. So implementing this shouldn't be difficult, in theory.
Upon saving the character, the chain can simply be neglected from being saved, and initialized as {null} for item values and {0} for each chain count.
If I recall correctly, enemy drop rates are based on rand({odds}), so the act of subtracting the chain's value from {odds} would be the simplest method.