Diferenças entre edições de "Modificações:Dados climáticos"
(Há 13 revisões intermédias de 5 utilizadores que não estão a ser apresentadas) | |||
Linha 1: | Linha 1: | ||
← [[Modificações:Índice|Índice]] | ← [[Modificações:Índice|Índice]] | ||
− | |||
Esta página documenta como é gerado o [[clima]] dentro do jogo. | Esta página documenta como é gerado o [[clima]] dentro do jogo. | ||
==Dados== | ==Dados== | ||
− | O clima é controlado integralmente pelo campo < | + | O clima é controlado integralmente pelo campo <samp>Game1::weatherForTomorrow</samp>. Os possível valores são: |
− | {| class="wikitable" | + | {|class="wikitable" |
|- | |- | ||
! valor | ! valor | ||
Linha 13: | Linha 12: | ||
|- | |- | ||
| 0 | | 0 | ||
− | | < | + | | <samp>weather_sunny</samp> |
| Ensolarado | | Ensolarado | ||
|- | |- | ||
| 1 | | 1 | ||
− | | < | + | | <samp>weather_rain</samp> |
| Chovendo | | Chovendo | ||
|- | |- | ||
| 2 | | 2 | ||
− | | < | + | | <samp>weather_debris</samp> |
| Ventando | | Ventando | ||
|- | |- | ||
| 3 | | 3 | ||
− | | < | + | | <samp>weather_lightning</samp> |
| Tempestade | | Tempestade | ||
|- | |- | ||
| 4 | | 4 | ||
− | | < | + | | <samp>weather_festival</samp> |
| Festival | | Festival | ||
|- | |- | ||
| 5 | | 5 | ||
− | | < | + | | <samp>weather_snow</samp> |
| Neve | | Neve | ||
|- | |- | ||
| 6 | | 6 | ||
− | | < | + | | <samp>weather_wedding</samp> |
| Casamento | | Casamento | ||
|} | |} | ||
Linha 43: | Linha 42: | ||
==Algoritmo== | ==Algoritmo== | ||
===Clima fixo=== | ===Clima fixo=== | ||
− | Certas | + | Certas datas possuem sempre o mesmo clima: |
− | {| class="wikitable" | + | {|class="wikitable" |
|- | |- | ||
! data | ! data | ||
Linha 52: | Linha 51: | ||
|- | |- | ||
| primavera 1 | | primavera 1 | ||
− | | < | + | | <samp>weather_sunny</samp> |
− | | < | + | | <samp>newday</samp> e <samp>tv</samp> |
|- | |- | ||
| primevera 2 (ano 1) | | primevera 2 (ano 1) | ||
− | | < | + | | <samp>weather_sunny</samp> |
− | | < | + | | <samp>newday</samp> |
|- | |- | ||
| primavera 3 (ano 1) | | primavera 3 (ano 1) | ||
− | | < | + | | <samp>weather_rain</samp> |
− | | < | + | | <samp>newday</samp> |
|- | |- | ||
| primavera 4 (ano 1) | | primavera 4 (ano 1) | ||
− | | < | + | | <samp>weather_sunny</samp> |
− | | < | + | | <samp>newday</samp> |
|- | |- | ||
| primavera 13 | | primavera 13 | ||
− | | < | + | | <samp>weather_festival</samp> |
− | | < | + | | <samp>newday</samp> |
|- | |- | ||
| primavera 24 | | primavera 24 | ||
− | | < | + | | <samp>weather_festival</samp> |
− | | < | + | | <samp>newday</samp> |
|- | |- | ||
| verão 1 | | verão 1 | ||
− | | < | + | | <samp>weather_sunny</samp> |
− | | < | + | | <samp>newday</samp> e <samp>tv</samp> |
|- | |- | ||
| verão 11 | | verão 11 | ||
− | | < | + | | <samp>weather_festival</samp> |
− | | < | + | | <samp>newday</samp> |
|- | |- | ||
| verão 13 | | verão 13 | ||
− | | < | + | | <samp>weather_lightning</samp> |
− | | < | + | | <samp>newday</samp> |
|- | |- | ||
| verão 26 | | verão 26 | ||
− | | < | + | | <samp>weather_lightning</samp> |
− | | < | + | | <samp>newday</samp> |
|- | |- | ||
| verão 28 | | verão 28 | ||
− | | < | + | | <samp>weather_festival</samp> |
− | | < | + | | <samp>newday</samp> |
|- | |- | ||
| outono 1 | | outono 1 | ||
− | | < | + | | <samp>weather_sunny</samp> |
− | | < | + | | <samp>newday</samp> e <samp>tv</samp> |
|- | |- | ||
| outono 16 | | outono 16 | ||
− | | < | + | | <samp>weather_festival</samp> |
− | | < | + | | <samp>newday</samp> |
|- | |- | ||
| outono 27 | | outono 27 | ||
− | | < | + | | <samp>weather_festival</samp> |
− | | < | + | | <samp>newday</samp> |
|- | |- | ||
| inverno 1 | | inverno 1 | ||
− | | < | + | | <samp>weather_sunny</samp> |
− | | < | + | | <samp>newday</samp> e <samp>tv</samp> |
|- | |- | ||
| inverno 8 | | inverno 8 | ||
− | | < | + | | <samp>weather_festival</samp> |
− | | < | + | | <samp>newday</samp> |
|- | |- | ||
| inverno 14 | | inverno 14 | ||
− | | < | + | | <samp>weather_sunny</samp> |
− | | < | + | | <samp>newday</samp> |
|- | |- | ||
| inverno 15 | | inverno 15 | ||
− | | < | + | | <samp>weather_sunny</samp> |
− | | < | + | | <samp>newday</samp> |
|- | |- | ||
| inverno 16 | | inverno 16 | ||
− | | < | + | | <samp>weather_sunny</samp> |
− | | < | + | | <samp>newday</samp> |
|- | |- | ||
| inverno 25 | | inverno 25 | ||
− | | < | + | | <samp>weather_festival</samp> |
− | | < | + | | <samp>newday</samp> |
|} | |} | ||
===Geração do clima=== | ===Geração do clima=== | ||
− | O clima em Stardew Valley é definido dentro da função < | + | O clima em Stardew Valley é definido dentro da função <samp>Game1::newDayAfterFade()</samp> (após o código de mudança de dia, mas antes do evento do SMAPI <samp>SaveEvents.BeforeSave</samp>). |
O jogo segue estes passos para decidir que clima e detritos serão definidos para o dia seguinte: | O jogo segue estes passos para decidir que clima e detritos serão definidos para o dia seguinte: | ||
# Verifique o [[#Forced weather|clima fixo]]. | # Verifique o [[#Forced weather|clima fixo]]. | ||
− | # Se hoje é um festival, define o clima como < | + | # Se hoje é um festival, define o clima como <samp>weather_festival</samp>. |
− | # Se hoje é um casamento, define o clima como < | + | # Se hoje é um casamento, define o clima como <samp>weather_wedding</samp>. |
− | # Define < | + | # Define <samp>Game1::wasRainingYesterday</samp> com base em se havia chuva ou tempestade. |
− | # Redefine todos os sinalizadores de tempo e os coloca no seguinte padrão | + | # Redefine todos os sinalizadores de tempo e os coloca no seguinte padrão: |
− | ## Se vai haver chuva ou tempestade, ajusta o sinal de chuva para true | + | ## Se vai haver chuva ou tempestade, ajusta o sinal de chuva para true; |
− | ## Se vai haver uma tempestade, ajusta o sinal de tempestade para true | + | ## Se vai haver uma tempestade, ajusta o sinal de tempestade para true; |
− | ## Se o tempo é (ensolarado, detritos) ou (festival, nevando, casamento), limpa todos os sinalizadores | + | ## Se o tempo é (ensolarado, detritos) ou (festival, nevando, casamento), limpa todos os sinalizadores; |
− | ## Se estiver | + | ## Se estiver nevando, define nevando para true; |
− | ## Em seguida, define a música com base nisto | + | ## Em seguida, define a música com base nisto; |
− | ## Limpa a matriz meteorológica de detritos e os sinalizadores | + | ## Limpa a matriz meteorológica de detritos e os sinalizadores; |
− | ## | + | ## Se o pólen não for nulo, limpa sua visibilidade; |
− | ## | + | ## Se o casamento é detrito, popula o array de detritos; |
− | # | + | # Se não está chovendo e a chance de chover amanhã é menor que 0,1, o jogo tentará criar um dia com pólen. |
− | # | + | # O jogo então calcula a chance de chuva para amanhã. Ele segue o seguinte algoritmo: |
− | ## | + | ## Checa se é verão: |
− | ### | + | ### Se não é verão, checa se é inverno: |
− | #### | + | #### Se não é inverno, a chance de chuva é de 0,183; |
− | #### | + | #### Senão, é 0,63; |
− | ### | + | ### Se é verão, o jogo usa o seguinte: Checa se é o dia 1; |
− | #### | + | #### Se não é, a chance é de 0,12 + <samp>Game1::dayOfMonth</samp> * 3/1000; |
− | #### | + | #### Se é, a chance é 0. O que.. é meio redundante, já que os dias de clima fixo já cuidam disso; |
− | # | + | # Checa se um número randômico é menor do que as chances. Se sim, o jogo segue o seguinte algoritmo: |
− | ## | + | ## Define <samp>Game1::weatherForTomorrow</samp> para <samp>weather_rain</samp>; |
− | ## | + | ## Se: |
− | ### | + | ### É verão e o número randômico é menor que 0,85; |
− | ### | + | ### Ou se não é inverno e se o número randômico é menor que 0,25 E o dia do mês é maior que 2 e mais do que 27 dias já foram jogados; |
− | ### | + | ### Define <samp>Game1::weatherForTomorrow</samp> para <samp>weather_lightning</samp> |
− | ## | + | ## Se e inverno: |
− | ### | + | ### Define <samp>Game1::weatherForTomorrow</samp> para <samp>weather_snow</samp> |
− | # | + | # Senão, se o número for maior que a chance de chover: |
− | ## | + | ## Se você jogou menos que 3 dias: |
− | ## | + | ## Ou, se: |
− | ### | + | ### Não é primavera ou um número randômico é igual ou maior a 0,2 (então 80%) e é primavera; |
− | ### | + | ### E não é outono ou um número randômico é maior ou igual a 0,6 (então 40%) e é outono; |
− | ### | + | ### Ou, se é um dia de casamento hoje: |
− | #### | + | #### Define <samp>Game1::weatherForTomorrow</samp> para <samp>weather_sunny</samp> se verdadeiro; |
− | #### | + | #### Define <samp>Game1::weatherForTomorrow</samp> para <samp>weather_debris</samp> se falso; |
− | ## | + | ## Checa se amanhã e um festival e define o clima para <samp>weather_festival</samp> se verdadeiro; |
− | ## | + | ## Novamente força o terceiro dia a ser <samp>weather_rain</samp>; |
− | + | Nesse ponto, a função principal do jogo termina a definição do clima. | |
− | === | + | ===Previsão do tempo=== |
− | + | A TV checa o clima, mas vai ocasionalmente defini-lo em certos dias. Isso e mostrado na seguinte tabela. | |
− | + | A TV define o clima nos dias: | |
− | {| class="wikitable" | + | {|class="wikitable" |
|- | |- | ||
− | ! | + | ! data |
− | ! | + | ! clima |
|- | |- | ||
− | | | + | | primavera 1 |
− | | < | + | | <samp>weather_sunny</samp>¹ |
|- | |- | ||
− | | | + | | primavera 3 |
− | | < | + | | <samp>weather_rainy</samp>¹ |
|- | |- | ||
− | | | + | | verão1 |
− | | < | + | | <samp>weather_sunny</samp>¹ |
|- | |- | ||
− | | | + | | outono 1 |
− | | < | + | | <samp>weather_sunny</samp>¹ |
|- | |- | ||
− | | | + | | inverno 1 |
− | | < | + | | <samp>weather_sunny</samp>¹ |
|} | |} | ||
− | <small>¹ | + | <small>¹ Também definido (e portanto sobrescrito) pelo método <samp>Game1::newDayAfterFade()</samp>.</small><br /> |
− | + | A TV irá checar o clima e mostrará a seguinte mensagem: | |
− | {| class="wikitable" | + | {|class="wikitable" |
|- | |- | ||
− | ! | + | ! clima |
− | ! | + | ! menssagem |
|- | |- | ||
− | | | + | | ensolarado ou casamento |
− | | 50% chance | + | | 50% de chance cada: |
− | * " | + | * "O dia todo será claro e ensolarado." |
− | * " | + | * "Amanhã será um dia lindo e ensolarado!" |
|- | |- | ||
− | | | + | | chuva |
− | | " | + | | "Vai chover o dia todo amanhã." |
|- | |- | ||
− | | | + | | deritos |
− | | | + | | Por condições: |
− | # | + | # Se primavera: "Parcialmente nublado com uma brisa leve. Esperem por bastante pólen!" |
− | # | + | # Se não é outono: "Vai nevar o dia todo. Se agrasalhem, pessoal!" e o seu padrão é: "O dia vai ser nublado e com rajadas de vento durante todo o dia." |
− | # | + | # Se tempestade: "Parece que uma tempestade está se aproximando. Vão cair raios e trovões." |
− | # | + | # Se festival, o jogo tenta ler as informações do festival. Se ele falhar, a seguinte mensagem será mostrada "Hã... que estranho. A minha planilha de informações só diz \"nulo\". Que vergonha... " Se ele tiver sucesso ele falará quando e onde é o festival. |
− | # | + | # Se nevar, tem 50% de chance entre dois possíveis diálogos: "Esperem bastante neve amanhã." ou "Agasalhem-se, pessoal. Vai nevar amanhã!" |
|- | |- | ||
− | | '' | + | | ''qualquer outro'' |
− | | | + | | Retorna uma string vazia (nunca deve acontecer). |
|} | |} | ||
− | ''' | + | '''Nota:''' A TV não será necessariamente precisa para qualquer outro dia que não seja dias de festival, o primeiro dia do mês e o terceiro dia da primavera, que são definidos à força pelo método <samp>Game1::newDayAfterFade</samp>. Ajudantes de fazenda(e jogadores que não são o host) podem até mesmo não conseguir essa precisão no primeiro dia do mês ou no terceiro dia da primavera. |
− | ''' | + | '''Nota 2:''' O Mercado Noturno não é considerado um festival quando se trata do clima. |
− | === | + | ===Ícone do Clima=== |
− | + | O ícone do clima é definido em <samp>Game1::updateWeatherIcon</samp>, que define um index em <samp>LooseSprite/Cursors.xnb</samp>: | |
− | # | + | # Se nevando: 7. |
− | # | + | # Se ensolarado: 2. |
− | # | + | # Se casamento: 0. |
− | # | + | # Se festival: 1. |
− | # | + | # Se chovendo: 4. |
− | # | + | # Se tempestade: 5. |
− | # | + | # Se primavera: clima com detritos é 3. |
− | # | + | # Se verão: não definido (torna ao padrão que é ensolarado). |
− | # | + | # Se outono: 6. |
− | # | + | # Se inverno: 7 (o mesmo que nevando). |
− | === | + | ===Totem de Chuva=== |
− | + | O totem de chuva(item #681) é controlado pelo <samp>Object::rainTotem</samp>, que é invocado pelo <samp>Object::performUseAction</samp>. Se amanhã é um dia de festival, o item é usado mas nada acontece. Caso contrário, um item é usado e define o clima de amanhã para <samp>weather_rain</samp> e mostra a mensagem. | |
− | == | + | ==Probabilidade de clima por tipo== |
− | + | Essa seção explica a probabilidade de cada tipo de clima. Isso somente se aplica à datas que não tenham [[#Clima_fixo|clima fixo]]. | |
− | === | + | ===Ensolarado=== |
− | + | O clima ensolarado utiliza as variáveis de clima 0,4 e 6. | |
− | * | + | * Primavera: Há 18,3% de chance base de chuva (81,7% de chance para os outros possíveis climas). Se não chover, tem 80% de chance do clima se manter ensolarado (exceto no dia 3 da primavera, quando vai ser sempre chuvoso). Isso significa que na primavera tem 66,4% de chance do clima ser ensolarado. |
− | * | + | * Verão: A chance de um clima ensolarado diminui constantemente a cada dia, de 86% do primeiro dia do verão para 79,9% no dia 28. O cálculo da chance é, mais precisamente, 1 - [13% + (0,3 * dia do mês)] por dia, sendo que a chance é 0% no dia 1. |
− | * | + | * Outono: Idêntico à primavera, mas sem clima fixo. |
− | * | + | * Inverno: Há chance de 63% de precipitação, então somente 37% de chance de um dia ensolarado. |
− | === | + | ===Chuvoso=== |
− | * | + | * Primavera: Há 18,3% de chance de chuva. Se chover, tem uma chance de 25% de tempestades, ''exceto no primeiro ano''. Então as chances de chover na Primavera são de 18,3% no primeiro ano, e 13,725% do ano 2 em diante. Sempre chove no dia 3 da primavera do ano 1. |
− | * | + | * Verão: A chance the clima chuvoso aumenta constantemente a cada dia indo de 14% no dia 2 do verão para 21,1% no dia 27. Há uma chance de 85% de que chuvas se tornem tempestades. Então temos uma escala de [13% + (0,3 * dia do mês)] * 0,85 para determinar as chances de chover. |
− | * | + | * Outono: O mesmo que a primavera, exceto que o outono do ano 1 pode ser tempestuoso então tem uma chance de 13.725%. |
− | * | + | * Inverno: nunca chove. |
− | === | + | ===Detritos=== |
− | + | Clima com detritos utiliza a variável de clima 2. | |
− | * | + | * Primavera: Há 20% de chance de acontecer depois de um dia chuvoso, então aproximadamente 16,6% de chance de clima com detritos. |
− | * | + | * Verão: Não tem clima com detritos. |
− | * Fall: | + | * Fall: Há 60% de chance de acontecer depois de um dia chuvoso, então aproximadamente 49,8% de chance de clima com detritos. |
− | * Winter: | + | * Winter: Não tem clima com detritos. |
− | === | + | ===Tempestuoso=== |
− | + | Clima tempestuoso utiliza a variável de clima 3. | |
− | * | + | * Primavera: 4,57% de chance de tempestades. |
− | * | + | * Verão: Chance de tempestades variável; Começa em 11% e aumenta até 17,9%. |
− | * | + | * Outono: 4.,7% de chance de tempestades. |
− | * | + | * Inverno: não há tempestades. |
− | === | + | ===Neve=== |
− | + | No inverno há 63% de chance de nevar. Nenhuma outra estação tem neve. | |
− | == | + | ===Salvar arquivos=== |
− | + | O arquivo salvo é um instantâneo do dia às 06h00 da manhã seguinte. O campo <samp> WeatherForTommorow </samp> foi usado para calcular o tempo, mas alterá-lo não tem efeito sobre o tempo, uma vez que os sinalizadores de tempo já foram definidos por este ponto. Para alterar o clima, você precisa definir uma dessas combinações de sinalizadores: | |
− | {| class="wikitable" | + | {|class="wikitable" |
|- | |- | ||
! weather | ! weather | ||
− | ! < | + | ! <samp>isRaining</samp> |
− | ! < | + | ! <samp>isDebrisWeather</samp> |
− | ! < | + | ! <samp>isLightning</samp> |
− | ! < | + | ! <samp>isSnowing</samp> |
|- | |- | ||
− | | | + | | Ensolarado |
| ☐ | | ☐ | ||
| ☐ | | ☐ | ||
Linha 309: | Linha 308: | ||
| ☐ | | ☐ | ||
|- | |- | ||
− | | | + | | Chuvoso |
| ☑ | | ☑ | ||
| ☐ | | ☐ | ||
Linha 315: | Linha 314: | ||
| ☐ | | ☐ | ||
|- | |- | ||
− | | | + | | Tempestade |
| ☑ | | ☑ | ||
| ☐ | | ☐ | ||
Linha 321: | Linha 320: | ||
| ☐ | | ☐ | ||
|- | |- | ||
− | | | + | | Detritos |
| ☐ | | ☐ | ||
| ☑ | | ☑ | ||
Linha 327: | Linha 326: | ||
| ☐ | | ☐ | ||
|- | |- | ||
− | | | + | | Nevasca |
| ☐ | | ☐ | ||
| ☐ | | ☐ | ||
Linha 339: | Linha 338: | ||
| ☐ | | ☐ | ||
|- | |- | ||
− | | | + | | Casamento |
| ☐ | | ☐ | ||
| ☐ | | ☐ | ||
Linha 346: | Linha 345: | ||
|} | |} | ||
− | ''' | + | '''Nota:''' mundando <samp>isDebrisWeather</samp> durando um jogo ativo não irá criar o array. Você irá precisar chamar <samp>Game1::populateDebrisWeatherArray</samp> para conseguir que os detritos sejam populados. De maneira semelhante, se você está removendo a flag de clima com detritos, lembre-se de chamar <samp>Game1::debrisWeather::Clear</samp>. |
− | == | + | ==Notas/FAQ== |
* A TV pode ser consertada substituindo-a - ou apenas usando o Entoroax's Framework. | * A TV pode ser consertada substituindo-a - ou apenas usando o Entoroax's Framework. | ||
− | + | * Você pode definir neve e detritos a qualquer momento, o jogo simplesmente não vai. | |
− | + | * Você não pode colocar detritos e chover ao mesmo tempo. | |
[[Category:Modificações]] | [[Category:Modificações]] | ||
[[en:Modding:Weather data]] | [[en:Modding:Weather data]] |
Edição atual desde as 16h21min de 19 de fevereiro de 2024
← Índice Esta página documenta como é gerado o clima dentro do jogo.
Dados
O clima é controlado integralmente pelo campo Game1::weatherForTomorrow. Os possível valores são:
valor | constante | clima |
---|---|---|
0 | weather_sunny | Ensolarado |
1 | weather_rain | Chovendo |
2 | weather_debris | Ventando |
3 | weather_lightning | Tempestade |
4 | weather_festival | Festival |
5 | weather_snow | Neve |
6 | weather_wedding | Casamento |
Algoritmo
Clima fixo
Certas datas possuem sempre o mesmo clima:
data | clima | sobrescrito por |
---|---|---|
primavera 1 | weather_sunny | newday e tv |
primevera 2 (ano 1) | weather_sunny | newday |
primavera 3 (ano 1) | weather_rain | newday |
primavera 4 (ano 1) | weather_sunny | newday |
primavera 13 | weather_festival | newday |
primavera 24 | weather_festival | newday |
verão 1 | weather_sunny | newday e tv |
verão 11 | weather_festival | newday |
verão 13 | weather_lightning | newday |
verão 26 | weather_lightning | newday |
verão 28 | weather_festival | newday |
outono 1 | weather_sunny | newday e tv |
outono 16 | weather_festival | newday |
outono 27 | weather_festival | newday |
inverno 1 | weather_sunny | newday e tv |
inverno 8 | weather_festival | newday |
inverno 14 | weather_sunny | newday |
inverno 15 | weather_sunny | newday |
inverno 16 | weather_sunny | newday |
inverno 25 | weather_festival | newday |
Geração do clima
O clima em Stardew Valley é definido dentro da função Game1::newDayAfterFade() (após o código de mudança de dia, mas antes do evento do SMAPI SaveEvents.BeforeSave).
O jogo segue estes passos para decidir que clima e detritos serão definidos para o dia seguinte:
- Verifique o clima fixo.
- Se hoje é um festival, define o clima como weather_festival.
- Se hoje é um casamento, define o clima como weather_wedding.
- Define Game1::wasRainingYesterday com base em se havia chuva ou tempestade.
- Redefine todos os sinalizadores de tempo e os coloca no seguinte padrão:
- Se vai haver chuva ou tempestade, ajusta o sinal de chuva para true;
- Se vai haver uma tempestade, ajusta o sinal de tempestade para true;
- Se o tempo é (ensolarado, detritos) ou (festival, nevando, casamento), limpa todos os sinalizadores;
- Se estiver nevando, define nevando para true;
- Em seguida, define a música com base nisto;
- Limpa a matriz meteorológica de detritos e os sinalizadores;
- Se o pólen não for nulo, limpa sua visibilidade;
- Se o casamento é detrito, popula o array de detritos;
- Se não está chovendo e a chance de chover amanhã é menor que 0,1, o jogo tentará criar um dia com pólen.
- O jogo então calcula a chance de chuva para amanhã. Ele segue o seguinte algoritmo:
- Checa se é verão:
- Se não é verão, checa se é inverno:
- Se não é inverno, a chance de chuva é de 0,183;
- Senão, é 0,63;
- Se é verão, o jogo usa o seguinte: Checa se é o dia 1;
- Se não é, a chance é de 0,12 + Game1::dayOfMonth * 3/1000;
- Se é, a chance é 0. O que.. é meio redundante, já que os dias de clima fixo já cuidam disso;
- Se não é verão, checa se é inverno:
- Checa se é verão:
- Checa se um número randômico é menor do que as chances. Se sim, o jogo segue o seguinte algoritmo:
- Define Game1::weatherForTomorrow para weather_rain;
- Se:
- É verão e o número randômico é menor que 0,85;
- Ou se não é inverno e se o número randômico é menor que 0,25 E o dia do mês é maior que 2 e mais do que 27 dias já foram jogados;
- Define Game1::weatherForTomorrow para weather_lightning
- Se e inverno:
- Define Game1::weatherForTomorrow para weather_snow
- Senão, se o número for maior que a chance de chover:
- Se você jogou menos que 3 dias:
- Ou, se:
- Não é primavera ou um número randômico é igual ou maior a 0,2 (então 80%) e é primavera;
- E não é outono ou um número randômico é maior ou igual a 0,6 (então 40%) e é outono;
- Ou, se é um dia de casamento hoje:
- Define Game1::weatherForTomorrow para weather_sunny se verdadeiro;
- Define Game1::weatherForTomorrow para weather_debris se falso;
- Checa se amanhã e um festival e define o clima para weather_festival se verdadeiro;
- Novamente força o terceiro dia a ser weather_rain;
Nesse ponto, a função principal do jogo termina a definição do clima.
Previsão do tempo
A TV checa o clima, mas vai ocasionalmente defini-lo em certos dias. Isso e mostrado na seguinte tabela.
A TV define o clima nos dias:
data | clima |
---|---|
primavera 1 | weather_sunny¹ |
primavera 3 | weather_rainy¹ |
verão1 | weather_sunny¹ |
outono 1 | weather_sunny¹ |
inverno 1 | weather_sunny¹ |
¹ Também definido (e portanto sobrescrito) pelo método Game1::newDayAfterFade().
A TV irá checar o clima e mostrará a seguinte mensagem:
clima | menssagem |
---|---|
ensolarado ou casamento | 50% de chance cada:
|
chuva | "Vai chover o dia todo amanhã." |
deritos | Por condições:
|
qualquer outro | Retorna uma string vazia (nunca deve acontecer). |
Nota: A TV não será necessariamente precisa para qualquer outro dia que não seja dias de festival, o primeiro dia do mês e o terceiro dia da primavera, que são definidos à força pelo método Game1::newDayAfterFade. Ajudantes de fazenda(e jogadores que não são o host) podem até mesmo não conseguir essa precisão no primeiro dia do mês ou no terceiro dia da primavera.
Nota 2: O Mercado Noturno não é considerado um festival quando se trata do clima.
Ícone do Clima
O ícone do clima é definido em Game1::updateWeatherIcon, que define um index em LooseSprite/Cursors.xnb:
- Se nevando: 7.
- Se ensolarado: 2.
- Se casamento: 0.
- Se festival: 1.
- Se chovendo: 4.
- Se tempestade: 5.
- Se primavera: clima com detritos é 3.
- Se verão: não definido (torna ao padrão que é ensolarado).
- Se outono: 6.
- Se inverno: 7 (o mesmo que nevando).
Totem de Chuva
O totem de chuva(item #681) é controlado pelo Object::rainTotem, que é invocado pelo Object::performUseAction. Se amanhã é um dia de festival, o item é usado mas nada acontece. Caso contrário, um item é usado e define o clima de amanhã para weather_rain e mostra a mensagem.
Probabilidade de clima por tipo
Essa seção explica a probabilidade de cada tipo de clima. Isso somente se aplica à datas que não tenham clima fixo.
Ensolarado
O clima ensolarado utiliza as variáveis de clima 0,4 e 6.
- Primavera: Há 18,3% de chance base de chuva (81,7% de chance para os outros possíveis climas). Se não chover, tem 80% de chance do clima se manter ensolarado (exceto no dia 3 da primavera, quando vai ser sempre chuvoso). Isso significa que na primavera tem 66,4% de chance do clima ser ensolarado.
- Verão: A chance de um clima ensolarado diminui constantemente a cada dia, de 86% do primeiro dia do verão para 79,9% no dia 28. O cálculo da chance é, mais precisamente, 1 - [13% + (0,3 * dia do mês)] por dia, sendo que a chance é 0% no dia 1.
- Outono: Idêntico à primavera, mas sem clima fixo.
- Inverno: Há chance de 63% de precipitação, então somente 37% de chance de um dia ensolarado.
Chuvoso
- Primavera: Há 18,3% de chance de chuva. Se chover, tem uma chance de 25% de tempestades, exceto no primeiro ano. Então as chances de chover na Primavera são de 18,3% no primeiro ano, e 13,725% do ano 2 em diante. Sempre chove no dia 3 da primavera do ano 1.
- Verão: A chance the clima chuvoso aumenta constantemente a cada dia indo de 14% no dia 2 do verão para 21,1% no dia 27. Há uma chance de 85% de que chuvas se tornem tempestades. Então temos uma escala de [13% + (0,3 * dia do mês)] * 0,85 para determinar as chances de chover.
- Outono: O mesmo que a primavera, exceto que o outono do ano 1 pode ser tempestuoso então tem uma chance de 13.725%.
- Inverno: nunca chove.
Detritos
Clima com detritos utiliza a variável de clima 2.
- Primavera: Há 20% de chance de acontecer depois de um dia chuvoso, então aproximadamente 16,6% de chance de clima com detritos.
- Verão: Não tem clima com detritos.
- Fall: Há 60% de chance de acontecer depois de um dia chuvoso, então aproximadamente 49,8% de chance de clima com detritos.
- Winter: Não tem clima com detritos.
Tempestuoso
Clima tempestuoso utiliza a variável de clima 3.
- Primavera: 4,57% de chance de tempestades.
- Verão: Chance de tempestades variável; Começa em 11% e aumenta até 17,9%.
- Outono: 4.,7% de chance de tempestades.
- Inverno: não há tempestades.
Neve
No inverno há 63% de chance de nevar. Nenhuma outra estação tem neve.
Salvar arquivos
O arquivo salvo é um instantâneo do dia às 06h00 da manhã seguinte. O campo WeatherForTommorow foi usado para calcular o tempo, mas alterá-lo não tem efeito sobre o tempo, uma vez que os sinalizadores de tempo já foram definidos por este ponto. Para alterar o clima, você precisa definir uma dessas combinações de sinalizadores:
weather | isRaining | isDebrisWeather | isLightning | isSnowing |
---|---|---|---|---|
Ensolarado | ☐ | ☐ | ☐ | ☐ |
Chuvoso | ☑ | ☐ | ☐ | ☐ |
Tempestade | ☑ | ☐ | ☑ | ☐ |
Detritos | ☐ | ☑ | ☐ | ☐ |
Nevasca | ☐ | ☐ | ☐ | ☑ |
festival | ☐ | ☐ | ☐ | ☐ |
Casamento | ☐ | ☐ | ☐ | ☐ |
Nota: mundando isDebrisWeather durando um jogo ativo não irá criar o array. Você irá precisar chamar Game1::populateDebrisWeatherArray para conseguir que os detritos sejam populados. De maneira semelhante, se você está removendo a flag de clima com detritos, lembre-se de chamar Game1::debrisWeather::Clear.
Notas/FAQ
- A TV pode ser consertada substituindo-a - ou apenas usando o Entoroax's Framework.
- Você pode definir neve e detritos a qualquer momento, o jogo simplesmente não vai.
- Você não pode colocar detritos e chover ao mesmo tempo.