Saltearse al contenido

Estadisticas de Entidad

Descripcion General

Las estadisticas de entidad definen atributos numericos como salud, resistencia, mana y oxigeno que se rastrean por entidad. Cada archivo de estadistica declara el rango de valores, reglas opcionales de regeneracion con logica condicional y efectos activados por umbral. Las estadisticas son consumidas por el sistema de combate, el sistema de movimiento y el sistema de efectos para controlar habilidades, aplicar dano y activar cambios de estado.

Ubicacion de Archivos

Assets/Server/Entity/Stats/

Un archivo JSON por estadistica:

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

Esquema

Campos de nivel superior

CampoTipoRequeridoPor defectoDescripcion
InitialValuenumberSiValor inicial de la estadistica cuando la entidad aparece.
MinnumberSiValor minimo que la estadistica puede alcanzar. Puede ser negativo (por ejemplo, estado de resistencia sobregirada).
MaxnumberSiValor maximo que la estadistica puede alcanzar. 0 significa que el tope se establece dinamicamente (por ejemplo, por equipo).
SharedbooleanNofalseSi es true, el valor de la estadistica se sincroniza con todos los clientes cercanos para la visualizacion del HUD.
ResetTypestringNoComo se restablece la estadistica al reaparecer. Valor conocido: "MaxValue" (se restablece a Max).
IgnoreInvulnerabilitybooleanNofalseSi es true, las modificaciones a esta estadistica ignoran las verificaciones de invulnerabilidad.
HideFromTooltipbooleanNofalseSi es true, la estadistica se oculta de la interfaz de informacion emergente del jugador.
RegeneratingRegenRule[]NoLista de reglas de regeneracion evaluadas en orden. Multiples reglas pueden apilarse o entrar en conflicto.
MinValueEffectsThresholdEffectsNoInteracciones activadas cuando la estadistica alcanza su valor minimo.
MaxValueEffectsThresholdEffectsNoInteracciones activadas cuando la estadistica alcanza su valor maximo.

RegenRule

CampoTipoRequeridoPor defectoDescripcion
$CommentstringNoNota legible por humanos ignorada por el motor.
IntervalnumberSiSegundos entre cada tick de regeneracion.
AmountnumberSiValor agregado (o restado si es negativo) por tick.
RegenType"Additive" | "Percentage"SiAdditive agrega un valor plano; Percentage agrega una fraccion del maximo.
ClampAtZerobooleanNofalseSi es true, el tick de regeneracion no empujara el valor por debajo de cero.
ConditionsCondition[]NoTodas las condiciones deben cumplirse para que esta regla este activa.

Condition

CampoTipoRequeridoPor defectoDescripcion
IdstringSiIdentificador del tipo de condicion. Valores conocidos: "Alive", "Player", "NoDamageTaken", "Stat", "Wielding", "Sprinting", "Gliding", "Charging", "Suffocating", "RegenHealth".
InversebooleanNofalseSi es true, la condicion se niega (NO debe cumplirse).
DelaynumberNoSegundos que deben transcurrir desde que la condicion fue verdadera por ultima vez. Se usa con "NoDamageTaken" para crear retrasos de regeneracion.
GameModestringNoModo de juego requerido. Se usa con la condicion "Player", por ejemplo, "Creative".
StatstringNoID de estadistica para comparar. Se usa con la condicion "Stat".
AmountnumberNoValor umbral para la comparacion de estadisticas. Se usa con la condicion "Stat".
ComparisonstringNoOperador de comparacion. Valores conocidos: "Gte" (mayor-o-igual), "Lt" (menor-que).

ThresholdEffects

CampoTipoRequeridoPor defectoDescripcion
TriggerAtZerobooleanNofalseSi es true, se dispara cuando la estadistica alcanza exactamente cero en lugar del minimo real.
InteractionsobjectNoContenedor con un array Interactions de objetos de interaccion (por ejemplo, ChangeStat, ClearEntityEffect, ApplyEffect).

Ejemplos

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