# Skywatcher

The time in Eorzea is .

- Some places have multiple possible weather rates depending on certain conditions. For example, Amh Araeng will always be Everlasting Light until a certain point in the MSQ.
- Certain special weathers such as Tension will replace the predicted weather depending on certain conditions.
- The weathers associated with The
*Endeavor*have no apparent correlation with the weathers experienced during the voyage.

##### Forecaster

Select a place first

Select a place first

##### Upcoming Weather

##### Algorithm

The weather in Eorzea can be predicted. First, the number of Eorzean hours and days since the Unix epoch is calculated.

```
// Get seconds since Jan 1st 1970
const unixSeconds = Date.now() / 1000
// Get Eorzean hours/days since (1 Eorzean hour = 175 seconds)
const eorzeanHours = Math.floor(unixSeconds / 175)
const eorzeanDays = Math.floor(eorzeanHours / 24)
```

Next, compute which of the 3 time chunks the hour falls in.

```
let timeChunk = (eorzeanHours % 24) - (eorzeanHours % 8)
// Adjust time chunk so that
// 16:00 is 00,
// 00:00 is 08,
// 08:00 is 16
timeChunk = (timeChunk + 8) % 24
```

The number of Eorzean days and the time chunk form the seed that is hashed.

```
const seed = eorzeanDays * 100 + timeChunk
// Do a little hashing
const step1 = (seed << 11) ^ seed
const step2 = (step1 >>> 8) ^ step1
// Return a number between 0-99 inclusive
const weatherChance = step2 % 100
```

With `weatherChance`

computed as a number from 0 to 99, each zone can determine its weather. For example, the weather in Eureka Anemos is Gales if `weatherChance`

is between 30 and 59. Its full table of weathers is

`weatherChance` | Weather |
---|---|

00-29 | Fair Skies |

30-59 | Gales |

60-89 | Showers |

90-99 | Snow |