πŸ‡ΊπŸ‡²
English
StoriesTechnicalsMechanicsLanguage
  • πŸ‘‹Welcome to Xeus!
  • Mechanics
    • Fighting system
    • Armor system
    • Tech evolution
      • PVE-Branch
      • MID-Branch
      • PVP-Branch
      • ADD-Branch
  • Technical
    • Design Document
      • Character State
      • Game world
      • Equipment
      • Building
      • Alchemy and craft
      • Gameplay experience
    • Language
  • Alexander's stories
    • Robot
    • Alchemiest and his tools
Powered by GitBook
On this page
  • Clothes
  • BLV
  • Calculating damage
  • Clothes slots
  • Overlap
  • Calculation of overlapping
  • Cumulative effects
  • The final formula
  1. Mechanics

Armor system

Clothes

Clothing has the ability to provide protection against adverse life-threatening conditions. Each armor component has a unique level of resistance to a certain type of damage, which is expressed as a numerical value by which it is divided.

BLV

BLV - Base limb vulnerability

BLV∈[0;2]BLV ∈ [0;2]BLV∈[0;2]

BLV On the example of a jacket

Damage Type
Value

Stabbed

1.1

Cutting

2

Chopping

1.1

Bullet

1

Torn

1.5

Calculating damage

y=arβˆ’BLV+1y = \frac{a}{r - BLV + 1}y=rβˆ’BLV+1a​
Variable
Description

a

The amount of damage dealt

r

Resistance of this type of clothing

BLV

Basic limb vulnerability

Examples of damage calculations

Example of calculating formulas for a heavy axe hit:

damage = 40 / (1.1 - blv + 1) // 36.36 Chopping Damage

damage = 10 / (1.0 - blv + 1) // 10.00 ImpactDamage

Clothes slots

Any clothing, body armor, for example, must be placed only in a designated slot for body armor and cannot be placed in a slot designated for another type of clothing, such as pants.

In addition, armor can provide additional inventory slots, allowing the wearer to store and carry more items. These extra inventory slots can be used to house a variety of items, including medical supplies, extra ammo, or other necessary tools.

Overlap

Armor extends not only to its corresponding body parts, but also to neighboring body parts. For example, a jacket can also protect your abdomen and arms. The protection depends on the coating modifier. The greater it is, the greater the protection;

Covering by example of a jacket

Limb
Overlap value

Head

0.0

Chest

1.0

Belly

1.0

Right hand

0.5

Left hand

0.5

Right leg

0.0

Left leg

0.0

Calculation of overlapping

y=(aβˆ’1)βˆ—p)+1y = (a-1 )* p)+1y=(aβˆ’1)βˆ—p)+1
Variable

a

Protection

p

Overlap

That is, for the chest and abdomen, the percentage of protection corresponds to the above. For the arms, the formula is as follows:

overlap = ((1.1 - 1) * 0.5) + 1 // 1.05 damage = 40 / (1.1 - BLV + 1 ) // 38.09

Cumulative effects

The effects of different armor work in combination, for example on the arm there is protection from hacker damage from the shoulder pad, elbow pad and jacket 1.1, 1.1 and 1.05 respectively. The result is calculated as follows:

r = (1.1 + 1.1 + 1.05) // 1.25 damage = 40 \ (r - 1.0 + 1) // 32.0

The final formula

Pi=(((miβˆ’1)βˆ—hi)+1)βˆ’b+1P_{i} =(((m_{i} - 1) * h_{i}) + 1) - b + 1Pi​=(((miβ€‹βˆ’1)βˆ—hi​)+1)βˆ’b+1

i - element index on a limb

C=(βˆ‘i=0nβˆ’1Pi)βˆ’nC=(\sum_{i=0}^{n-1}P_{i}) - nC=(i=0βˆ‘nβˆ’1​Pi​)βˆ’n

Π‘ - the sum of the results of all armor elements on a given limb

y=VCy =\frac{V}{C}y=CV​
Variable
Description

V

Incoming damage

C

The coefficient of protection for this limb

P

Protection of each armor element on a given limb

n

The number of armor elements on a given limb

m

Protection Modifier

h

Overlap Modifier

b

Base limb vulnerability

double UArmor::CalculateBlockElement(double blv) const{
    return (((m - 1) * h) + 1) - blv + 1;
}
double UManager::CalculateBlockCoeficient(EHitbox hitbox, double blv) const{
    auto armor = GetArmor(hitbox);
    double sum = 0.0f;
    for(const auto& var : armor){
        sum += var->CalculateBlockElement(blv);
    }
    return sum - armor.Num();
}
double UManager::CalculateDamage(float initialDamage, 
    EDamageType damageType, EHitbox hitbox) const{
    double blv = GetBlv(damageType, hitbox);
    double c = CalculateBlockCoeficient(hitbox, blv);
    return initialDamage / c;
}
PreviousFighting systemNextTech evolution

Last updated 1 year ago