Modificações:Dados climáticos
← Í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.