I’ve been working on the combat engine for Fief. I had a nice system in place, but it needs some work to add a bit more fun and realism. Now there are many factors at play, and skill level becomes very important. I’ll be working on getting these new combat rules into the game over the next week, but no guarantees I’ll finish before I take a week off for a conference. At the very least I will try to get the latest crafting updates and a few of the cosmetic changes and bug fixes I made out to everyone.
EDIT: Some of the information here has changed since first posted.
These changes were made in response to some hardcore simulations.
ATTACKING & DEFENDING
So you want to attack something… perhaps that pesky deer while your stomach is grumbling…
First you want to consider your facing:
FACING & COMBAT POSITION
As you might expect, it is best to attack someone in the back for increasing your chance of success. Here’s a little ASCII diagram of a overhead view of a person.
------------------- | | | | | FR | FR | FR | ------------------- | | 0^0 | | | SD | \_/ | SD | ------------------- | | | | | SD | BK | SD | -------------------
In the above diagram, FR is front locations, SD are side locations, and BK is the back location. The location you attack an enemy determines the base chance to hit. Dodge, block, and parry defensive options are more/less effective at specific locations. Ex: it is best to Dodge a blow from behind, as trying to get a weapon/shield back their is slow and difficult. When you attack someone, your facing changes towards them, representing your current focus of attention as much as body position.
After an attack is chosen, you must choose the combat position, like in this classic figure:
You must choose the height (high/middle/low) and the angle (left/midline/right) of the attack. The chosen attack position has little effect on success/failure of an attack by itself, but will determine which vital body parts may get injured in the attack. The defender then chooses their defense position on the same grid. If they are dodging they are trying to choose a position farthest away from the attack. If they are parrying/blocking then it is the defender’s goal to choose the position the attack is coming from in order to intercept it with a weapon/shield.
The defender’s skill level (Dodge/Block/Weapon Skill[for Parry]) determines the chance of learning something about the incoming attack. There are separate chances for learning the Left/Right angle of the attack or learning the Low/High height of the attack, you may even learn both, which means you know the exact attack position, making a successful dodge/block/parry very likely.
If you are unfortunate enough to have multiple opponents, then keep in mind that each additional defense action increase the chances to hit by +10% per additional attack to account for the defender’s limited time and energy to avoid/deflect attacks.
If an attack hits, then you will take damage, based on the attack severity. Attacks severity is based on the difference between the attacker’s and defender’s skills. Severity is determined by a Gaussian (normal) distribution with a mean based on the skill difference of the combatants. This ensures that skilled warriors will easily cut-down unskilled warriors, while two skilled warriors will fight for much longer, with fewer significant wounds inflicted. Facing also can add to the mean of the Severity distribution, with back attacks shifting the mean by +4.
The higher the severity of the attack, the greater the damage will be and the greater chance of maiming a vital body part or acquiring the Bleed condition. Additionally, the attacker’s weapon skill provides a bonus in damage. The Hunting skill provides a large damage bonus based on skill level when attacking animals.
Severity Description ------------------------------ 0 Glancing Wound 1 Flesh Wound 2 Bruising Wound 3 Significant Wound 4 Painful Wound 5 Major Wound 6 Suffering Wound 7 Tearing Wound 8 Severing Wound 9 Deadly Wound
Armor helps protect the wearer by reducing the severity of the attacks that hit. Each armor has a severity reduction rating (defense score) for each basic attack type [Bludgeoning, Piercing, Slashing]. The average value across all damage types and pieces worn will determine the Defense score shown on the Character’s Status Screen (more as a reminder that you have your armor on). Armor types determine the given defense scores:
Armor Types: --------------------------- B P S Cloth (1,0,0) Padded (2,0,1) Hide (2,2,2) Leather (3,2,2) Stud.Leather (3,2,3) Scale (5,3,3) Chain (2,3,4) Splint (4,4,5) Plate (4,5,6)
The following are the parts of the body that can be armored via inventory slots.
Armor Body Parts --------------------------- Helmet Head Chestplate Body/Vitals Bracers Off Arm/Main Arm Gloves Off Hand/Main Hand Greaves Leg/Leg Boots Foot/Foot
Health points are given to each body part, if we take a look at the human in the core ‘CREATURES.XML’ file, we see that humans have a total of 1000 HP.
Human Parts: -------------------------- parts = " Head|Body|Vitals|Off Arm|Off Hand|Main Arm|Main Hand|Leg|Foot|Leg|Foot" partrole = " mind|body|spirit|off arm|off hand|main arm|main hand|mov|sty |mov|sty" parthealth = "100|250 |50 |100 |50 |100 |50 |100|50 |100|50" partpos = " high|all |mid |high |mid |high |mid |low|low |low|low" (move = movement, sty=stability) - 'All' designation for part indicates it counts for high, mid, & low calculations
The designation ‘partpos’ determines where the part is located in the attack height (low/middle/high). The chance of an attack hitting a specific part is equal to its HP divided by the creature’s total HP. The exception is any parts designated ‘all’. This is the default target of an attack, in the human’s case the ‘body’. This allows a fighter to take a number of attacks without immediately losing a limb. This is the part where I bend the mechanics into the ‘fun’ side of the funrealism continuum.
Here’s an analysis of a human:
Which part is hit? -------------------------- -Random body part injured based on high/mid/low status: partHP/totalHP Ex: For a high attack, Head has 100/1000 (10%) chance to be hit, OffArm has 100/1000 (10%) chance to be hit, MainArm has 100/1000 (10%) chance to be hit, Body has 100% - total (30%) = 70% chance to be hit. [because of 'all' status] Ex: For a midline attack, Vitals has 50/1000 (5%) chance to be hit, OffHand has 50/1000 (5%) chance to be hit, MainHand has 50/1000 (5%) chance to be hit, Body has 100% - total (15%) = 85% chance to be hit. [because of 'all' status] Ex: For a low attack, Leg has 100/1000 (10%) chance to be hit, Leg has 100/1000 (10%) chance to be hit, Foot has 50/1000 (5%) chance to be hit, Foot has 50/1000 (5%) chance to be hit, Body has 100% - total (30%) = 70% chance to be hit. [because of 'all' status]
Body parts are labeled according to the amount of HP they have left:
Health% Condition: -------------------------- 75-100 Wounded, fully functioning 50-75 Impaired, some function loss 25-50 Crippled, most function loss 0-25 Lame, all function loss 0 Mutilated, all function loss -- Removed, function loss forever
I won’t go into detail what these conditions do, but if a body part enters a new category, the defender will receive a corresponding condition:
|—||Slowed OffArm||Weak OffArm||No OffHand||No OffHand|
|—||Slowed MainArm||Weak MainArm||No MainHand||No MainHand|
|—||Slowed OffHand||Weak OffHand||No OffHand||No OffHand|
|—||Clumsy||Undexterous||No MainHand||No MainHand|
|—||Slowed Movement||Weak Movement||Immobilized||Immobilized|
|—||Slowed Footing||Weak Footing||Immobilized||Immobilized|
With a high severity attack, Piercing/Slashing weapons have a small chance (based on severity) of causing the Bleed condition. The duration of the condition is also dependent on the severity of the attack, with deadly attacks (9) causing an infinite duration (hold on to that precious life-blood). The Bleed condition causes damage to ALL parts of the body, 1 point at the end of each turn.