Modificações:Dados climáticos

De Stardew Valley Wiki
Ir para: navegação, pesquisa

Í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:

  1. Verifique o clima fixo.
  2. Se hoje é um festival, define o clima como weather_festival.
  3. Se hoje é um casamento, define o clima como weather_wedding.
  4. Define Game1::wasRainingYesterday com base em se havia chuva ou tempestade.
  5. Redefine todos os sinalizadores de tempo e os coloca no seguinte padrão:
    1. Se vai haver chuva ou tempestade, ajusta o sinal de chuva para true;
    2. Se vai haver uma tempestade, ajusta o sinal de tempestade para true;
    3. Se o tempo é (ensolarado, detritos) ou (festival, nevando, casamento), limpa todos os sinalizadores;
    4. Se estiver nevando, define nevando para true;
    5. Em seguida, define a música com base nisto;
    6. Limpa a matriz meteorológica de detritos e os sinalizadores;
    7. Se o pólen não for nulo, limpa sua visibilidade;
    8. Se o casamento é detrito, popula o array de detritos;
  6. Se não está chovendo e a chance de chover amanhã é menor que 0,1, o jogo tentará criar um dia com pólen.
  7. O jogo então calcula a chance de chuva para amanhã. Ele segue o seguinte algoritmo:
    1. Checa se é verão:
      1. Se não é verão, checa se é inverno:
        1. Se não é inverno, a chance de chuva é de 0,183;
        2. Senão, é 0,63;
      2. Se é verão, o jogo usa o seguinte: Checa se é o dia 1;
        1. Se não é, a chance é de 0,12 + Game1::dayOfMonth * 3/1000;
        2. Se é, a chance é 0. O que.. é meio redundante, já que os dias de clima fixo já cuidam disso;
  8. Checa se um número randômico é menor do que as chances. Se sim, o jogo segue o seguinte algoritmo:
    1. Define Game1::weatherForTomorrow para weather_rain;
    2. Se:
      1. É verão e o número randômico é menor que 0,85;
      2. 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;
      3. Define Game1::weatherForTomorrow para weather_lightning
    3. Se e inverno:
      1. Define Game1::weatherForTomorrow para weather_snow
  9. Senão, se o número for maior que a chance de chover:
    1. Se você jogou menos que 3 dias:
    2. Ou, se:
      1. Não é primavera ou um número randômico é igual ou maior a 0,2 (então 80%) e é primavera;
      2. E não é outono ou um número randômico é maior ou igual a 0,6 (então 40%) e é outono;
      3. Ou, se é um dia de casamento hoje:
        1. Define Game1::weatherForTomorrow para weather_sunny se verdadeiro;
        2. Define Game1::weatherForTomorrow para weather_debris se falso;
    3. Checa se amanhã e um festival e define o clima para weather_festival se verdadeiro;
    4. 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:
  • "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:
  1. Se primavera: "Parcialmente nublado com uma brisa leve. Esperem por bastante pólen!"
  2. 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."
  3. Se tempestade: "Parece que uma tempestade está se aproximando. Vão cair raios e trovões."
  4. 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.
  5. 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 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:

  1. Se nevando: 7.
  2. Se ensolarado: 2.
  3. Se casamento: 0.
  4. Se festival: 1.
  5. Se chovendo: 4.
  6. Se tempestade: 5.
  7. Se primavera: clima com detritos é is 3.
  8. Se verão: não definido (torna ao padrão que é ensolarado).
  9. Se outono: 6.
  10. 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.