Configuração de gravidade
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
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
| 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
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
É 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
| 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
- Edite o bloco
gravityemconfig/dragonminez/general-server.json. - Valide a sintaxe do JSON.
- Execute
/dmzreload config. - 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.