Blood moon: Difference between revisions

clarify the fact that regular blood moons only exist for gameplay reasons
(clarify the fact that regular blood moons only exist for gameplay reasons)
Line 1: Line 1:
The '''Blood Moon''' is a game mechanic that ensures the world stays populated with enemies and weapons. Every time a blood moon occurs, enemies that have been defeated and overworld weapons that have been picked up by the player respawn.
The '''Blood Moon''' is a game mechanic that ensures the world stays populated with enemies and weapons. Every time a blood moon occurs, enemies that have been defeated and overworld weapons that have been picked up by the player respawn.


Blood moons are also used to reset internal state when some subsystems are running out of memory or become unresponsive. Such blood moons do not follow the regular schedule and are commonly referred to as "panic blood moons".
''Regular'' or ''scheduled blood moons'' (those that occur at midnight) only exist for gameplay reasons: contrary to popular belief, they do ''not'' act as a garbage collection or error repair mechanism.
 
In some rare circumstances, blood moons are also used to reset internal state when some subsystems are running out of memory or become unresponsive. Such blood moons do not follow any regular schedule and are commonly referred to as ''panic blood moons''.


A common misconception is that blood moons help replenish system memory by resetting enemy kill flags. This is however total nonsense, because enemy kill flags are just GameData flags, and all GameData flags are loaded at bootup and stay in memory forever<ref>Even without any code reverse engineering, anyone who has an idea of what they are talking about knows that the game never loads [[Bootup.pack]] (which holds the GameData configuration) again after init so it cannot possibly be unloading flags. Not to mention that it'd be ridiculously inefficient to unload and reload flags all the time.</ref>.
A common misconception is that blood moons help replenish system memory by resetting enemy kill flags. This is however total nonsense, because enemy kill flags are just GameData flags, and all GameData flags are loaded at bootup and stay in memory forever<ref>Even without any code reverse engineering, anyone who has an idea of what they are talking about knows that the game never loads [[Bootup.pack]] (which holds the GameData configuration) again after init so it cannot possibly be unloading flags. Not to mention that it'd be ridiculously inefficient to unload and reload flags all the time.</ref>.