Skip to main content

Damage

Within Dorado RP we have a system of handling damage to characters the removes the original games health system and instead replaces it with a more realistic and immersive system. This system is designed to make players think about their health and the consequences of their actions. It is relatively simple to understand, but complex to master.
As at the core of any system it is designed to encourage RP interactions and not be so punishing as to dissuade characters or players from RP, while still providing a realistic and immersive experience.

Overriding Default Damage Systems

When a player receives damage in RED DEAD REDEMPTION 2 there is an event fired by the client that announces the damage, where it was done (Typically a bone in the collision model), what type of damage it was and the ped that dealt the damage. Alone this information would not be enough to fully understand the damage event, but we are able to infer quite a bit as long as we know the dealer of the damage, the type of damage and the receiver of damage.

{
    eventName = "EVENT_NETWORK_DAMAGE_ENTITY",
    eventGroup = 1,
    eventDataSize = 32,
    dataElements = {
        [0] = "damaged entity id", // This is the entity that was damaged, we can use a native to find out where 
        they got damaged (the bone)
        [1] = "killer entity id", // This is the entity that dealt the damage
        [2] = "Damage", // This is the amount of damage dealt
        [3] = "isVictimDestroyed",
        [4] = "isVictimIncapacitated",
        
        // The following identify the weapon and ammo (if applicable) this is very important info, but because our 
        // weapon and inventory system is not default we will not trust this information to be 100% accurate and 
        // instead find the weapon and ammo from the dealer entity.
        [5] = "WeaponUsed hash ( [list](https://github.com/femga/rdr3_discoveries/blob/master/weapons/weapons.lua) )",
        [6] = "AmmoUsed hash ( [list](https://github.com/femga/rdr3_discoveries/blob/master/weapons/ammo_types.lua) )",
        
        [7] = "InstigatedWeaponUsed",
        [8] = "VictimSpeed",
        [9] = "DamagerSpeed",
        [10] = "IsResponsibleForCollision",
        [11] = "IsHeadShot",
        [12] = "IsWithMeleeWeapon",
        [13] = "IsVictimExecuted",
        [14] = "VictimBledOut",
        [15] = "DamagerWasScopedIn",
        [16] = "DamagerSpecialAbilityActive",
        [17] = "VictimHogtied",
        [18] = "VictimMounted",
        [19] = "VictimInVehicle",
        [20] = "VictimInCover",
        [21] = "DamagerShotLastBullet",
        [22] = "VictimKilledByStealth",
        [23] = "VictimKilledByTakedown",
        [24] = "VictimKnockedOut",
        [25] = "isVictimTranquilized",
        [26] = "VictimKilledByStandardMelee",
        [27] = "VictimMissionEntity",
        [28] = "VictimFleeing",
        [29] = "VictimInCombat",
        [30] = "unknown",
        [31] = "IsSuicide"
    }
  }

Next we must prevent the damage from actually occuring to the ped, as we dont want the character to die to damage that is not calculated by us. So for all intents and purposes we will make character's immortal. We may also be able to cancel the event we intercept and prevent it from being processed by the game but this has not be tested.

Now that we know information about the damage event, and we know that our character will only be "damaged" by our system we can begin looking at how we will calculate that damage and what effects it will have on the character.

Calculating Damage and Effects

The get the damage we will use information from the weapon, such as the ammo if it is a gun which should tell us the base damage amount. Consider the range and if we can the weapon velocity when it hit the character.

With the information about where they were via the bone we can determine the general area of the body that received damage. We do not want to get super gritty here as we still want to give players agency about what exactly the wound is, but we will guide them with a general area of the body and the type and severity within broad categories.

If the damage type is one that can have complications we will do an initial roll to determine if there are any major complications like heavy bleed, broken bones, debris that can cause infection. Once we have this information we add the wound to the player and based on the cumulative effect of all their wounds in different body parts and their resulting blood level we can determine if they are incapacitated or have any effects on them.

When we apply damage it is not like a normal health pool where we simply subtract hit points, we instead use a scale to determine the severity of the damage (Minor, Moderate, Severe, Critical) and this will be the severity of the wound. Characters with exceptional health may also have a different threshold so are not as badly injured as less healthy characters. The severity of the wound will determine how long it takes to heal, how much it impacts the player and their overall health as described below.

Blood Level

Blood level is a hidden stat that is used to determine how much blood the character has in their body. Blood is lost when a character has a open wound that bleeding. We may consider internal bleeding as well, but this is potentially very fatal in this time period so it will not be something we go for unless it feels right in the game.

Character's blood level is a resource that regenerates naturally over time, can be replenished by blood transfusion, helped by having high nourishment and rest. The maximum blood level a character can have will be determined by their overall health, so characters that eat well, and have not been wounded recently will be more resilient to bleeding out.

Prowess

Prowess is a hidden stat that is used to determine how well a character can handle taking damage and reflects their overall health and fitness. Prowess is reduced by the cumulative effects of wounds and illness. It can be replenished by treating wounds and eating well. Characters that partake in physical activities may have a higher prowess than those that do not. Prowess will also temporarily be reduced by physical exertion and toxic effects like becoming drunk.

The Blood Level and Prowess Relationship

If either prowess or blood level is reduced to zero the character will become incapacitated. Maximum prowess is modified by blood level and vice versa. If a character has low blood level they will have a lower maximum prowess so that we are able to reflect physical effects of both blood loss and overall health. A character with low prowess will naturally loose conciousness from blood loss much sooner than a very healthy character. As well a character with low blood levels will not be as resiliant as a fully healthy character and will give in to physical exertion, wounds and poor health sooner.