[CF-Devel] PR (Partial resistance)

Jan Echternach echter at informatik.uni-rostock.de
Wed Nov 15 04:40:38 CST 2000


On Sun, Nov 12, 2000 at 08:29:47PM +1100, 
     
     dnh at hawthorn.csse.monash.edu.au
     
      wrote:
>
     
      1) Implement a working addative resistances system, much like the current
     
     >
     
      armour is for physical, these resistance systems would do the same just be
     
     >
     
      based on another "armour" type value
     
     
I favour the following scheme:

Each item has a protection value per attacktype.  Typical values should
be

Dragon mail		10
Fire shield		8
Simple ring		4 (Ring prot: fire, vuln: cold)
Simple amulet		7 (Amulet prot: fire, vuln: cold)
Ring of Fire		6
Crown of Fire		5
Ring of Elements	4 (but for several attacktypes)

Vulnerabilites:

Simple ring		-5
Simple amulet		-9

Spells:
Protection from fire	up to 20 - 30, depending on level
			(e.g. 10 for wisdom level 25)

Immunities (value >= 50):

Potion of fire resistance	100

The effective protection is calculated this way:

  sum_prot = sum of all values < 50
  sum_immu = sum of all values >= 50

  limited_sum_prot = MIN (50, sum_prot)
  tmp_sum = limited_sum_prot + sum_immu
  sum = MAX(-50, MIN (250, tmp_sum))

  table_index = 50 + sum
  protection = table[table_index]

limited_sum_prot = 50: maximum protection equals a "small" immunity

sum = 250: two normal immunities (e.g. potion + holy posession) and
best protection, or three immunities

sum -50: highest vulnerability

* Protections are limited.
* Spells are still useful.
* Different strengths of protections (and even immunites) possible.
* Easy to calculate.
* Easy to balance with the table.
* Uses little space (one unsigned char per protection value).
* Optional: Add magic or magic/2 to the item's base protection value
(e.g. body armour with high protection usually has value 9, but Dragon
mail +3 gives 9+3/2=10.5, if enchanted to +10 it gives 9+10/2=14).
But this is a bit difficult to get right.  For example, gauntlets +10
with some protection would give something like 3+10/2=8 which is very
much for gauntlets.  Maybe a formula like

  effective_value = base_value * magic_modifier_table[magic_value]

would be better.

* Using spells or potions multiple times should probably be forbidden,
like many poison spells won't make the poison stronger, but will only
make it last longer.  But maybe it's already implemented this way.

-- 
Jan

    
    


More information about the crossfire mailing list