Classes:PainElemental

From ZDoom Wiki
Jump to navigation Jump to search
Note: Wait! Stop! Before you copy this actor's definition into your mod, remember the following things:
  1. You do not need to copy that actor, since it is already defined.
  2. In fact, it's not just useless, it's actually harmful as it can cause problems.
  3. If you want to modify it, or use a modified version, using inheritance is the way to go.
  4. The actor definitions here are put on the wiki for reference purpose only. Learn from them, don't copy them.
  5. There is only one exception: if what you want is changing Ammo capacity, you need to create a new type from Ammo.
Pain Elemental
Actor type Monster Game MiniDoom2LogoIcon.png (Doom2)
DoomEd Number 71 Class Name PainElemental
Spawn ID 115 Identifier T_PAINELEMENTAL


Classes: PainElemental

Pain elementals are similar in appearance to cacodemons, but are brown and have stubby arms. The pain elemental is unique in that it does not have an attack of its own, instead it spits lost souls to do its bidding for them. Note that when a pain elemental dies, three lost souls spawn burst out of it.

In vanilla Doom, if the total number of lost souls in the level was greater than 20, the pain elemental's attack would fail, putting a limit at 21 lost souls. This did not differentiate between lost souls spawned by pain elementals and "independent" lost souls placed directly in the map. In ZDoom, this is subjected to a compatibility option, accessible through the compat_limitpain console variable or the menu system.

ZScript definition

Note: The ZScript definition below is for reference and may be different in the current version of GZDoom.The most up-to-date version of this code can be found on GZDoom GitHub.
class PainElemental : Actor
{
	Default
	{
		Health 400;
		Radius 31;
		Height 56;
		Mass 400;
		Speed 8;
		PainChance 128;
		Monster;
		+FLOAT 
		+NOGRAVITY
		SeeSound "pain/sight";
		PainSound "pain/pain";
		DeathSound "pain/death";
		ActiveSound "pain/active";
		Tag "$FN_PAIN";
	}
	States
	{
	Spawn:
		PAIN A 10 A_Look;
		Loop;
	See:
		PAIN AABBCC 3 A_Chase;
		Loop;
	Missile:
		PAIN D 5 A_FaceTarget;
		PAIN E 5 A_FaceTarget;
		PAIN F 5 BRIGHT A_FaceTarget;
		PAIN F 0 BRIGHT A_PainAttack;
		Goto See;
	Pain:
		PAIN G 6;
		PAIN G 6 A_Pain;
		Goto See;
	Death:
		PAIN H 8 BRIGHT;
		PAIN I 8 BRIGHT A_Scream;
		PAIN JK 8 BRIGHT;
		PAIN L 8 BRIGHT A_PainDie;
		PAIN M 8 BRIGHT;
		Stop;
	Raise:
		PAIN MLKJIH 8;
		Goto See;
	}
}

DECORATE definition

Note: This is legacy code, kept here for reference only. DECORATE is still supported but no longer used by GZDoom. GZDoom internally uses the ZScript definition above.
ACTOR PainElemental
{
  Health 400
  Radius 31
  Height 56
  Mass 400
  Speed 8
  PainChance 128
  Monster
  +FLOAT
  +NOGRAVITY
  SeeSound "pain/sight"
  PainSound "pain/pain"
  DeathSound "pain/death"
  ActiveSound "pain/active"
  States
  {
  Spawn:
    PAIN A 10 A_Look
    Loop
  See:
    PAIN AABBCC 3 A_Chase
    Loop
  Missile:
    PAIN D 5 A_FaceTarget
    PAIN E 5 A_FaceTarget
    PAIN F 5 Bright A_FaceTarget
    PAIN F 0 Bright A_PainAttack
    Goto See
  Pain:
    PAIN G 6
    PAIN G 6 A_Pain
    Goto See
  Death:
    PAIN H 8 Bright
    PAIN I 8 Bright A_Scream
    PAIN JK 8 Bright
    PAIN L 8 Bright A_PainDie
    PAIN M 8 Bright
    Stop
  Raise:
    PAIN MLKJIH 8
    Goto See
  }
}