Skip to content

Latest commit

 

History

History
204 lines (181 loc) · 5.14 KB

File metadata and controls

204 lines (181 loc) · 5.14 KB

RMU Attack System

Flujo

En primer lugar en el dominio táctico, durante la declaración de las acciones se declararán los ataques del personaje. Los ataques serán un mapa en los casos de multiples ataques:

{
    "actionId": "action_001",
    "tacticalGameId": "game_001",
    "characterId": "character_001",
    "actionType": "attack",
    "round": 1,
    "actionPoints": 3,
    "attacks": [
        {
            "attackMode": "main_hand",
            "targetId": "character_002",
            "parry": {
                "targetId": "character_002",
                "value": 20
            },
            "status": "draft"
        },
        {
            "attackMode": "off_hand",
            "targetId": "character_03",
            "parry": {
                "targetId": "character_02",
                "value": 20
            },
            "status": "draft"
        }
    ]
}

En el momento en el que se va a resolver el ataque el dominio táctico realizará una petición a la API de ataques para cada uno de ellos.

La petición será:

POST /api/v1/attacks

{
    "actionId": "action_001",
    "sourceId": "source_001",
    "targetId": "target_001",
    "modifiers":{
        "attackType": "ranged|melee",
        "rollModifiers": { // Calculados a partir del dominio táctico
            "bo": 80,
            "boInjuryPenalty": -10,
            "boActionPointsPenalty": -5,
            "boPacePenalty": 0,
            "boFatiguePenalty": -1,
            "bd": 20,
            "rangePenalty": 0,
            "parry": 20,
            "custom": 20,
        },
        "calledShot": {
            "calledShot": "head",
            "calledShotAT": 5
        },
        "situations": {
            "sizeDiference": 0,
            "disabledDb": false,
            "higherGround": true,
            "surprised": false,
            "proneAttacker": false,
            "proneDefender": false,
            "restrictedQuarters": "none",
            "positionalAttacker": "none",
            "positionalDefender": "none",
            "rangedAttackInMelee": false,
            "range": 10,
            "flyingDefenseBonus": false,
            "cover": "partial",
            "canUseShield": true,
            "dodge": "partial"
        },
        "features": [
            {
                "name": "slaying-attack",
                "value": "1"
            }
        ],
        "skills": [
            {
                "name": "foo",
                "value": 10
            },
            {
                "name": "bar",
                "value": 5
            }
        ]
    }
}

La estructura del objeto del ataque es:

{
    "id": "attack_001",
    "actionId": "action_001",
    "status": "draft",
    "modifiers": {
        "...": "...",
    },
    "calculated": {
        "boModifiers": [
            {
                "name": "foo",
                "value": 80
            },
            {
                "name": "var",
                "value": -20
            },
        ],
        "totalBo": 60
    },
    "roll": {
        "roll": 15
    },
    "result": {
        "labelResult": "8AT",
        "hitPoints": 8,
        "criticals": [
            {
                "id": "crit_001",
                "status": "applied"
            }
        ]
    }
}

Modificadores BO

Nombre

Domain

Descripción

bo

TC

Bonificador de ataque obenido a partir del atacante y el attackMode.

bo_injury_penalty

TC

Penalizacion al BO por heridas.

bo_action_points_penalty

TC

Penalización al BO por puntos de acción.

bo_pace_penalty

TC

Penalización al BO por el movimiento del atacante.

bo_fatigue_penalty

TC

Penalización al BO por fatiga.

facing

AT

Orientación del atacante respecto al defensor.

bd

TC

Bonificador de defensa

parry

TC

Valor de parry del defensor aplicado al atacante

called_shot

AT

TODO

Situaciones

Declaradas:

  • higher_ground (boolean)

  • surprised (boolean)

  • prone_attacker (boolean)

  • prone_defender (boolean)

  • restricted_quarters (enum: none, close, cramped, tight, confined)

  • positional_attacker (melee only. Enum: none, to_flank, to_rear)

  • positional_defender (melee only. Enum: none, flank, rear)

  • ranged_attack_in_melee (boolean)

  • range (int)

  • flying_defense_bonus (boolean)

  • cover (enum: none, partial, half, full)

  • can_use_shield (boolean)

  • dodge (enum: pasive, partial, full)

Calculadas:

  • off_hand

  • two_handed (melee only)

  • stunned

  • shield_db_bounus

  • shield_block_bonus

  • size_difference

Modificadores al critico

  • Tamaño

  • Resultado extra de la tirada abierta

Habilidades

  • addrenal_defense: maniobra para hacer dodge (accion a coste 0 o con concentracion)

  • adrenal_strength: modifica el tamaño del ataque en +1

  • multiple_attacks: reduce la penalizacion por realizar multiples ataques en un turno

  • footwork: reduce la penalizacion por moverse y atacar en el mismo turno

  • reverse_strike: reduce la penalizacion por atacar por los flancos