1,158
edits
(One intermediate revision by the same user not shown) | |||
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. | ||
''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>. | ||
Line 11: | Line 13: | ||
== Panic Blood Moons == | == Panic Blood Moons == | ||
Panic Blood Moons occur when the game is running out of memory<ref>Debug play reports refer to the event as a "BloodyMoon ForMemory" at 0x71007A95B4 (Switch 1.5.0)</ref> or when some tasks are taking too much time. | Panic Blood Moons occur when the game is running out of memory<ref>Debug play reports refer to the event as a "BloodyMoon ForMemory" at 0x71007A95B4 (Switch 1.5.0)</ref> or when some tasks are taking too much time. Unlike regular blood moons, panic moons trigger a full system reset and take longer to execute. | ||
Contrary to a widespread theory, they are not used as a generic error handler or a fallback for "unhandled events". Panic blood moons can only occur in specific cases. | Contrary to a widespread theory, they are not used as a generic error handler or a fallback for "unhandled events". Panic blood moons can only occur in specific cases. |