Time/zh: Difference between revisions

From ZeldaMods (Breath of the Wild)
Jump to navigation Jump to search
(Created page with "月相也可以直接用遊戲底層的函數指定(例如這個函數 AIDef:Action/EventSetMoonType),不過我們沒看到任何可以強制指定月相的例子。...")
No edit summary
 
(8 intermediate revisions by the same user not shown)
Line 12: Line 12:


* 如果林克不是用正常方法走出復甦神廟的,那時鐘就會永遠固定在早上 05:15。
* 如果林克不是用正常方法走出復甦神廟的,那時鐘就會永遠固定在早上 05:15。
* 如果林克正常走出復甦神廟,但是沒去開初始之塔(但是不開塔居然可以拿到滑翔傘之類的),那時鐘就會固定在早上 11:00  
* 如果林克正常走出復甦神廟,但是沒接到「封鎖的台地」任務(但是這樣居然可以拿到滑翔傘之類的),那時鐘就會固定在早上 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。
* 如果林克還沒從初始之塔爬下來,而且時鐘超過 165.0 (早上 11:00),那時鐘會被重置成 165.0。
* 如果時鐘走到 360.0,遊戲會做一些子夜檢查,下面會講到。
* 如果時鐘走到 360.0,遊戲會做一些子夜檢查,下面會講到。
* '''血月計時器''' 往前流動 0.0083333 × 幀數。.
* '''血月計時器''' 往前流動 0.0083333 × 幀數。.
Line 68: Line 68:
* 林克在草原上對戰魔獸加儂
* 林克在草原上對戰魔獸加儂
* BloodyMoonProhibition 是 true,可能的理由是你在過場動畫裡或是在小遊戲裡。
* BloodyMoonProhibition 是 true,可能的理由是你在過場動畫裡或是在小遊戲裡。
* 在瓦‧梅德裡跟風咒加儂打架
* 在射瓦‧梅德防護罩
* 在瓦‧娜波力斯裡跟雷咒加儂打架
* 在射瓦‧娜波力斯的腳
* 在打瓦‧露塔裡跟水咒加儂打架
* 在射瓦‧露塔的肩膀
* 某個跟 Sky Manager 有關的條件
* 某個跟 Sky Manager 有關的條件


Line 85: Line 85:
=== 月相 ===
=== 月相 ===


=== 月相 ===
月相取決於你在遊戲裡活了幾天 (WM_NumberOfDays)。精確的式子是 <code>(numberOfDays + x + 1) % 8</code><ref>0x71010E8200</ref>,這裡的 x 在下午的時候是 1,上午的時候是 0。 百分號是模運算(除以八的餘數)。 也就是說,每過一次正午月相就前進一格。
月相取決於你在遊戲裡活了幾天 (WM_NumberOfDays)。精確的式子是 <code>(numberOfDays + x + 1) % 8</code><ref>0x71010E8200</ref>,這裡的 x 在下午的時候是 1,上午的時候是 0。 百分號是模運算(除以八的餘數)。 也就是說,每過一次正午月相就前進一格。


月相也可以直接用遊戲底層的函數指定(例如這個函數 [[AIDef:Action/EventSetMoonType]]),不過我們沒看到任何可以強制指定月相的例子。(通常就是一路睡到想要的月相。)
月相也可以直接用遊戲底層的函數指定(例如這個函數 [[AIDef:Action/EventSetMoonType]]),不過我們沒看到任何可以強制指定月相的例子。(通常就是一路睡到想要的月相。)


The moon schedule has nothing to do with the blood moon schedule.
月相跟血月無關。血月可能會出現在本應不是滿月的子夜,血月之後的隔天也不一定是十六夜。


==== Moon phases ====
==== 月相的喚法 ====


Here are the possible values and associated phases:
雙子驛站的西納巴岡會告訴你今晚會有血月,或是今晚的月相。


* 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

Other languages:

這個條目描述曠野之息裡的時間是如何運作的。

總結

關於時鐘

出復甦神廟後,時鐘從早上 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.
  1. 0x71010E8200