Contents

Technical Documentation - Dungeon Master and Chaos Strikes Back - Skills and Statistics

Skills

There are twenty skills that each champion can use and in which he gains experience. The first four skills (0 to 3) are the "basic skills" displayed in the champion sheet screen (Fighter, Ninja, Priest, Wizard) and the other 16 are hidden skills.

Basic skills:

  • 00: Fighter
  • 01: Ninja
  • 02: Priest
  • 03: Wizard

Hidden skills:

  • 04: Swing (Hidden Fighter skill)
  • 05: Thrust (Hidden Fighter skill)
  • 06: Club (Hidden Fighter skill)
  • 07: Parry (Hidden Fighter skill)
  • 08: Steal (Hidden Ninja skill)
  • 09: Fight (Hidden Ninja skill)
  • 10: Throw (Hidden Ninja skill)
  • 11: Shoot (Hidden Ninja skill)
  • 12: Identify (Hidden Priest skill)
  • 13: Heal (Hidden Priest skill)
  • 14: Influence (Hidden Priest skill)
  • 15: Defend (Hidden Priest skill)
  • 16: Fire (Hidden Wizard skill)
  • 17: Air (Hidden Wizard skill)
  • 18: Earth (Hidden Wizard skill)
  • 19: Water (Hidden Wizard skill)

When a champion is reincarnated or resurrected, the experience in each basic skill is set to the sum of experience in the four associated hidden skills.
When experience is gained in any of the hidden skills 4 through 19 then that experience is also added to the experience in the associated "basic skill". For example, experience added to skill number 10 is also added to skill number 1.
Consequently, experience in a basic skill is always greater than or equal to the sum of experience in each associated hidden skills.

The only ways to gain experience in a basic skill directly are:

  • The Mana Potion (Ee Potion) gives Priest experience
  • The Zokathra Spell gives Wizard experience
  • The actions of the Firestaff (Invoke, Fluxcage, Fuse) give Wizard experience

Each skill has two components: a permanent "experience" component that can only increase and a temporary adjustment which can be negative as a result of battle injuries and such.

Champions earn experience points in each of these skills in many ways during their adventure in the dungeon. Once enough experience has been acquired in a skill, champions gain a level in that skill, and some of their statistics are increased.

Skill Levels

To determine a champion's level in any of the skills, the following table is used:

  • 1. - (0)
  • 2. Neophyte (500)
  • 3. Novice (1000)
  • 4. Apprentice (2000)
  • 5. Journeyman (4000)
  • 6. Craftsman (8000)
  • 7. Artisan (16000)
  • 8. Adept (32000)
  • 9. Expert (64000)
  • 10. Symbol - Lo Master (128000)
  • 11. Symbol - Um Master (256000)
  • 12. Symbol - On Master (512000)
  • 13. Symbol - Ee Master (1024000)
  • 14. Symbol - Pal Master (2048000)
  • 15. Symbol - Mon Master (4096000)
  • 16. Archmaster (8192000)

Actually, the game does not use a table but simply a power of two algorithm (the required amount of experience points is doubled with each level). There is no hard limit in the game at level 15 so it is possible to have a champion of level 16 (or even above) with twice the amount of experience required for Archmaster but the champion would still appear as Archmaster as it is the last level name defined in the game. However, there is an upper limit to the amount of experience when the 32 bit variable used to store the experience value overflows (the champion level then goes back to 0!). There is no check for an overflow in the original game engine but this was added in CSBwin where the maximum experience valued allowed is 0x10000000 (268435456) which corresponds to level 21.
The champion's effective level can be affected by the possession of some items.

In order to compute the skill level of a champion in one of the four basic skills, the game uses the amount of experience in that basic skill.
In order to compute the skill level of a champion in one of the sixteen hidden skills, the game uses the average of experience in that hidden skill and the associated basic skill: hidden skill experience + basic skill experience / 2.

Statistics

Health

This value represents how much damage a champion can take before dying.
Health slowly increases over time. You can speed up can regaining Health points by sleeping and drinking healing potions.
The speed of the increase of health depends on the Vitality of the champion.

Stamina

This value represents the champion's ability to overcome fatigue. It decreases when you walk and fight and also when you are hungry or thirsty. If this value is equal to zero, any more activity will decrease health.
Stamina slowly increases over time. You can speed up regaining Stamina points by sleeping and drinking Stamina potions.
The game engine manages an internal value that is divided by 10 before being displayed on screen.

Mana

This value represents the magickal energy a champion has to cast spells. Each spoken symbol will consume some Mana.
Mana slowly increases over time. You can speed up regaining Mana points by sleeping and drinking Mana potions.

The speed of the increase of mana depends on the Wisdom and the Priest and Wizard levels of the champion. Each time mana is increased, some Stamina is consumed.

Load

This value represents the weight a champion can carry. The more a champion is carrying, the more stamina is consumed. When this value is displayed in yellow, this is a warning that the champion carries a lot of things. When it is displayed in red, the champion is overloaded and his actions will consume a lot of stamina.

The maximum load a champion can carry is based on the Strength value.

In Dungeon Master and Chaos Strikes Back, the character sheet of a champion shows the load that the champion is currently carrying and the maximum load he is able to carry. We will call these values CurrentLoad and MaxLoad.
The MaxLoad value depends on the current value of strength and the current and maximum values of stamina.

The current strength value is used to determine a base maximum load value. We will call this value BaseMaxLoad.
BaseMaxLoad = (8 x CurrentStrength + 100) / 10 Kg
For example, a champion with a current strength of 46 would be able to carry (8 x 46 + 100) / 10 = 46.8 Kg. This value is rounded to 47 Kg.
The BaseMaxLoad value is then adjusted using the current and maximum stamina values to determine the MaxLoad value that is displayed in the character sheet:

  • If Stamina >= MaxStamina/2 Then MaxLoad is equal to BaseMaxLoad
  • If Stamina < MaxStamina/2 Then MaxLoad is equal to BaseMaxLoad / 2 + (((BaseMaxLoad / 2) * Stamina) / (MaxStamina / 2))

If the champion has his feet injured then MaxLoad = 3 * MaxLoad / 4 else if the champion is injured elsewhere then MaxLoad = 7 * MaxLoad / 8
If the champion wears 'Elven Boots' then MaxLoad = 17 * MaxLoad / 16

If CurrentLoad is greater than 5/8th of MaxLoad, the current and maximum load values are displayed in yellow.
If CurrentLoad is greater than MaxLoad, the current and maximum load values are displayed in red.

Reference:

  • BaseMaxLoad: CSBwin version 9.8 source code: file Code11f52.cpp, in function "i32 MaxLoad(CHARDESC *pChar)"
  • MaxLoad after adjustment: CSBwin version 9.8 source code: file Code11f52.cpp, in function "i16 StaminaAdjustedAttribute(CHARDESC *pChar, i16 baseValue)"
  • Color used to display Load: CSBwin version 9.8 source code: file Character.cpp, in function "void DrawCharacterState(i32 chIdx)"

Strength

This value determines the load a champion can carry, how far items can be thrown and how much damage is done by melee attacks.

Dexterity

This value determines the accuracy of missiles and the odds of hitting opponents in combat. It also helps the champion to avoid or reduce physical damage.

Wisdom

This value is important for spellcasters as it determines their ability to master Magick. It also determines the speed of Mana recovery.

Vitality

This value determines how quickly a champion heals and regains Stamina as wall as his poison resistance. It also helps to reduce damage.
Because of a bug this statistic is ignored against poison and to determine the probability of being wounded in all Atari ST versions (but not in other versions). Vitality is still used normally to compute the defense against wounds and the speed of health regeneration.

Anti-Magic

This value determines a champion's resistance to magic attacks.
Because of a bug this statistic is completely ignored in all Atari ST versions (but not in other versions).

Anti-Fire

This value determines a champion's resistance to fire damage.
Because of a bug this statistic is completely ignored in all Atari ST versions (but not in other versions).

Food and Water

These two values represent how hungry and thursty a champion is. Food and Water values are decreased to regenerate Stamina and Health. When these values reach zero, the champion is starving: his Stamina and health decrease until he eats, drinks or dies.

Luck (hidden statistic)

This value is not visible through the game user interface.
It is used during combat and its value is changed each time you use it. The value increases when you are unlucky and decreases when you are lucky. For example, if a champion would miss a hit, his Luck can help him still succeed. In this case, the Luck value is decreased.
This value is modified by some items: a Rabbit's Foot will increase it by 10, while cursed items will decrease it by 3.

Resurrect and Reincarnate

Resurrection: Champions return to life exactly as they were: they will keep their name and all their skills and statistics. In Dungeon Master, this option is only good in the short term as you start the game with champions already having a very basic training. In Chaos Strikes Back, this option makes the game easier as you start the game with champions already having a good training.

Reincarnation: Champions lose their skills and you can choose new names for them. Apart from that, reincarnation behaves differently in Dungeon Master and in Chaos Strikes Back:

  • In Dungeon Master: Some statistics are slightly increased. Later in the game, you will find that at equivalent levels, you will have more Health and Mana than if the same champion had been resurrected.
    This option is better in the long term because as you train your champions yourself, they will end up with higher skills and statistics. However, this makes the beginning of the game a little harder.
  • In Chaos Strikes Back: Health, Stamina and Mana are divided by 2 (Atari ST) or by 4 (Amiga, X68000, PC-9801 and FM-Towns). The other statistics are slightly increased or decreased.
    This option makes the beginning of the game much harder.

Statistics increase

When a champion has gained enough experience in one skill to reach a new level, some of the champion's statistics are increased based on which skill he progressed in:

  • All skills can increase Health, Stamina, Vitality and Anti-Fire.
  • Fighter and Ninja skills can increase Strength and Dexterity.
  • Priest and Wizard skills can increase Mana, Wisdom and Anti-Magic.

Each time a champion gains a skill level, the Maximum Health value is increased by a random amount between X and 1.5X where X depends on the improved skill:
Fighter skills: X = new skill level * 3
Ninja skills: X = new skill level * 2
Priest skills: X = new skill level * 1.5
Wizard skills: X = new skill level

Each time a champion gains a skill level, the Maximum Stamina value is increased by a random amount between X and 1.5X where X depends on the improved skill:
Fighter skills: X = MaximumStamina / 16
Ninja skills: X = MaximumStamina / 21
Priest skills: X = MaximumStamina / 25
Wizard skills: X = MaximumStamina / 32

Each time a champion gains a Wizard or Priest skill level, the Maximum Mana value is increased by:
Priest skills: new skill level + Min(Random(4), Base Priest Skill Level - 1)
Wizard skills: (new skill level * 1.5) + Min(Random(4), Base Wizard Skill Level - 1)

Maximum statistic values

  • Health: 999
  • Mana: 900
  • Stamina: 9999 (The game engine manages an internal value that is divided by 10 before being displayed on screen)
  • Strength, Dexterity, Wisdom, Vitality, Anti-Magic, Anti-Fire, Luck: 170. In earlier versions of Dungeon Master, the maximum value was 255 (in Dungeon Master for Atari ST version 1.0a and 1.0b) or 250 (in Dungeon Master for Atari ST version 1.1).