Pular para o conteúdo

Interações de Itens

Visão Geral

Interações de itens definem como os itens se comportam quando usados — ataques, colocação de blocos, consumo, uso de ferramentas, esquivas e mais. Cada interação é um objeto JSON com um Type e um campo opcional Next que encadeia para a próxima etapa. Isso cria pipelines que podem ramificar em condições, causar dano, aplicar efeitos, reproduzir sons e gerar partículas. Arquivos de interação são referenciados por ID a partir das definições de itens pelos campos Interactions e InteractionVars.

Localização dos Arquivos

Assets/Server/Item/Interactions/<Category>/<InteractionId>.json

Interações de nível superior e raiz:

Assets/Server/Item/Interactions/Block_Primary.json
Assets/Server/Item/Interactions/Block_Secondary.json
Assets/Server/Item/Interactions/Dodge.json
Assets/Server/Item/Interactions/Stamina_Bar_Flash.json
Assets/Server/Item/RootInteractions/ — Pontos de entrada de interação raiz

Subcategorias:

Interactions/Consumables/ — Condições de consumo de comida e poção
Interactions/Weapons/ — Cadeias de ataque de armas (Machado, Arco, Clava, etc.)
Interactions/Weapons/Common/Melee/ — Dano e seletor de melee compartilhados
Interactions/Tools/ — Interações específicas de ferramentas
Interactions/Block/ — Interações de quebra/ataque de blocos
Interactions/Dodge/ — Interações de esquiva
Interactions/NPCs/ — Interações acionadas por NPCs
Interactions/Stat_Check/ — Condições de verificação de stats

Schema

Campos Principais de Interação

CampoTipoObrigatórioPadrãoDescrição
TypestringNão"Simple"Tipo de interação. Veja a lista de tipos abaixo.
Nextstring ou objectNãoA próxima interação a executar em caso de sucesso. Pode ser um ID de interação (string) ou um objeto de interação inline.
Failedstring ou objectNãoA interação a executar quando esta falha (usado por Condition, UseBlock, PlaceBlock, etc.).
RunTimenumberNãoDuração em segundos que esta interação ocupa na linha do tempo da cadeia.
EffectsobjectNãoEfeitos aplicados quando esta interação é executada com sucesso. Veja os campos de Effects abaixo.
ParentstringNãoHerda campos da interação nomeada (herança de template).

Tipos de Interação

TipoDescrição
SimpleExecuta imediatamente sem lógica, depois prossegue para Next.
ConditionVerifica uma ou mais condições booleanas. Prossegue para Next se passar, Failed se falhar.
MovementConditionRamifica com base na direção de movimento da entidade (ForwardLeft, ForwardRight, Left, Right, BackLeft, BackRight).
UseBlockTenta interagir com um bloco alvo. Vai para Failed se nenhum bloco for atingido.
PlaceBlockColoca o item de bloco segurado na localização alvo.
SelectorVarre um arco ou volume de hitbox para detectar entidades e blocos. Encaminha acertos para sub-interações HitEntity e HitBlock.
SerialExecuta uma lista de interações filhas em sequência. Usa um array Interactions.
ApplyEffectAplica um efeito de gameplay por EffectId.
ReplaceLê uma variável nomeada (Var) e substitui seu valor na cadeia. Volta para DefaultValue se a variável não estiver definida e DefaultOk for true.

Campos de Condition (Type: "Condition")

CampoTipoDescrição
RequiredGameModestringRequer que a entidade esteja neste modo de jogo (ex.: "Adventure").
CrouchingbooleanSe definido, requer (true) ou proíbe (false) agachamento.
FlyingbooleanSe definido, requer (true) ou proíbe (false) voo.

Campos de Selector (Type: "Selector")

CampoTipoDescrição
Selector.IdstringTipo de forma da varredura (ex.: "Horizontal").
Selector.DirectionstringDireção da varredura (ex.: "ToLeft").
Selector.TestLineOfSightbooleanSe verifica linha de visão antes de registrar acertos.
Selector.StartDistancenumberBorda próxima do volume de varredura.
Selector.EndDistancenumberBorda distante do volume de varredura.
Selector.LengthnumberComprimento do arco em graus.
Selector.YawStartOffsetnumberOffset de yaw da direção que está encarando para iniciar a varredura.
HitEntityobjectCadeia de interação executada para cada entidade atingida.
HitBlockobjectCadeia de interação executada para cada bloco atingido.

Campos de DamageCalculator

Usado dentro de objetos de interação para definir a saída de dano.

CampoTipoDescrição
TypestringMétodo de cálculo. "Absolute" usa um valor de dano base fixo.
BaseDamageobjectMapa de tipo de dano para quantidade (ex.: { "Physical": 12 }).
RandomPercentageModifiernumberFração do dano base adicionada como variância aleatória (ex.: 0.2 = +/-20%).

Campos de Effects

CampoTipoDescrição
WorldSoundEventIdstringID de evento de som reproduzido na posição no mundo.
LocalSoundEventIdstringID de evento de som reproduzido localmente (ouvido apenas pelo jogador que age).
WorldParticlesobject[]Array de sistemas de partículas { "SystemId": "<id>" } gerados na posição no mundo.
Particlesobject[]Configs de partículas com SystemId, Color, TargetNodeName, TargetEntityPart.
Trailsobject[]Configs de efeito de rastro de arma com TrailId, TargetNodeName, PositionOffset, RotationOffset.
CameraEffectstringID de tremor/efeito de câmera aplicado ao jogador que age (ex.: "Impact", "Sword_Swing_Diagonal_Right").
ItemAnimationIdstringAnimação reproduzida no item segurado (ex.: "Consume", "Build").
WaitForAnimationToFinishbooleanSe a cadeia espera a animação do item terminar antes de continuar.
KnockbackobjectConfig de knockback com Type, Force, Direction (X/Y/Z), VelocityType e VelocityConfig.

Exemplos

Assets/Server/Item/Interactions/Block_Primary.json:

{
"Type": "Simple",
"Next": {
"Type": "UseBlock",
"Failed": "Block_Attack"
}
}

Assets/Server/Item/Interactions/Block_Secondary.json:

{
"Type": "UseBlock",
"Failed": {
"Type": "PlaceBlock",
"RunTime": 0.125,
"Effects": {
"WaitForAnimationToFinish": false,
"ItemAnimationId": "Build"
}
}
}

Assets/Server/Item/Interactions/Consumables/Condition_Consume_Food.json:

{
"Type": "Condition",
"RequiredGameMode": "Adventure",
"Crouching": false,
"Next": "Consume_Charge",
"Failed": "Block_Secondary"
}

Assets/Server/Item/Interactions/Dodge.json:

{
"Type": "Condition",
"Flying": false,
"Next": {
"Type": "MovementCondition",
"ForwardLeft": { "Type": "Simple" },
"ForwardRight": { "Type": "Simple" },
"Left": "Dodge_Left",
"Right": "Dodge_Right",
"BackLeft": { "Type": "Simple" },
"BackRight": { "Type": "Simple" }
}
}

Assets/Server/Item/Interactions/Weapons/Common/Melee/Common_Melee_Damage.json:

{
"Parent": "DamageEntityParent",
"DamageCalculator": {
"BaseDamage": {
"Physical": 6
}
},
"Effects": {
"CameraEffect": "Impact"
},
"DamageEffects": {
"Knockback": {
"Type": "Force",
"Force": 6.5,
"Direction": { "X": 0.0, "Y": 1.0, "Z": -1.5 },
"VelocityType": "Set"
},
"WorldSoundEventId": "SFX_Sword_T2_Impact",
"LocalSoundEventId": "SFX_Sword_T2_Impact"
}
}

Páginas Relacionadas