Diferenças entre edições de "Modificações:Dados climáticos"
m (Substituição de texto - "{| class" por "{|class") |
m (Substituição de texto - "tt>" por "samp>") |
||
Linha 3: | Linha 3: | ||
==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" | ||
Linha 12: | 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 51: | 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; | ||
Linha 156: | Linha 156: | ||
#### Senão, é 0,63; | #### Senão, é 0,63; | ||
### Se é verão, o jogo usa o seguinte: Checa se é o dia 1; | ### Se é verão, o jogo usa o seguinte: Checa se é o dia 1; | ||
− | #### Se não é, a chance é de 0,12 + < | + | #### 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; | #### 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: | # Checa se um número randômico é menor do que as chances. Se sim, o jogo segue o seguinte algoritmo: | ||
− | ## Define < | + | ## Define <samp>Game1::weatherForTomorrow</samp> para <samp>weather_rain</samp>; |
## Se: | ## Se: | ||
### É verão e o número randômico é menor que 0,85; | ### É 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; | ### 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 < | + | ### Define <samp>Game1::weatherForTomorrow</samp> para <samp>weather_lightning</samp> |
## Se e inverno: | ## Se e inverno: | ||
− | ### Define < | + | ### Define <samp>Game1::weatherForTomorrow</samp> para <samp>weather_snow</samp> |
# Senão, se o número for maior que a chance de chover: | # Senão, se o número for maior que a chance de chover: | ||
## Se você jogou menos que 3 dias: | ## Se você jogou menos que 3 dias: | ||
Linha 172: | Linha 172: | ||
### E não é outono ou um número randômico é maior ou igual a 0,6 (então 40%) e é outono; | ### 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: | ### Ou, se é um dia de casamento hoje: | ||
− | #### Define < | + | #### Define <samp>Game1::weatherForTomorrow</samp> para <samp>weather_sunny</samp> se verdadeiro; |
− | #### Define < | + | #### Define <samp>Game1::weatherForTomorrow</samp> para <samp>weather_debris</samp> se falso; |
− | ## Checa se amanhã e um festival e define o clima para < | + | ## 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 < | + | ## 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. | Nesse ponto, a função principal do jogo termina a definição do clima. | ||
Linha 190: | Linha 190: | ||
|- | |- | ||
| primavera 1 | | primavera 1 | ||
− | | < | + | | <samp>weather_sunny</samp>¹ |
|- | |- | ||
| primavera 3 | | primavera 3 | ||
− | | < | + | | <samp>weather_rainy</samp>¹ |
|- | |- | ||
| verão1 | | verão1 | ||
− | | < | + | | <samp>weather_sunny</samp>¹ |
|- | |- | ||
| outono 1 | | outono 1 | ||
− | | < | + | | <samp>weather_sunny</samp>¹ |
|- | |- | ||
| inverno 1 | | inverno 1 | ||
− | | < | + | | <samp>weather_sunny</samp>¹ |
|} | |} | ||
− | <small>¹ Também definido (e portanto sobrescrito) pelo método < | + | <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: | A TV irá checar o clima e mostrará a seguinte mensagem: | ||
Linha 234: | Linha 234: | ||
|} | |} | ||
− | '''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 < | + | '''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. | '''Nota 2:''' O Mercado Noturno não é considerado um festival quando se trata do clima. | ||
===Ícone do Clima=== | ===Ícone do Clima=== | ||
− | O ícone do clima é definido em < | + | O ícone do clima é definido em <samp>Game1::updateWeatherIcon</samp>, que define um index em <samp>LooseSprite/Cursors.xnb</samp>: |
# Se nevando: 7. | # Se nevando: 7. | ||
Linha 253: | Linha 253: | ||
===Totem de Chuva=== | ===Totem de Chuva=== | ||
− | O totem de chuva(item #681) é controlado pelo < | + | 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== | ==Probabilidade de clima por tipo== | ||
Linha 292: | Linha 292: | ||
===Salvar arquivos=== | ===Salvar arquivos=== | ||
− | O arquivo salvo é um instantâneo do dia às 06h00 da manhã seguinte. O campo < | + | 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 | | Ensolarado | ||
Linha 345: | Linha 345: | ||
|} | |} | ||
− | '''Nota:''' mundando < | + | '''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== | ==Notas/FAQ== |
Revisão das 18h41min de 4 de novembro de 2021
← Í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 é is 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%.
- Winter: 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.