Configuração de gravidade

From DragonMineZ Wiki
This page is a translated version of the page Gravity Config and the translation is 100% complete.

O sistema de gravidade (gravidade das dimensões, o bloco Dispositivo de Gravidade e as zonas de treino por peso) é configurado na chave gravity de config/dragonminez/general-server.json. É uma das maiores seções desse arquivo, com mais de 60 campos, então tem página própria em vez de fazer parte de Configuração do servidor.

O esquema é a classe GravityConfig aninhada em GeneralServerConfig.java; a lógica é aplicada principalmente em GravityLogic.java e GravityDeviceBlockEntity.java. Para o lado do jogador, veja Gravidade, Pesos e Dispositivo de Gravidade.

Como funciona

Artigo principal: Gravidade

A gravidade bruta de um jogador é calculada assim:

base       = highest of: dimension gravity, WorldGuard "dmz-gravity" region flag, Kaio NPC gravity (if one is nearby)
rawGravity = base + (Gravity Device gravity - 1)      // only while standing in an active device's room

Depois, as estatísticas do jogador reduzem essa gravidade bruta para chegar à gravidade líquida (se a gravidade bruta for 1 ou menos, a gravidade líquida é 0). Uma gravidade líquida maior significa mais ganho de TP e de domínio, penalidades nas estatísticas, penalidades de movimento, ataque, salto e voo, e um custo de estâmina maior por ataque.

Por cima disso há um sistema separado de zonas de treino por peso, baseado em quanto peso o jogador carrega em relação ao ideal para o seu nível. É isso que gera as faixas de multiplicador de TP Confortável, Ideal, No limite e Sobrecarregado.

A linha Gravidade do menu de estatísticas mostra tudo isso ao vivo: a gravidade do ambiente e a líquida, a penalidade nas estatísticas, o bônus de TP, seu peso (bruto → efetivo), o peso ideal, a zona de treino e o multiplicador do treino com peso.

Fontes de gravidade base

Veja também: Dimensões, Rei Kai
Chave Padrão O que faz
enabled true Interruptor geral de todo o sistema. Quando é false, a gravidade é sempre 1.
gravityPerWorld minecraft:overworld: 1.0, minecraft:the_nether: 8.0, minecraft:the_end: 20.0, dragonminez:time_chamber: 10.0, dragonminez:otherworld: 1.0, dragonminez:namek: 1.0 Um mapa de id de dimensão para número: a gravidade base de cada dimensão.
defaultWorldGravity 1.0 Valor de reserva para dimensões que não estão em gravityPerWorld.
npcGravityValue 10.0 Gravidade aplicada perto de um NPC do Rei Kai (Kaio).
npcGravityRange 100.0 Raio (em blocos) usado para detectar um NPC do Rei Kai por perto.
machineGravityEnabled true Se os blocos de Dispositivo de Gravidade contribuem para a gravidade.

Com o WorldGuard instalado, a flag de região dmz-gravity (um número) também define uma gravidade base para a região; ela é usada quando é maior que a gravidade da dimensão (veja Gamerules).

Anulação pela Resistência

Chave Padrão O que faz
resistanceStatDivisorRatio 0.9 Divisor de Resistência, como proporção de maxValue (da seção gameplay de general-server.json). Valores maiores fazem suas estatísticas anularem menos gravidade.
resistanceScale 100.0 Escala o quanto o termo de anulação pesa.
netGravity = rawGravity - [(avg of the 6 stats × their multipliers) / (maxValue × resistanceStatDivisorRatio)] × resistanceScale
Na v2.2, o valor padrão de gameplay.maxValue é 1,000,000, então essa anulação só fica relevante com estatísticas muito altas.

Curva de redução de estatísticas

Chave Padrão O que faz
statReductionEnabled true Interruptor geral.
affectedStats ["STR", "SKP", "PWR", "DEF", "STM"] Lista das estatísticas que sofrem penalidade.
statReductionPerGravity 0.01 Fração de redução por 1 ponto de gravidade líquida.
minStatReduction 0.0 Mínimo.
maxStatReduction 0.9 Máximo (nunca mais de 90% de redução).
statReduction = min(maxStatReduction, clamp(netGravity × statReductionPerGravity, min, max) + weightPenalty)

A penalidade por peso (veja as zonas de treino por peso abaixo) se soma à redução pela gravidade, e o total continua limitado a maxStatReduction.

Penalidades de movimento, ataque, salto e voo

Chave Padrão O que faz
hardStopThreshold 75.0 Gravidade líquida a partir da qual o voo fica totalmente desativado, o salto sofre a penalidade máxima e o bônus de TP e domínio pela gravidade some.
maxMovementPenalty 0.95 Redução máxima da velocidade de movimento.
maxAttackPenalty 0.9 Redução máxima da velocidade de ataque.
penaltyCurveFactor 1.6 Inclinação da curva das penalidades de movimento, salto e voo: penalty = sqrt(netGravity / 100) * penaltyCurveFactor, limitada ao máximo correspondente. A penalidade de velocidade de ataque usa sqrt(netGravity / 100) sem esse fator.
physicalEnabled true Interruptor geral específica das penalidades de salto, queda e voo.
maxJumpPenalty 0.95 Redução máxima da altura do salto.
extraFallPerGravity 0.02 Multiplicador extra de dano de queda por ponto de gravidade líquida.
maxExtraFall 0.6 Limite do dano de queda extra.
maxFlyPenalty 0.95 Redução máxima da velocidade de voo (antes de o corte total entrar em ação).

A penalidade de estatísticas por peso (veja abaixo) também se soma às penalidades de movimento e de velocidade de ataque, ainda limitadas a maxMovementPenalty / maxAttackPenalty.

Bônus de TP e domínio pela gravidade

Chave Padrão O que faz
tpEnabled true Interruptor geral do bônus de TP pela gravidade e de todo o sistema de treino com peso abaixo.
tpGravityBonusPerGravity 0.025 Multiplicador de TP ganho por ponto de gravidade líquida: 1 + netGravity × 0.025.
masteryBonusPerGravity 0.0025 Bônus de domínio de formas por ponto de gravidade líquida: 1 + netGravity × 0.0025.
tpPeakMultiplier 2.0 O multiplicador do treino com peso dentro da faixa Ideal (veja abaixo).

Os dois bônus somem quando a gravidade líquida chega a hardStopThreshold. Dentro da Sala do Tempo, a gravidade própria da dimensão não conta para o bônus de TP (a sala tem seu próprio multiplicador de TP); um Dispositivo de Gravidade colocado lá dentro ainda conta.

Zonas de treino por peso

Veja também: Pesos

É um multiplicador separado que se soma ao bônus de TP vindo da gravidade, baseado no peso carregado em relação ao ideal para o nível do jogador.

Chave Padrão O que faz
tpIdealBaseDivisor 2.0 Peso ideal = nível relativo / este valor.
gravitySensitivity 1.0 Quanto a gravidade bruta infla o peso efetivo: loadFactor = 1.0 + (gravity - 1.0) * gravitySensitivity.
tpComfortRatioLow 0.5 Proporção de carga em que o multiplicador chega a tpComfortMultiplier.
tpIdealRatioLow 0.75 A faixa Ideal começa aqui.
tpIdealRatioHigh 1.25 A faixa Ideal termina aqui; acima disso começa a penalidade nas estatísticas.
tpOverloadRatio 2.0 Aqui o multiplicador atinge o pico em tpHeavyMultiplier e depois desce.
tpOverloadHardRatio 2.5 A partir desta proporção, o multiplicador cai para 1.0 e a penalidade chega ao máximo.
tpComfortMultiplier 1.5 Multiplicador em tpComfortRatioLow.
tpHeavyMultiplier 2.5 Multiplicador em tpOverloadRatio.
maxWeightPenalty 0.6 Penalidade máxima nas estatísticas por excesso de peso.
maxWeightRequested 100000 Peso máximo (kg) que um jogador pode pedir ao serviço de pesos de um mestre (Mestre Kame, Rei Kai, Piccolo).

Proporção de carga = peso efetivo (peso total equipado × loadFactor) / peso ideal. O multiplicador é interpolado suavemente entre os limiares de proporção: 1.0 com proporção 0 → tpComfortMultiplier em tpComfortRatioLow → tpPeakMultiplier ao longo da faixa ideal → tpHeavyMultiplier em tpOverloadRatio → de volta a 1.0 em tpOverloadHardRatio.

A penalidade nas estatísticas por peso é 0 até tpIdealRatioHigh e depois cresce linearmente até maxWeightPenalty em tpOverloadHardRatio.

Os jogadores veem cinco zonas de treino no jogo:

Zona Proporção de carga
Nenhum Sem pesos equipados.
Confortável Abaixo de tpIdealRatioLow.
Ideal De tpIdealRatioLow a tpIdealRatioHigh.
No limite Acima da faixa ideal, abaixo de tpOverloadHardRatio.
Sobrecarregado tpOverloadHardRatio ou mais.

Melhorias da Sala de Gravidade

As missões secundárias da Bulma Sala de Gravidade Mk.II e Sala de Gravidade Mk.III desbloqueiam amortecedores que reduzem a penalidade de estatísticas por peso enquanto você está dentro da sala de um Dispositivo de Gravidade ativo. O alívio diminui conforme você fica mais forte:

relief  = base × e^(−falloff × (avg of the 6 stats × multipliers) / maxValue)
penalty = weightPenalty × (1 − relief)
Chave Padrão O que faz
gravityRoomMk2Relief 0.5 Alívio base após a Mk. II.
gravityRoomMk2Falloff 3.0 Quão rápido o alívio da Mk. II diminui com o poder.
gravityRoomMk3Relief 0.8 Alívio base após a Mk. III (substitui a Mk. II).
gravityRoomMk3Falloff 1.5 Quão rápido o alívio da Mk. III diminui com o poder.

Consumo por carga e gravidade

Chave Padrão O que faz
loadDrainComfort 1.15 Multiplicador de consumo na zona Confortável.
loadDrainIdeal 1.3 Multiplicador de consumo na zona Ideal.
loadDrainHeavy 1.5 Multiplicador de consumo na zona No limite.
loadDrainOverload 2.0 Multiplicador de consumo na zona Sobrecarregado.
consumptionPerGravity 0.04 Custo extra de estâmina dos ataques por ponto de gravidade líquida: consumptionMultiplier = 1.0 + netGravity * consumptionPerGravity.

O multiplicador de consumo por carga se aplica ao custo de estâmina dos ataques e ao consumo de ki, vida e estâmina das formas ativas.

Bloco Dispositivo de Gravidade

Artigo principal: Dispositivo de Gravidade
Chave Padrão O que faz
deviceMinRoomSize 5 Tamanho mínimo (em blocos) da sala fechada em cada eixo.
deviceMaxRoomSize 25 Tamanho máximo da sala fechada em cada eixo.
deviceMaxGravity 1000 Gravidade máxima em que o dispositivo pode ser ajustado.
deviceEnergyCapacity 20000 Capacidade de armazenamento de Energia Estelar.
deviceEnergyPerGravityPerSecond 1.0 Energia consumida por segundo para cada × de gravidade alvo (100× de gravidade usa 100 de energia por segundo por padrão).
deviceShaderGravityForMax 60.0 Valor de gravidade em que o shader visual do lado do cliente atinge a intensidade máxima.

O dispositivo valida sua sala preenchendo o espaço vazio ao redor dele: o espaço fechado precisa estar totalmente vedado (sem frestas para o lado de fora), e o ar fechado precisa medir entre deviceMinRoomSize e deviceMaxRoomSize em cada eixo. A sala é verificada de novo a cada 5 segundos enquanto o dispositivo está ligado.

Recarregar e validar

  1. Edite o bloco gravity em config/dragonminez/general-server.json.
  2. Valide a sintaxe do JSON.
  3. Execute /dmzreload config.
  4. Teste em um Dispositivo de Gravidade ou em uma dimensão de gravidade alta: confira o ritmo de ganho de TP, as penalidades de movimento e ataque, e o consumo.