Blood moon: Difference between revisions
Jump to navigation
Jump to search
→Panic Blood Moons
imported>Leoetlino |
imported>Leoetlino |
||
(4 intermediate revisions by the same user not shown) | |||
Line 7: | Line 7: | ||
== Scheduled Blood Moons == | == Scheduled Blood Moons == | ||
{{link to article|link=WorldMgr#Midnight checks}} | {{link to article|link=WorldMgr#Midnight checks}} | ||
Scheduled Blood Moons are based on a timer that starts running as soon as the "step out of Shrine of Resurrection" (Demo103_0) has finished. When the timer reaches 7 in-game days, the WM_BloodyDay flag is set. The next time it is midnight, assuming blood moons are not inhibited, the Blood Moon cutscene will trigger. For more details, read [[WorldMgr]]. | Scheduled Blood Moons are based on a timer that starts running as soon as the "step out of Shrine of Resurrection" (Demo103_0) has finished. When the timer reaches 7 in-game days, the WM_BloodyDay flag is set. The next time it is midnight, assuming blood moons are not inhibited, the Blood Moon cutscene will trigger. For more details, read [[WorldMgr]]. | ||
Line 14: | Line 15: | ||
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. | ||
Panic conditions are checked every frame by [[GameScene]], which also keeps track of the panic reason in an unsigned 32-bit integer so that memory issues can be reported to Nintendo via the [[telemetry]] system. | Panic conditions are checked every frame by [[GameScene#precalc]], which also keeps track of the panic reason in an unsigned 32-bit integer so that memory issues can be reported to Nintendo via the [[telemetry]] system. | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 41: | Line 42: | ||
A panic moon causes enemies and other respawnable objects to respawn since it calls [https://eventviewer.zeldamods.org/viewer.html?data=/d/Demo011_0.json¶ms=1&entry=Demo011_0&node=Event3 Demo011_0] just like the regular blood moon code. The demo contains a call to [[AIDef:Action/EventOffWaitRevivalAction]] (OffWaitRevival), which appears to be what actually resets the revival flags. | A panic moon causes enemies and other respawnable objects to respawn since it calls [https://eventviewer.zeldamods.org/viewer.html?data=/d/Demo011_0.json¶ms=1&entry=Demo011_0&node=Event3 Demo011_0] just like the regular blood moon code. The demo contains a call to [[AIDef:Action/EventOffWaitRevivalAction]] (OffWaitRevival), which appears to be what actually resets the revival flags. | ||
=== | === Panic blood moon inhibitors === | ||
{{ | Panic blood Moons can only occur if '''all''' of the following conditions are '''false'''<ref>Switch 1.5.0 0x71007ADFB0</ref>: | ||
* the player is in a dungeon, AocField, GameTestField, GameTestField2, or any debug or dev map | |||
* the Fade screen (loading screen) is opened | |||
* some [[EventMgr]] check returns false{{check}} | |||
* there is an active event | |||
* the player actor does not exist | |||
* the player is more than 0.25 distance units away from his save position (game data flag: PlayerSavePos) | |||
== Notes == | == Notes == |