Difference between revisions of "Pain state"

From DoomWiki.org

[checked revision][checked revision]
(fix percentage conversions -- see talk page)
(List of monsters sorted by pain chance: add intro)
(11 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
A monster's '''pain state''' is an action [[frame]] used for that monster when being momentarily stunned by a [[Hit point|damaging]] attack. Each monster type has a different probability of suffering this effect when hurt. This probability is called the monster's ''pain chance'' (from [[DeHackEd]]). The monster, when in pain from being hit by a [[projectile]] or [[Hitscan|shot]], [[Melee attack|clawed or bitten]], or [[fist|punched]] or [[chainsaw]]ed, halts its movement or attack and displays its pain state sprite frame while usually giving a cry of pain, and then continues moving or possibly retaliates against its attacker. The [[player]]'s pain state includes [[PLAYPAL|a reddening effect of the screen]], as well as the third-person view [[sprite]] frame.
 
A monster's '''pain state''' is an action [[frame]] used for that monster when being momentarily stunned by a [[Hit point|damaging]] attack. Each monster type has a different probability of suffering this effect when hurt. This probability is called the monster's ''pain chance'' (from [[DeHackEd]]). The monster, when in pain from being hit by a [[projectile]] or [[Hitscan|shot]], [[Melee attack|clawed or bitten]], or [[fist|punched]] or [[chainsaw]]ed, halts its movement or attack and displays its pain state sprite frame while usually giving a cry of pain, and then continues moving or possibly retaliates against its attacker. The [[player]]'s pain state includes [[PLAYPAL|a reddening effect of the screen]], as well as the third-person view [[sprite]] frame.
  
The [[chaingun]] is particularly useful against monsters with a high pain chance, as due to its rapid rate of fire each bullet causes the monster to cringe convulsively in pain (called "doing the chaingun [[wikipedia:Cha-cha-cha (dance)|cha-cha]]" in the original Doom manual). These include [[imp]]s, [[demon]]s, [[lost soul]]s, [[cacodemon]]s, [[pain elemental]]s, [[mancubi]], [[arachnotron]]s and [[revenant]]s.  
+
== Combat strategies ==
 +
The [[chaingun]] is particularly useful against monsters with a high pain chance, as due to its rapid rate of fire each bullet causes the monster to cringe convulsively in pain. This is called "doing the chaingun {{wp|Cha-cha-cha (dance)|cha-cha}}" in the original [[Doom instruction manual|Doom manual]]. Monsters especially vulnerable to be stunned due to continuous damage are [[imp]]s, [[demon]]s, [[lost soul]]s, [[cacodemon]]s, [[pain elemental]]s, [[mancubus|mancubi]], [[arachnotron]]s and [[revenant]]s. Only [[lost soul]]s and [[Commander Keen]]s have a 100% pain chance.  
  
For those monsters with a low pain chance, the [[shotgun]]s or [[plasma gun]]s are more effective. Only [[Lost Soul]]s and [[Commander Keen]]s have a 100% pain chance.  
+
For those monsters with a low pain chance, the [[shotgun]]s or [[plasma gun]]s are more effective. Pain stunning with the plasma gun is often exploited in the [[Boss|final battle]] with the [[Spiderdemon]] in Doom [[E3M8: Dis]].
  
 
==Technical==
 
==Technical==
The pain chance is handled in <tt>P_DamageMobj()</tt> in <tt>p_inter.c</tt>. This is the generic "hurt something" code which is called for all damage events. On each call, the monster's pain chance is compared to a random number from 0 to 255. If this number is less than the monster's pain chance, then the monster goes into pain state. There are no situations in the game where multiple separate damage events are combined into one pain chance check. For example, for rocket [[splash damage|splashes]], <tt>P_RadiusAttack()</tt> from <tt>p_map.c</tt> calls <tt>P_DamageMobj</tt> individually for each splash it makes, and the direct hit is also a separate call. [[BFG9000|BFG]] tracers and shotgun pellets also call <tt>P_DamageMobj</tt> individually for each one, even if many hit one target.  A straightforward consequence of this handling is that attacks with many individual components, like [[super shotgun]] hits or BFG tracers, are very likely to give a monster pain, because the pain chance check only needs to succeed for one component.
+
The pain chance is handled in {{c|P_DamageMobj()}} in [[Doom source code files|{{c|p_inter.c}}]]. This is the generic "hurt something" code which is called for all damage events. On each call, the monster's pain chance is compared to a random number from 0 to 255. If this number is less than the monster's pain chance, then the monster goes into pain state. There are no situations in the game where multiple separate damage events are combined into one pain chance check. For example, for rocket [[splash damage|splashes]], {{c|P_RadiusAttack()}} from {{c|p_map.c}} calls {{c|P_DamageMobj}} individually for each splash it makes, and the direct hit is also a separate call. [[BFG9000|BFG]] tracers and shotgun pellets also call {{c|P_DamageMobj}} individually for each one, even if many hit one target.  A straightforward consequence of this handling is that attacks with many individual components, like [[super shotgun]] hits or BFG tracers, are very likely to give a monster pain, because the pain chance check only needs to succeed for one component.
  
 
==List of monsters sorted by pain chance==
 
==List of monsters sorted by pain chance==
{| {{prettytable}}
+
Besides monsters and other enemies in the four main [[Doom engine#As a game engine|Doom-engine]] games, these tables also list all other shootable objects.
!Monster||Pain Chance||Hit Points
+
 
 +
{{col-begin}}
 +
{{col-break|width=45%}}
 +
===Doom===
 +
{| {{prettySortable}}
 +
! Monster || data-sort-type="number"|Pain Chance || Hit Points
 
|-
 
|-
|[[Lost soul]]||256 (100%)||100
+
| [[Commander Keen]] || 256 (100%) || 100
 
|-
 
|-
|[[Commander Keen]]||256 (100%)||100
+
| [[Lost soul]] || 256 (100%) || 100
 
|-
 
|-
|[[Boss Brain]]||255 (99.61%)||250
+
| [[Boss brain]] || 255 (99.61%) || 250
 
|-
 
|-
|[[Imp]]||200 (79.30%)||60
+
| [[Imp]] || 200 (79.30%) || 60
 
|-
 
|-
|[[Zombieman]]||200 (79.30%)||20
+
| [[Zombieman]] || 200 (79.30%) || 20
 
|-
 
|-
|[[Demon]]||180 (70.70%)||150
+
| [[Demon]] || 180 (70.70%) || 150
 
|-
 
|-
|[[Spectre]]||180 (70.70%)||150
+
| [[Spectre]] || 180 (70.70%) || 150
 
|-
 
|-
|[[Heavy weapon dude]]||170 (67.58%)||70
+
| [[Heavy weapon dude]] || 170 (67.58%) || 70
 
|-
 
|-
|[[Wolfenstein SS]]||170 (67.58%)||50
+
| [[Wolfenstein SS]] || 170 (67.58%) || 50
 
|-
 
|-
|[[Shotgun guy]]||170 (67.58%)||30
+
| [[Shotgun guy]] || 170 (67.58%) || 30
 
|-
 
|-
|[[Arachnotron]]||128 (50%)||500
+
| [[Arachnotron]] || 128 (50%) || 500
 
|-
 
|-
|[[Pain elemental]]||128 (50%)||400
+
| [[Cacodemon]] || 128 (50%) || 400
 
|-
 
|-
|[[Cacodemon]]||128 (50%)||400
+
| [[Pain elemental]] || 128 (50%) || 400
 
|-
 
|-
|[[Revenant]]||100 (39.84%)||300
+
| [[Revenant]] || 100 (39.84%) || 300
 
|-
 
|-
|[[Mancubus]]||80 (30.86%)||600
+
| [[Mancubus]] || 80 (30.86%) || 600
 
|-
 
|-
|[[Baron of hell]]||50 (16.80%)||1000
+
| [[Baron of Hell]] || 50 (16.80%) || 1000
 
|-
 
|-
|[[Hell knight]]||50 (16.80%)||500
+
| [[Hell knight]] || 50 (16.80%) || 500
 
|-
 
|-
|[[Spiderdemon]]||40 (12.89%)||3000
+
| [[Spiderdemon]] || 40 (12.89%) || 3000
 
|-
 
|-
|[[Cyberdemon]]||20 (5.47%)||4000
+
| [[Cyberdemon]] || 20 (5.47%) || 4000
 
|-
 
|-
|[[Arch-vile]]||10 (3.13%)||700
+
| [[Arch-vile]] || 10 (3.13%) || 700
 +
|-
 +
| [[Barrel]] || 0 (0%) || 20
 
|}
 
|}
 +
{{col-break}}
 +
===Heretic===
 +
{| {{prettySortable}}
 +
! Monster || data-sort-type="number"|Pain Chance || Hit Points
 +
|-
 +
| [[Pod]] || 255 (99.61%) || 45
 +
|-
 +
| [[Gargoyle|Fire gargoyle]] || 200 (79.30%) || 80
 +
|-
 +
| [[Gargoyle]] || 200 (79.30%) || 40
 +
|-
 +
| [[Chicken]] (monster) || 200 (79.30%) || 10
 +
|-
 +
| [[Golem]] || 128 (50.00%) || 80
 +
|-
 +
| Golem ghost || 128 (50.00%) || 80
 +
|-
 +
| [[Weredragon]] || 100 (39.84%) || 220
 +
|-
 +
| [[Undead warrior]] || 100 (39.84%) || 200
 +
|-
 +
| Undead warrior ghost || 100 (39.84%) || 200
 +
|-
 +
| [[Disciple of D'Sparil]] || 64 (23.05%) || 180
 +
|-
 +
| [[Golem|Nitrogolem]] || 64 (23.05%) || 100
 +
|-
 +
| Nitrogolem ghost || 64 (23.05%) || 100
 +
|-
 +
| [[D'Sparil|D'Sparil on Serpent]] || 56 (19.53%) || 2000
 +
|-
 +
| [[Ophidian]] || 48 (16.02%) || 280
 +
|-
 +
| D'Sparil sans Serpent || 32 (10.16%) || 3500
 +
|-
 +
| [[Iron lich]] || 32 (10.16%) || 700
 +
|-
 +
| [[Sabreclaw]] || 32 (10.16%) || 150
 +
|-
 +
| [[Maulotaur]] || 25 (7.42%) || 3000
 +
|}
 +
{{col-end}}
 +
 +
{{col-begin}}
 +
{{col-break|width=45%}}
 +
===Hexen===
 +
{| {{prettySortable}}
 +
!Monster || data-sort-type="number"|Pain Chance || Hit Points
 +
|-
 +
|[[Mushroom]] || 255 (99.61%) || 30
 +
|-
 +
|[[Wendigo]] || 144 (56.25%) || 120
 +
|-
 +
|[[Centaur]] || 135 (52.73%) || 200
 +
|-
 +
|[[Mash monsters|Centaur (mash)]] || 135 (52.73%) || 200
 +
|-
 +
|[[Death wyvern]] || 128 (50.00%) || 640
 +
|-
 +
|[[Pig]] (monster) || 128 (50.00%) || 25
 +
|-
 +
|[[Dark bishop]] || 110 (42.97%) || 130
 +
|-
 +
|[[Slaughtaur]] || 96 (37.50%) || 250
 +
|-
 +
|[[Stalker]] || 96 (37.50%) || 90
 +
|-
 +
|Stalker boss || 96 (37.50%) || 90
 +
|-
 +
|[[Ettin]] || 60 (23.44%) || 175
 +
|-
 +
|Ettin (mash) || 60 (23.44%) || 175
 +
|-
 +
|[[Menelkir]] || 50 (19.53%) || 800
 +
|-
 +
|[[Traductus]] || 50 (19.53%) || 800
 +
|-
 +
|[[Zedek]] || 50 (19.53%) || 800
 +
|-
 +
|[[Brown chaos serpent]] || 50 (19.53%) || 250
 +
|-
 +
|Brown chaos serpent (mash) || 50 (19.53%) || 250
 +
|-
 +
|[[Green chaos serpent]] || 50 (19.53%) || 250
 +
|-
 +
|Green chaos serpent (mash) || 50 (19.53%) || 250
 +
|-
 +
|[[Maulotaur]] || 25 (9.77%) || 2500
 +
|-
 +
|[[Reiver]] || 25 (9.77%) || 150
 +
|-
 +
|Reiver (buried) || 25 (9.77%) || 150
 +
|-
 +
|[[Korax]] || 20 (7.81%) || 5000
 +
|-
 +
|[[Heresiarch]] || 10 (3.91%) || 5000
 +
|-
 +
|[[Afrit]] || 1 (0.39%) || 80
 +
|-
 +
|Destructible tree || 0 (0.00%) || 70
 +
|-
 +
|Suit of armor || 0 (0.00%) || 60
 +
|-
 +
|Sitting corpse || 0 (0.00%) || 30
 +
|-
 +
|Evergreen tree || 0 (0.00%) || 20
 +
|-
 +
|Shrub (large) || 0 (0.00%) || 20
 +
|-
 +
|Pot (medium) || 0 (0.00%) || 15
 +
|-
 +
|Pot (short) || 0 (0.00%) || 15
 +
|-
 +
|Pot (tall) || 0 (0.00%) || 15
 +
|-
 +
|Shrub (small) || 0 (0.00%) || 10
 +
|}
 +
{{col-break}}
 +
 +
===Strife===
 +
{| {{prettySortable}}
 +
!Monster || data-sort-type="number"|Pain Chance || Hit Points
 +
|-
 +
|Practice Target || 255 (99.61%) || 99999999
 +
|-
 +
|[[Entity]] || 255 (99.61%) || 2500
 +
|-
 +
|Subentity || 255 (99.61%) || 990
 +
|-
 +
|[[Sentinel]] || 255 (99.61%) || 100
 +
|-
 +
|[[Acolyte|Becoming Acolyte]] || 255 (99.61%) || 61
 +
|-
 +
|[[Kneeling Guy]] || 255 (99.61%) || 51
 +
|-
 +
|[[Spectre (Strife)|Spectre (Programmer)]] || 250 (97.27%) || 1000
 +
|-
 +
|[[Macil]] || 250 (97.27%) || 95
 +
|-
 +
|[[Rebel]] || 250 (97.27%) || 60
 +
|-
 +
|[[Beggar]] || 250 (97.27%) || 20
 +
|-
 +
|[[Macil|Macil Spectre]] || 200 (79.30%) || 95
 +
|-
 +
|[[Peasant]] || 200 (79.30%) || 31
 +
|-
 +
|[[Merchant]] || 150 (60.16%) || 10000000
 +
|-
 +
|[[Acolyte]] (most colors) || 150 (60.16%) || 70
 +
|-
 +
|Shadow Acolyte || 150 (60.16%) || 70
 +
|-
 +
|Acolyte (blue & light green) || 150 (60.16%) || 60
 +
|-
 +
|[[Bishop]] || 128 (50.00%) || 500
 +
|-
 +
|[[Crusader]] || 128 (50.00%) || 400
 +
|-
 +
|[[Reaver]] || 128 (50.00%) || 150
 +
|-
 +
|[[Templar]] || 100 (39.84%) || 300
 +
|-
 +
|Spectre (Loremaster) || 50 (16.80%) || 2000
 +
|-
 +
|Spectre (Macil) || 50 (16.80%) || 1700
 +
|-
 +
|Spectre (Oracle) || 50 (16.80%) || 1500
 +
|-
 +
|Spectre (Bishop) || 50 (16.80%) || 1200
 +
|-
 +
|[[Programmer]] || 50 (16.80%) || 1100
 +
|-
 +
|[[Stalker (Strife)|Stalker]] || 40 (12.89%) || 80
 +
|-
 +
|[[Ceiling turret]] || 0 (0.00%) || 125
 +
|-
 +
|[[Barrel (Strife)|Exploding barrel]] || 0 (0.00%) || 30
 +
|-
 +
|Wooden barrel || 0 (0.00%) || 10
 +
|}
 +
{{col-end}}
 +
 
[[Category:Doom engine]]
 
[[Category:Doom engine]]
 
[[Category:Monsters]]
 
[[Category:Monsters]]

Revision as of 04:18, 8 March 2018

A monster's pain state is an action frame used for that monster when being momentarily stunned by a damaging attack. Each monster type has a different probability of suffering this effect when hurt. This probability is called the monster's pain chance (from DeHackEd). The monster, when in pain from being hit by a projectile or shot, clawed or bitten, or punched or chainsawed, halts its movement or attack and displays its pain state sprite frame while usually giving a cry of pain, and then continues moving or possibly retaliates against its attacker. The player's pain state includes a reddening effect of the screen, as well as the third-person view sprite frame.

Combat strategies

The chaingun is particularly useful against monsters with a high pain chance, as due to its rapid rate of fire each bullet causes the monster to cringe convulsively in pain. This is called "doing the chaingun cha-cha" in the original Doom manual. Monsters especially vulnerable to be stunned due to continuous damage are imps, demons, lost souls, cacodemons, pain elementals, mancubi, arachnotrons and revenants. Only lost souls and Commander Keens have a 100% pain chance.

For those monsters with a low pain chance, the shotguns or plasma guns are more effective. Pain stunning with the plasma gun is often exploited in the final battle with the Spiderdemon in Doom E3M8: Dis.

Technical

The pain chance is handled in P_DamageMobj() in p_inter.c. This is the generic "hurt something" code which is called for all damage events. On each call, the monster's pain chance is compared to a random number from 0 to 255. If this number is less than the monster's pain chance, then the monster goes into pain state. There are no situations in the game where multiple separate damage events are combined into one pain chance check. For example, for rocket splashes, P_RadiusAttack() from p_map.c calls P_DamageMobj individually for each splash it makes, and the direct hit is also a separate call. BFG tracers and shotgun pellets also call P_DamageMobj individually for each one, even if many hit one target. A straightforward consequence of this handling is that attacks with many individual components, like super shotgun hits or BFG tracers, are very likely to give a monster pain, because the pain chance check only needs to succeed for one component.

List of monsters sorted by pain chance

Besides monsters and other enemies in the four main Doom-engine games, these tables also list all other shootable objects.