Pular para o conteúdo

Atributos de Entidade

Visao Geral

Os atributos de entidade definem atributos numericos como vida, stamina, mana e oxigenio que sao rastreados por entidade. Cada arquivo de atributo declara a faixa de valores, regras de regeneracao opcionais com logica condicional e efeitos disparados por limiares. Os atributos sao consumidos pelo sistema de combate, sistema de movimento e sistema de efeitos para restringir habilidades, aplicar dano e disparar mudancas de status.

Localizacao dos Arquivos

Assets/Server/Entity/Stats/

Um arquivo JSON por atributo:

Assets/Server/Entity/Stats/
Ammo.json
DeployablePreview.json
GlidingActive.json
Health.json
Immunity.json
MagicCharges.json
Mana.json
Oxygen.json
SignatureCharges.json
SignatureEnergy.json
Stamina.json
StaminaRegenDelay.json

Schema

Campos de nivel superior

CampoTipoObrigatorioPadraoDescricao
InitialValuenumberSimValor inicial do atributo quando a entidade surge.
MinnumberSimValor minimo que o atributo pode atingir. Pode ser negativo (ex: estado de stamina sobrecarregada).
MaxnumberSimValor maximo que o atributo pode atingir. 0 significa que o limite e definido dinamicamente (ex: por equipamento).
SharedbooleanNaofalseSe true, o valor do atributo e sincronizado para todos os clientes proximos para exibicao no HUD.
ResetTypestringNaoComo o atributo e redefinido ao renascer. Valor conhecido: "MaxValue" (redefine para Max).
IgnoreInvulnerabilitybooleanNaofalseSe true, modificacoes neste atributo ignoram verificacoes de invulnerabilidade.
HideFromTooltipbooleanNaofalseSe true, o atributo e oculto da interface de tooltip do jogador.
RegeneratingRegenRule[]NaoLista de regras de regeneracao avaliadas em ordem. Varias regras podem se acumular ou conflitar.
MinValueEffectsThresholdEffectsNaoInteracoes disparadas quando o atributo atinge seu valor minimo.
MaxValueEffectsThresholdEffectsNaoInteracoes disparadas quando o atributo atinge seu valor maximo.

RegenRule

CampoTipoObrigatorioPadraoDescricao
$CommentstringNaoNota legivel por humanos, ignorada pelo motor.
IntervalnumberSimSegundos entre cada tick de regeneracao.
AmountnumberSimValor adicionado (ou subtraido se negativo) por tick.
RegenType"Additive" | "Percentage"SimAdditive adiciona um valor fixo; Percentage adiciona uma fracao do maximo.
ClampAtZerobooleanNaofalseSe true, o tick de regeneracao nao reduzira o valor abaixo de zero.
ConditionsCondition[]NaoTodas as condicoes devem ser atendidas para que esta regra esteja ativa.

Condition

CampoTipoObrigatorioPadraoDescricao
IdstringSimIdentificador do tipo de condicao. Valores conhecidos: "Alive", "Player", "NoDamageTaken", "Stat", "Wielding", "Sprinting", "Gliding", "Charging", "Suffocating", "RegenHealth".
InversebooleanNaofalseSe true, a condicao e negada (NAO deve ser atendida).
DelaynumberNaoSegundos que devem passar desde que a condicao foi verdadeira pela ultima vez. Usado com "NoDamageTaken" para criar atrasos de regeneracao.
GameModestringNaoModo de jogo necessario. Usado com a condicao "Player", ex: "Creative".
StatstringNaoID do atributo para comparacao. Usado com a condicao "Stat".
AmountnumberNaoValor limite para comparacao de atributo. Usado com a condicao "Stat".
ComparisonstringNaoOperador de comparacao. Valores conhecidos: "Gte" (maior-ou-igual), "Lt" (menor-que).

ThresholdEffects

CampoTipoObrigatorioPadraoDescricao
TriggerAtZerobooleanNaofalseSe true, dispara quando o atributo atinge exatamente zero em vez do minimo real.
InteractionsobjectNaoContainer com um array Interactions de objetos de interacao (ex: ChangeStat, ClearEntityEffect, ApplyEffect).

Exemplos

Health (Assets/Server/Entity/Stats/Health.json):

{
"InitialValue": 100,
"Min": 0,
"Max": 100,
"Shared": true,
"ResetType": "MaxValue",
"Regenerating": [
{
"$Comment": "NPC",
"Interval": 0.5,
"Amount": 0.05,
"RegenType": "Percentage",
"Conditions": [
{ "Id": "Alive" },
{ "Id": "Player", "Inverse": true },
{ "Id": "NoDamageTaken", "Delay": 15 },
{ "Id": "RegenHealth" }
]
},
{
"$Comment": "Player in creative mode",
"Interval": 0.5,
"Amount": 1.0,
"RegenType": "Percentage",
"Conditions": [
{ "Id": "Alive" },
{ "Id": "Player", "GameMode": "Creative" }
]
}
]
}

Immunity (Assets/Server/Entity/Stats/Immunity.json):

{
"InitialValue": 0,
"Min": 0,
"Max": 100,
"Shared": true,
"Regenerating": [
{
"Interval": 0.1,
"Amount": -0.1,
"RegenType": "Additive"
}
],
"MaxValueEffects": {
"Interactions": {
"Interactions": [
{
"Type": "ApplyEffect",
"EffectId": "Immune"
}
]
}
}
}

Paginas Relacionadas