## How OB, DB, and PB are Calculated

General game help topics.
Thuvia
Posts: 51
Joined: Tue May 08, 2012 11:08 am

### How OB, DB, and PB are Calculated

Most of the following information can be found by viewing the source coding for the Equipment Trainer. This post is designed to present the information in a somewhat more user-friendly form, so that all who wish may have a better understanding of how these things work.

April 1, 2016: As promised, status ailments and Position effects (standing/sitting/resting/sleeping) have now been incorporated.

Terms

Code: Select all

``````Race = Human or Trolloc
Ride = Ride Level (0-7)
Lvl = Character's Level (1-30)
Str = Strength stat
Dex = Dexterity stat
Con = Constitution stat
Weight = Total worn and carried weight
MaxW = Max weight allowance = ((8.5 * Str) + (3.5 * Con))
Wper = Weapon practice %        (IF Wper < 5%, Wper = 5%)       <-This is why wielding a weapon with no pracs still gives OB and PB->
Dper = Dodge practice %
Sper = Shield parry practice %  (IF Sper < 5%, Sper = 5%)       <-This is why wearing a shield with no pracs still gives PB->
Wpn_ob = Weapon's base OB value
Wpn_pb = Weapon's base PB value
Shield_db = Shield's DB malus
Shield_pb = Shield's base PB value
Eq_DB = Net total value of DB provided by all worn equipment and trinkets
Eq_PB = Net total value of PB provided by all worn equipment and trinkets

Lvl_ob_mood = Mood values used to modify Lvl
Wimpy   = 7/3
Normal  = 77/30
Brave   = 161/60
Berserk = 35/12
W_ob_mood = Mood values used to modify Ride and weapon OB
Wimpy   = 1
Normal  = 11/10
Brave   = 23/20
Berserk = 5/4
PB_mood = Mood values used for various PB modifications
Wimpy   = 71/50
Normal  = 13/10
Brave   = 23/20
Berserk = 1
Posture_ob = Added offensive bonus based on Master posture
Non-master = 0
Defensive  = 0
Normal     = 5
Offensive  = 10
Posture_pb = Added parry bonus based on Master posture
Non-master = 0
Defensive  = 15
Normal     = 10
Offensive  = 0
Position_ob = Position does not modify OB except when sleeping - handled during OB calcs
Position_db = Position values used to modify DB
Standing = 1
Sitting  = 1/4
Resting  = 1/4
Sleeping = handled during DB calcs
Position_pb = Position values used to modify PB
Standing = 1
Sitting  = 3/4
Resting  = 3/4
Sleeping = 1/2
``````
Offensive Bonus

Code: Select all

``````IF (Hardened weapon) THEN
Wpn_ob = Wpn_ob + 5                                         <- Honing adds damage but no OB. Hardening adds 5 OB directly to the weapon's base OB ->
OB = Lvl * Lvl_ob_mood
OB = OB + ((Wper / 100) * (Str / 19) * (Wpn_ob * W_ob_mood))
IF (Race = Human and Ride > 0) THEN
OB = OB + ((Ride + 4) * W_ob_mood)
OB = OB * (1 - ((5 * Weight) / (25 * MaxW)))                  <- OB is affected the least by total weight ->
OB = OB + Posture_ob                                          <- Add master posture bonus, if any ->
IF (Blind Status) THEN
OB = OB / 2                                                 <- Blind status reduces OB by 50% ->
IF (Race = Human and Blind = 0)                               <- Darkness only affects humans, but not if blind ->
OB = OB * 3 / 4                                             <- Darkness reduces OB by 25% ->
IF (Chill Status) THEN
OB = OB * 9 / 10                                            <- Chill status reduces OB by 10% ->
IF (Contagion Status) THEN
OB = OB / 2                                                 <- Contagion status reduces OB by 50% ->
IF (Position = Sleeping) THEN
OB = 1                                                      <- Sleeping position reduces OB to 1 ->
OB = OB + 1                                                   <- All races get a +1 to OB ->
IF (Race = Trolloc) THEN
OB = OB + 4                                                 <- Trollocs get a +4 OB boost ->
OB = Round(OB)
``````
Dodge Bonus

Code: Select all

``````DB = (Lvl * 2 / 3)
DB = DB + ((Dper / 99) * (Dex / 19) * 70)
DB = DB + Shield_DB                                           <- All shields impose a DB malus before weight effects and rounding. ->
<- This is assigned and not a function of shield weight.->
IF (Race = Human and Ride > 0) THEN
DB = DB + Ride - 11
DB = DB * (1 - ((5 * Weight) / (8 * MaxW)))                   <- DB is the most sensitive to total weight->
DB = DB + Eq_DB
IF (Blind Status) THEN
DB = DB * 4 / 5                                             <- Blind status reduces DB by 20% ->
IF (Race = Human and Blind = 0)                               <- Darkness only affects humans, but not if blind ->
DB = DB * 9 / 10                                            <- Darkness reduces DB by 10% ->
IF (Armor_Weave) THEN
DB = DB + 10                                                <- Armor status adds 10 to DB ->
IF (Chill Status) THEN
DB = DB * 9 / 10                                            <- Chill status reduces DB by 10% ->
IF (Contagion Status) THEN
DB = DB * 4 / 5                                             <- Contagion status reduces DB by 20% ->
DB = DB * Position_DB                                         <- Position calcs ->
IF (Position = Sleeping) THEN
DB = 1                                                      <- Sleeping position reduces DB to 1 ->
DB = Round(DB)
``````
Parry Bonus

Code: Select all

``````IF (Lvl > 20) THEN
Lvl = 20                                                    <- Naked PB does not increase after level 20 ->
PB = Lvl * PB_mood
PB = PB + ((Wper / 100) * (Str / 19) * (Wpn_pb * PB_mood))    <- PB from weapons is modified by Str only, and is the same whether 1 or 2-handed ->
PB = PB + ((Sper / 100) * (Dex / 19) * (Shield_pb * PB_mood)) <- PB from shields is modified by Dex only ->
PB = PB * (1 - ((5 * Weight) / (16 * MaxW)))                  <- PB is more sensitive to weight than OB, but less than DB ->
PB = PB + (Eq_PB * PB_mood)                                   <- PB from equipment is subject to mood modifiers. ->
<- This is why some items seem to have fractional PB values in moods other than Berserk ->
PB = PB + Posture_pb                                          <- Add master posture bonus, if any ->
IF (Blind Status) THEN
PB = PB / 2                                                 <- Blind status reduces PB by 50% ->
IF (Race = Human and Blind = 0)                               <- Darkness only affects humans, but not if blind ->
PB = PB * 3 / 4                                             <- Darkness reduces PB by 25% ->
IF (Chill Status) THEN
PB = PB * 9 / 10                                            <- Chill status reduces PB by 10% ->
IF (Contagion Status) THEN
PB = PB / 2                                                 <- Contagion status reduces PB by 50% ->
PB = PB * Position_PB                                         <- Position calcs ->
PB = Round(PB)
``````
Thuvia
Posts: 51
Joined: Tue May 08, 2012 11:08 am

### Re: How OB, DB, and PB are Calculated

Updated to show effects of Status ailments and Position on OB/DB/PB.