Jump to content

Better damage resistance formula


pijotr

Recommended Posts

If lazy, go to the bottom for short version

DR formula in fallout 3 (and most Bethesda games) is so bad. Let me explain. 1 point of DR is worth more if you already have high DR. We have to look at the effective health derived from DR.

 

effective health = health / damage received, damage received = raw damage * (1 - (DR * x)) where x is 0.01

 

So then we could say that...

0 DR = 100% effective health

50 DR = 200% effective health
66 DR ~ 300% effective health
75 DR = 400% effective health
85 DR (cap) = 666% effective health
100 DR = infinite effective health

As we can see here, having low DR is almost worthless, while having 100 DR would make you a God. To avoid this, Bethesda capped DR at 85.

 

The problem is now each point of DR is worth more and more until it's worth nothing.

 

I suggest a better formula which is: damage received = raw damage * (1 / (DR * x)) where x could be 0.05 for example

 

This formula would make each point of DR increase effective health by exactly 10% so that it would be

 

0 DR = 100% effective health

10 DR = 150% effective health

20 DR = 200% effective health

30 DR = 250% effective health

40 DR = 300% effective health

85 DR = 525% effective health

100 DR = 600% effective health

It would make lower tier armor more valuable, higher tier armor less valuable by comparison, and more importantly, we can get rid of that nasty 85 DR cap.

 

Does anyone know how to do this? I can't find how to change fallout 3 formulas anywhere. Please help me.

 

Short version

 

Please help me change the damage formula from damage received = raw damage * (1 - (DR * x)) to damage received = raw damage * (1 / (DR * x)) and make x customizable.

 

Thank you very much!

Edited by pijotr
Link to comment
Share on other sites

Well in game settings filtering with "Armor" I noticed a few that looked like they might actually do something.

Of course some look like they are just hold overs from Oblivion. But there may be some that are working.

Like "fMaxArmorRating" set at 85.0

 

But only some in game testing will tell ya.

 

In Geck you find it from GamePlay / Settings , from the header drop down menu ...then you can filter from there.

I'm sure you can use Fo3 edit also , but I have no idea if you can filter with that.

Link to comment
Share on other sites

How long you been playing this game ? Are you seriously thinking there is a way to rewrite that formula with the tools we have available here as mere mortals ?

I guess you could pray to the code gods and see what they tell ya.

Give Bethesda a call , and see if they will release that info for you ?

 

I think most everything the modding community has available is stuff found out by people in the community through testing. And a lot of things are guessed at.

Im just saying that , because the game is 12 years old , and had it been easily done , or allowable to publish something like that. It would have been done already.

 

How or where did you get that formula ? If it's something posted on fandom for example : I wouldn't believe it to be 100% accurate.

 

So anyways the way I see it ... unless you want to experiment with the game settings to maybe get close to what you want.

You can simply alter the damage based on DR of the target for 2 scenarios.

1- Damage the player does ... with a Perk : Entry Point . Actually a series of them , each one for a different range on the target DR. This for example ....

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Calculate Weapon Damage : Multiply value x.xx

Target Condition

GetAV : Damage Resist <= 85 AND

GetAV : Damage Resist >= 80

 

Etc for ranges ...

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

2- Damage the player receives with a Script .

 

~~~~~~~~~

SCN MyDamageAdjustScript

 

Int iHealthPre

Int iHealthPost

Int iHealthHit

Int iDamage

Int iStage

Float fDamageResist

Float fModifier

 

Begin OnHit Player

 

Set iHealthHit to Player.GetAV Health

Player.SetAV Health iHealthPost

End

 

Begin GameMode

Set fDamageResist to Player.GetAV DamageResist

Set iHealthPre to Player.GetAV Health

Set iDamage to (iHealthPre - iHealthHit)

Set iHealthPost to iHealthHit - ( iDamage * fModifier )

End

 

Begin GameMode

If fDamageResist <= 85 && fDamageResist >= 81

Set fModifier to x.xx

elseif fDamageResist <= 80 && fDamageResist >= 72

Set fModifier to x.xx

elseif fDamageResist <= 71 && fDamageResist >= 60

Set fModifier to x.xx

 

; etc ....

 

endif

End

 

~~~~~~~~~~~~~~~~~~~

 

Err sumthing like that , sorry my brains going buggy on it , looks like you might be better at the math than me anyways. But hopefully you get the concept for if you want to go that route ?

To bad New Vegas functions aren't available here , then figuring out what the damage is wouldn't need all this health comparison.

Link to comment
Share on other sites

Yes, this is exactly what I've been looking for, but was unable to do because I don't know how to script. Guess I have to learn now. :geek:

 

Will OnHit work though? I've read that it's applied just after hit, so is it applied before damage?

 

Can you recommend a scripting tutorial?

 

Thank you friend, and sorry to bother you so much. :sweat:

Link to comment
Share on other sites

I will tutorial you on what you want to know how to script. ( thats how the forums work )

Better that than some teacher trying to teach sumthing you may not have want to learned.

 

With ONHit , you could have a tandem effect

 

Like I have 2 GameMode blocks , you could have 2 Onhit blocks. But each has a trigger switch.

 

You have to imagine bullets triggering the code. Saves variable , then next OnHit uses that variable.

 

Uh oh , I feel I am on the edge of ramble , I better end here.

But definitely will try to help ya script it.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...