Time/zh: Difference between revisions
(Created page with "=== 360.0 檢查(子夜檢查) ===") |
No edit summary |
||
(26 intermediate revisions by the same user not shown) | |||
Line 12: | Line 12: | ||
* 如果林克不是用正常方法走出復甦神廟的,那時鐘就會永遠固定在早上 05:15。 | * 如果林克不是用正常方法走出復甦神廟的,那時鐘就會永遠固定在早上 05:15。 | ||
* | * 如果林克正常走出復甦神廟,但是沒接到「封鎖的台地」任務(但是這樣居然可以拿到滑翔傘之類的),那時鐘就會固定在早上 11:00 | ||
=== 關於定期血月 === | === 關於定期血月 === | ||
Line 37: | Line 37: | ||
* 時鐘往前撥 0.0083333 × 幀數。本遊戲一秒 30 幀,所以現實生活中的 24 分鐘 = 24 × 60 × 30 幀 = 時鐘往前撥 0.0083333 × 24 × 60 × 30 = 時鐘往前撥 360 = 遊戲內一天。 | * 時鐘往前撥 0.0083333 × 幀數。本遊戲一秒 30 幀,所以現實生活中的 24 分鐘 = 24 × 60 × 30 幀 = 時鐘往前撥 0.0083333 × 24 × 60 × 30 = 時鐘往前撥 360 = 遊戲內一天。 | ||
* | * 如果林克還沒從初始之塔爬下來,而且時鐘超過 165.0 (早上 11:00),那時鐘會被重置成 165.0。 | ||
* 如果時鐘走到 360.0,遊戲會做一些子夜檢查,下面會講到。 | * 如果時鐘走到 360.0,遊戲會做一些子夜檢查,下面會講到。 | ||
* '''血月計時器''' 往前流動 0.0083333 × 幀數。. | * '''血月計時器''' 往前流動 0.0083333 × 幀數。. | ||
Line 45: | Line 45: | ||
=== 360.0 檢查(子夜檢查) === | === 360.0 檢查(子夜檢查) === | ||
WM_NumberOfDays 加一。這個數字是用來計算月相的。 | |||
''' | '''如果血月該出現了''' | ||
如果血月該出現了但是被什麼東西阻止了(下面有解釋什麼會阻止血月),那血月計時器會被設在 2880.0,其他什麼事情都不會發生。如果沒有理由不出血月的話,遊戲會播放 [https://eventviewer.zeldamods.org/viewer.html?data=/d/Demo011_0.json¶ms=1 Demo011_0] (又到了紅月出現的時刻,林克你要小心),播完之後血月計時器歸零。 | |||
那麼什麼時候算是'''血月該出現了'''呢? | |||
簡單來說就是玩家離開了初始台地,而且血月計時器超過 2520.0 了(七個遊戲天)。 | |||
* | * 這時,WM_BloodyDay flag 會被設成 true,代表下個子夜理論上就會有血月出現。 | ||
* | * 血月計時器會歸零。 | ||
Otherwise, the "Bloody end reserve timer" is set to 150. This ensures that WM_BloodyDay is cleared 5 in-game minutes (= 5 seconds in real life) after a Blood Moon occurs. | Otherwise, the "Bloody end reserve timer" is set to 150. This ensures that WM_BloodyDay is cleared 5 in-game minutes (= 5 seconds in real life) after a Blood Moon occurs. | ||
=== | === 阻止血月的理由 === | ||
下面這些東西會阻止血月。 | |||
* | * 林克不在主世界裡(在神獸裡或神廟裡) | ||
* | * 林克在城堡裡 | ||
* | * 林克在草原上對戰魔獸加儂 | ||
* | * BloodyMoonProhibition 是 true,可能的理由是你在過場動畫裡或是在小遊戲裡。 | ||
* | * 在射瓦‧梅德防護罩 | ||
* | * 在射瓦‧娜波力斯的腳 | ||
* | * 在射瓦‧露塔的肩膀 | ||
* | * 某個跟 Sky Manager 有關的條件 | ||
請注意:即使血月被阻止,血月計時器也不會歸零,還是會繼續增加。這些理由也不能阻止 WM_BloodyDay 被設成 true。 | |||
注意二:瓦‧魯達尼亞看似沒有在這個表裡,但是瓦‧魯達尼亞會去設 BloodyMoonProhibition,所以血月還是不會出現。 | |||
=== | === 特殊情況:睡旅館跟消磨時間 === | ||
當你在旅館(或驛站,或德庫樹長老的肚子裡)睡覺,或用營火消磨時間時,時鐘會被快轉到你指定的時間。但是其他像血月計時器之類的計時器並不會跟著轉。(調整微波爐的時鐘不會讓食物更快好。) | |||
如果你的睡覺是有過夜的,那麼遊戲會呼叫 "handle new day" 新的一天函數。這個函數會檢查你是不是睡過某個血月了,是的話,它會補給你林克林克你要小心。 | |||
=== | === 月相 === | ||
月相取決於你在遊戲裡活了幾天 (WM_NumberOfDays)。精確的式子是 <code>(numberOfDays + x + 1) % 8</code><ref>0x71010E8200</ref>,這裡的 x 在下午的時候是 1,上午的時候是 0。 百分號是模運算(除以八的餘數)。 也就是說,每過一次正午月相就前進一格。 | |||
月相也可以直接用遊戲底層的函數指定(例如這個函數 [[AIDef:Action/EventSetMoonType]]),不過我們沒看到任何可以強制指定月相的例子。(通常就是一路睡到想要的月相。) | |||
月相跟血月無關。血月可能會出現在本應不是滿月的子夜,血月之後的隔天也不一定是十六夜。 | |||
==== | ==== 月相的喚法 ==== | ||
雙子驛站的西納巴岡會告訴你今晚會有血月,或是今晚的月相。 | |||
* 0: Full Moon or Blood Moon or on a Bloody Day after 04:00 | * 0: Full Moon or Blood Moon or on a Bloody Day after 04:00 滿月 | ||
* 1: Waning gibbous | * 1: Waning gibbous 十六夜 | ||
* 2: Third quarter | * 2: Third quarter 下弦月 | ||
* 3: "26th-day" | * 3: "26th-day" 殘月 | ||
* 4: New moon | * 4: New moon 新月 | ||
* 5: Waxing crescent | * 5: Waxing crescent 眉月 | ||
* 6: "Seven-day" | * 6: "Seven-day" 上弦月 | ||
* 7: "13-day" | * 7: "13-day" 十三夜 | ||
== References == | == References == |
Latest revision as of 18:42, 5 August 2020
这个条目描述旷野之息里的时间是如何运作的。
总结
关于时钟
出复苏神庙后,时钟从早上 05:15 开始流动,直到早上 11:00 停下来。启动初始之塔后,时钟从 11:00 开始继续流动,并且游戏会让你在右下角看到时钟。
不过呢
- 如果林克不是用正常方法走出复苏神庙的,那时钟就会永远固定在早上 05:15。
- 如果林克正常走出复苏神庙,但是没接到“封锁的台地”任务(但是这样居然可以拿到滑翔伞之类的),那时钟就会固定在早上 11:00
关于定期血月
如果 WM_BloodyDay 是 true,血月会在当晚的子夜发生。没有任何方法可以强迫游戏把 WM_BloodyDay 设成 true,只能等。
WM_BloodyDay 设成 true 的条件是林克离开了台地,而且游戏已经过了七天。
七天是从林克离开复苏神庙开始算的。用营火消磨时间和睡觉都不会加速这个计时器,在暂停选单里度过的时间也不能算。除此之外,不管是在草原还是在神庙里、神兽里,计时器都会继续流动。
因为睡觉并不会把计时器往前拨八小时,同时睡觉之后的载入画面算是暂停画面的一种,所以睡觉只会拖延你看到血月的时间。
一些细节
时钟上的时间(小时:分钟)是一个 [0.0, 360.0] 范围内的福点数。0.0 代表子夜十二点,1.0 代表凌晨 00 点 04 分,依此类推,359.0 代表深夜 23 点 56 分。
游戏开始时,时钟会定在 78.75,换算得早上 05 点 15 分。载入之前的存档时,时钟会定在存档里的时间。
每次滴答
如果过场动画 Demo103_0(走出复苏神庙,环顾四周,看向老人)还没有播放过,那时钟就会一直被重置在 78.75。也就是说,如果你用望远镜穿墙穿出复苏神庙的话,时钟就不会流动。
假设你看过那个过场动画的话,
- 时钟往前拨 0.0083333 × 帧数。本游戏一秒 30 帧,所以现实生活中的 24 分钟 = 24 × 60 × 30 帧 = 时钟往前拨 0.0083333 × 24 × 60 × 30 = 时钟往前拨 360 = 游戏内一天。
- 如果林克还没从初始之塔爬下来,而且时钟超过 165.0 (早上 11:00),那时钟会被重置成 165.0。
- 如果时钟走到 360.0,游戏会做一些子夜检查,下面会讲到。
- 血月计时器 往前流动 0.0083333 × 帧数。.
之后,如果 "Bloody Moon end reserve timer" 的值非零的话(代表血月出现在正头上),游戏会把它减一。如果减了之后变成零,游戏会把 WM_BloodyDay 关掉(血月出现过后不会再下个子夜出现)。
360.0 检查(子夜检查)
WM_NumberOfDays 加一。这个数字是用来计算月相的。
如果血月该出现了
如果血月该出现了但是被什么东西阻止了(下面有解释什么会阻止血月),那血月计时器会被设在 2880.0,其他什么事情都不会发生。如果没有理由不出血月的话,游戏会播放 Demo011_0 (又到了红月出现的时刻,林克你要小心),播完之后血月计时器归零。
那么什么时候算是血月该出现了呢?
简单来说就是玩家离开了初始台地,而且血月计时器超过 2520.0 了(七个游戏天)。
- 这时,WM_BloodyDay flag 会被设成 true,代表下个子夜理论上就会有血月出现。
- 血月计时器会归零。
Otherwise, the "Bloody end reserve timer" is set to 150. This ensures that WM_BloodyDay is cleared 5 in-game minutes (= 5 seconds in real life) after a Blood Moon occurs.
阻止血月的理由
下面这些东西会阻止血月。
- 林克不在主世界里(在神兽里或神庙里)
- 林克在城堡里
- 林克在草原上对战魔兽加侬
- BloodyMoonProhibition 是 true,可能的理由是你在过场动画里或是在小游戏里。
- 在射瓦‧梅德防护罩
- 在射瓦‧娜波力斯的脚
- 在射瓦‧露塔的肩膀
- 某个跟 Sky Manager 有关的条件
请注意:即使血月被阻止,血月计时器也不会归零,还是会继续增加。这些理由也不能阻止 WM_BloodyDay 被设成 true。
注意二:瓦‧鲁达尼亚看似没有在这个表里,但是瓦‧鲁达尼亚会去设 BloodyMoonProhibition,所以血月还是不会出现。
特殊情况:睡旅馆跟消磨时间
当你在旅馆(或驿站,或德库树长老的肚子里)睡觉,或用营火消磨时间时,时钟会被快转到你指定的时间。但是其他像血月计时器之类的计时器并不会跟著转。(调整微波炉的时钟不会让食物更快好。)
如果你的睡觉是有过夜的,那么游戏会呼叫 "handle new day" 新的一天函数。这个函数会检查你是不是睡过某个血月了,是的话,它会补给你林克林克你要小心。
月相
月相取决于你在游戏里活了几天 (WM_NumberOfDays)。精确的式子是 (numberOfDays + x + 1) % 8
[1],这里的 x 在下午的时候是 1,上午的时候是 0。 百分号是模运算(除以八的馀数)。 也就是说,每过一次正午月相就前进一格。
月相也可以直接用游戏底层的函数指定(例如这个函数 AIDef:Action/EventSetMoonType),不过我们没看到任何可以强制指定月相的例子。(通常就是一路睡到想要的月相。)
月相跟血月无关。血月可能会出现在本应不是满月的子夜,血月之后的隔天也不一定是十六夜。
月相的唤法
双子驿站的西纳巴冈会告诉你今晚会有血月,或是今晚的月相。
- 0: Full Moon or Blood Moon or on a Bloody Day after 04:00 满月
- 1: Waning gibbous 十六夜
- 2: Third quarter 下弦月
- 3: "26th-day" 残月
- 4: New moon 新月
- 5: Waxing crescent 眉月
- 6: "Seven-day" 上弦月
- 7: "13-day" 十三夜
References
- For more technical details, read the article on the WorldMgr. Sections of that article were extracted from it and simplified here.
- ↑ 0x71010E8200