# Incremental Resistance Ideas

Tags:

- Video Games

Last response: in Video Games

Anonymous

March 31, 2005 9:44:38 PM

Archived from groups: rec.games.roguelike.angband (More info?)

Hi,

I have been thinking for a while about adding an incremental

resistance system to Oangband. I really do not like the traditional

approach of additive percentile bonuses. This system is fundamentally

flawed in that there is a magical "increasing returns" implicit to it.

Until you reach total immunity, each X% bonus is actually more

valuable than the previous X% in terms of survivability.

I favor is system of "resistance points" - rpoints below - indexing a

lookup table of damage modification. The player would start with 0

rpoints to all elements. 10 rpoints would yield true immunity, and

negative rpoints would represent a susceptibility.

Note that the actual rpoints system can be kept below the hood. The

player, if not interested, need only know that:

- Each successive resistance item further reduces damage.

- It is wise to stack resistances or find "immunity" items for common

elements.

- Temporary resists are very powerful.

Here are my thoughts so far.

******

Items:

******

Immunity flags are replaced by greater resistance flags. Items that

currently have immunity will have both greater and normal flags which

together normally provide immunity. Other items may be upgraded from

normal to greater resistance.

*****************

Resistance Table:

*****************

Rpoints Damage

<0 130%

0 100

1 75

2 55

3 40

4 30

5 25

6 20

7 15

8 10

9 5

10+ 0

Base rpoints is 0.

Normal resistance flags give +2

Greater resistance flags give +4

Normal + greater flags on the same item give +10

Temporary resistance is worth +4

Temporary resistance with Enhance Magic gets +5

Note: This really cleans up the horrible implementation

currently in place for Enhance Magic on temp resistances.

Ents get -1 for fire

Shadow Fairies get -1 for Light

Shapeshift Ent-form gives -2 for fire and caps rpoints at 4

Shapeshift Vampire-form gives -2 for light and caps rpoints at 1

Rpoints > 0 prevents most side-effects. Poison will be reduced by some

formula TBD.

***************

Infrastructure:

***************

rpoints will be determined in calc_bonuses.

In addition, there will a function:

byte check_resistance(byte element, byte random_factor)

Returns: Percentage from the table above.

"random_factor" is the possible variation in the return value. A

random_factor of "100" will allow the return value to fluctuation with

an amplitude sufficient to reach whichever is closer of 0 or 100

(i.e. rpoints = 2 and random_factor = 100 returns a value from 10 to

100). Most high-element resistance checks will have a random factor

of 10 (roughly 50% to 60% damage at rpoints 2). Chaos will have a

random factor of 20 (roughly 45% to 65% damage at rpoints 2).

******

Notes:

******

- To achieve roughly the same resistance a single item currently

provides, two resist items or one greater resist item is needed.

- With one resist item high elements will be doing about 10% more

damage than before.

- With one resist item poison will be doing about 66% more damage.

That should be OK with the dramatic reduction in base poison damage a

few patches ago.

- It is possible to take a small amount of damage with an "immunity"

item equipped, if you have a susceptibility. This should be

insignificant.

- The ability to stack permanent resists threatens to devalue

temporary resists. This is why the temporary resists provide the

rpoints of two normal resist items.

- Items that provide multiple low resists will be much more useful in

the late game - wear a Crown of the Magi AND a Robe of Permanence!

Some items may need a tweak to reflect this.

--

Bahman Rabii

Hi,

I have been thinking for a while about adding an incremental

resistance system to Oangband. I really do not like the traditional

approach of additive percentile bonuses. This system is fundamentally

flawed in that there is a magical "increasing returns" implicit to it.

Until you reach total immunity, each X% bonus is actually more

valuable than the previous X% in terms of survivability.

I favor is system of "resistance points" - rpoints below - indexing a

lookup table of damage modification. The player would start with 0

rpoints to all elements. 10 rpoints would yield true immunity, and

negative rpoints would represent a susceptibility.

Note that the actual rpoints system can be kept below the hood. The

player, if not interested, need only know that:

- Each successive resistance item further reduces damage.

- It is wise to stack resistances or find "immunity" items for common

elements.

- Temporary resists are very powerful.

Here are my thoughts so far.

******

Items:

******

Immunity flags are replaced by greater resistance flags. Items that

currently have immunity will have both greater and normal flags which

together normally provide immunity. Other items may be upgraded from

normal to greater resistance.

*****************

Resistance Table:

*****************

Rpoints Damage

<0 130%

0 100

1 75

2 55

3 40

4 30

5 25

6 20

7 15

8 10

9 5

10+ 0

Base rpoints is 0.

Normal resistance flags give +2

Greater resistance flags give +4

Normal + greater flags on the same item give +10

Temporary resistance is worth +4

Temporary resistance with Enhance Magic gets +5

Note: This really cleans up the horrible implementation

currently in place for Enhance Magic on temp resistances.

Ents get -1 for fire

Shadow Fairies get -1 for Light

Shapeshift Ent-form gives -2 for fire and caps rpoints at 4

Shapeshift Vampire-form gives -2 for light and caps rpoints at 1

Rpoints > 0 prevents most side-effects. Poison will be reduced by some

formula TBD.

***************

Infrastructure:

***************

rpoints will be determined in calc_bonuses.

In addition, there will a function:

byte check_resistance(byte element, byte random_factor)

Returns: Percentage from the table above.

"random_factor" is the possible variation in the return value. A

random_factor of "100" will allow the return value to fluctuation with

an amplitude sufficient to reach whichever is closer of 0 or 100

(i.e. rpoints = 2 and random_factor = 100 returns a value from 10 to

100). Most high-element resistance checks will have a random factor

of 10 (roughly 50% to 60% damage at rpoints 2). Chaos will have a

random factor of 20 (roughly 45% to 65% damage at rpoints 2).

******

Notes:

******

- To achieve roughly the same resistance a single item currently

provides, two resist items or one greater resist item is needed.

- With one resist item high elements will be doing about 10% more

damage than before.

- With one resist item poison will be doing about 66% more damage.

That should be OK with the dramatic reduction in base poison damage a

few patches ago.

- It is possible to take a small amount of damage with an "immunity"

item equipped, if you have a susceptibility. This should be

insignificant.

- The ability to stack permanent resists threatens to devalue

temporary resists. This is why the temporary resists provide the

rpoints of two normal resist items.

- Items that provide multiple low resists will be much more useful in

the late game - wear a Crown of the Magi AND a Robe of Permanence!

Some items may need a tweak to reflect this.

--

Bahman Rabii

More about : incremental resistance ideas

Anonymous

April 1, 2005 9:40:20 AM

Pretty cool!

The diminishing return idea is what makes this cool,

instead of straight %.

In fact, DrAngband uses a somewhat similar system

Each resist cuts damage to HALF, but resists are

cumulative infinitely. Immunity is never achieved thu...

Once i killed a Greater Hell Wyrm with warrior in dlvl 29,

CLVL 28 !!!! less than 400 hp, thanks to a lucky 6x resist fire

and some pots of speed.

--

I will hold the candle till it burns up my arm.

I'll keep taking punches until their will grows tired.

I will stare the sun down until my eyes go blind.

I won't change direction and I won't change my mind...

How much difference does it make?

Anonymous

April 1, 2005 12:28:52 PM

In article <1112319881.e2e8ed0b59292e69f05d2bd09ade5e04@teranews>,

Bahman Rabii <bahman@oangband.com> wrote:

>

>Hi,

>

>I have been thinking for a while about adding an incremental

>resistance system to Oangband. I really do not like the traditional

>approach of additive percentile bonuses. This system is fundamentally

>flawed in that there is a magical "increasing returns" implicit to it.

>Until you reach total immunity, each X% bonus is actually more

>valuable than the previous X% in terms of survivability.

This isn't really true - there are some diminishing returns, depending

on the size of the hits you can take.

Consider single and double resists in Angband. For the big elemental

blasts, you take 1600 unresisted - you need the first 66%. Double

resist is nothing like as important - you need it if you're going to

throw down with a big nasty that breathes a lot, but you can manage

without it most of the time. That extra 23% just isn't as

valuable. (If single resist were 43%, another 23% would be huge.)

When you look at the lower damage cap of poison, it's even more

significant. Single resist is enough.

>I favor is system of "resistance points" - rpoints below - indexing a

>lookup table of damage modification. The player would start with 0

>rpoints to all elements. 10 rpoints would yield true immunity, and

>negative rpoints would represent a susceptibility.

>

>Note that the actual rpoints system can be kept below the hood.

The real problem with this is that it's hard to get a feel

for. Without knowing the numbers, the player is going to be far less

certain whether or not their resists are sufficient. They don't like

finding out the hard way that they weren't.

It makes juggling one's equipment much harder. (This is not

necessarily bad, but it could easily make it too hard, constraining

the player's options. If you need rbasic twice, that's probably your

armor and shield spoken for.)

(Of course, I don't remember O's damage caps and player HP values.)

--

Julian Lighton jl8e@fragment.com

/* You are not expected to understand this. */

Anonymous

April 1, 2005 12:28:53 PM

jl8e@fragment.com (Julian Lighton) writes:

> In article <1112319881.e2e8ed0b59292e69f05d2bd09ade5e04@teranews>,

> Bahman Rabii <bahman@oangband.com> wrote:

<...>

> >Until you reach total immunity, each X% bonus is actually more

> >valuable than the previous X% in terms of survivability.

>

> This isn't really true - there are some diminishing returns, depending

> on the size of the hits you can take.

>

> Consider single and double resists in Angband. For the big elemental

> blasts, you take 1600 unresisted - you need the first 66%. Double

> resist is nothing like as important - you need it if you're going to

> throw down with a big nasty that breathes a lot, but you can manage

> without it most of the time. That extra 23% just isn't as

> valuable. (If single resist were 43%, another 23% would be huge.)

>

> When you look at the lower damage cap of poison, it's even more

> significant. Single resist is enough.

I was unclear. I was not refering to the standard angband system of

stacking permanent and temporary resists which is OK in this respect.

Rather, I was refering to the system in EyAngband and Steamband in

which items grant fixed additive bonuses. I object to this because

each percentile you add is in many ways more significant than the

last. It is too fine a line between "this attack will kill you for

sure" and "this attack is totally irrelevant to you".

--

Bahman Rabii

Anonymous

April 1, 2005 3:13:09 PM

"Julian Lighton" <jl8e@fragment.com> schrieb...

> The real problem with this is that it's hard to get a feel

> for. Without knowing the numbers, the player is going to be far less

> certain whether or not their resists are sufficient. They don't like

> finding out the hard way that they weren't.

I think in the resistance screen (where you see which item grants

which resistances), the current damage% should be displayed

(but calculated only for known items)

Werner.

Anonymous

April 1, 2005 4:29:36 PM

Bahman Rabii <bahman@oangband.com> writes:

> Hi,

>

> I have been thinking for a while about adding an incremental

> resistance system to Oangband. I really do not like the traditional

> approach of additive percentile bonuses. This system is fundamentally

> flawed in that there is a magical "increasing returns" implicit to it.

> Until you reach total immunity, each X% bonus is actually more

> valuable than the previous X% in terms of survivability.

If you believe in allowing a certain plus to provide immunity, this

is inevitable as the last plus is of infinite relative value.

> I favor is system of "resistance points" - rpoints below - indexing a

> lookup table of damage modification. The player would start with 0

> rpoints to all elements. 10 rpoints would yield true immunity, and

> negative rpoints would represent a susceptibility.

I find these tables to be hacks.

Let's define d(x) to be the damage multiplier you use given a

resistance value of x. To avoid "increasing returns" what you

want is d(x+1)/d(x) > d(x)/d(x-1). For example, d(x) = 1/x

looks fine. If you wish to extend it to values less than 1,

you need to complicate things a bit, but that's no big deal.

Perhaps a function along the lines of

d(x)

{

den = 1+abs(x)

if (x >= 0)

return (1/den)

else

return (2 - 1/den)

}

would do.

Eddie

Anonymous

April 1, 2005 9:07:15 PM

On 2005-04-01 10:28:52, jl8e@fragment.com (Julian Lighton) wrote:

> In article ,

> Bahman Rabii wrote:

> >

> >Hi,

> >

> >I have been thinking for a while about adding an incremental

> >resistance system to Oangband. I really do not like the traditional

> >approach of additive percentile bonuses. This system is fundamentally

> >flawed in that there is a magical "increasing returns" implicit to it.

> >Until you reach total immunity, each X% bonus is actually more

> >valuable than the previous X% in terms of survivability.

>

{snip a really good idea}

I think this is a great modification to the current percentile resist system. I

could even taking it even further, and making standing on a glyph increase

percentile resistances, or have the mage spell that prevents all damage

temporarily count as one resistance to everything and a big increase in AC

rather than grant complete immunity to damage. I could even see bringing back

the old potion of invurnability from Moria at that point.

>--

-Jeff

Author of NPPAngband. Check it out at:

Anonymous

April 2, 2005 12:54:39 AM

In article <1112371546.921da233c232789af56cadbd923ee605@teranews>,

Bahman Rabii <bahman@oangband.com> wrote:

>

>jl8e@fragment.com (Julian Lighton) writes:

>

>> In article <1112319881.e2e8ed0b59292e69f05d2bd09ade5e04@teranews>,

>> Bahman Rabii <bahman@oangband.com> wrote:

><...>

>> >Until you reach total immunity, each X% bonus is actually more

>> >valuable than the previous X% in terms of survivability.

>>

>> This isn't really true - there are some diminishing returns, depending

>> on the size of the hits you can take.

>>

>> Consider single and double resists in Angband. For the big elemental

>> blasts, you take 1600 unresisted - you need the first 66%. Double

>> resist is nothing like as important - you need it if you're going to

>> throw down with a big nasty that breathes a lot, but you can manage

>> without it most of the time. That extra 23% just isn't as

>> valuable. (If single resist were 43%, another 23% would be huge.)

>>

>> When you look at the lower damage cap of poison, it's even more

>> significant. Single resist is enough.

>

>I was unclear. I was not refering to the standard angband system of

>stacking permanent and temporary resists which is OK in this respect.

>Rather, I was refering to the system in EyAngband and Steamband in

>which items grant fixed additive bonuses. I object to this because

>each percentile you add is in many ways more significant than the

>last. It is too fine a line between "this attack will kill you for

>sure" and "this attack is totally irrelevant to you".

I understood - I was disagreeing with you, and using Angband as an

example because I know the numbers. At some point, more resist just

isn't that important. (Now, if the percent per item isn't that large,

it's never going to reach the point of diminishing returns, and at low

percents, you do get increasing returns per item.)

--

Julian Lighton jl8e@fragment.com

/* You are not expected to understand this. */

Anonymous

April 2, 2005 7:34:08 AM

Eddie Grove <eddiegrove@hot.NOSPAM.mail.com> writes:

> If you believe in allowing a certain plus to provide immunity, this

> is inevitable as the last plus is of infinite relative value.

Admittedly, I do approve of an exception for the extreme case.

> > I favor is system of "resistance points" - rpoints below - indexing a

> > lookup table of damage modification. The player would start with 0

> > rpoints to all elements. 10 rpoints would yield true immunity, and

> > negative rpoints would represent a susceptibility.

>

> I find these tables to be hacks.

A table of some sort vs a formula of some sort is an implementation

detail. We can get the same effects either way. I prefer a table for

consistency with existing features, but I understand your distaste.

--

Bahman Rabii

Anonymous

April 2, 2005 7:50:33 AM

jl8e@fragment.com (Julian Lighton) writes:

> I understood - I was disagreeing with you, and using Angband as an

> example because I know the numbers. At some point, more resist just

> isn't that important. (Now, if the percent per item isn't that large,

> it's never going to reach the point of diminishing returns, and at low

> percents, you do get increasing returns per item.)

Well the damage percentages for 0,1,2,3,4,5 resistance items are

100,55,30,20,10,0. The intension of this spread is the following:

- Each level should feel like a marked improvement over the last.

The jump from 20% to 10% may be a touch weaker than the rest,

but could still change your ability to tackle a demon or

dragon pit.

- 1 level be enough for all high resists.

- 2 levels be enough for low resists - or sometimes 1 with very

careful play.

- There is some difficult but realistic way to achieve immunity.

As a bonus, there is a cleaner way to implement various minor bonuses

and vulnerabilities.

I agree that statscreens must show overall percentages.

--

Bahman Rabii

Read discussions in other Video Games categories

!