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.
Actor type Monster Game MiniHereticLogoIcon.png
DoomEd Number None Class Name Sorcerer2
Spawn ID 143 Identifier T_DSPARILALONE

Classes: Sorcerer2
After D'Sparil's mount is slain, it appears for a moment that the Serpent Rider is dead, too. But he quickly rises to his feet and begins battle alone. It shouldn't be a surprise that he is a tougher opponent than his pet. The native action A_Srcr2Decide is used to determine whether he teleports before an attack, while A_Srcr2Attack will make him either perform a melee attack, throw a devastating lightning bolt or summon forth two of his Disciples through summoning spells. When he dies, A_Sor2DthInit kills all remaining monsters on the level and sets his deathloop to loop seven times. A_Sor2DthLoop controls this looping behavior; an identical result could have been achieved with SDTH DEFDEFDEFDEFDEFDEFDEF 7.

DECORATE definition

ACTOR Sorcerer2
  Health 3500
  Radius 16
  Height 70
  Mass 300
  Speed 14
  PainChance 32
  SeeSound "dsparil/sight"
  AttackSound "dsparil/attack"
  PainSound "dsparil/pain"
  ActiveSound "dsparil/active"
  Obituary "$OB_DSPARIL2"
  HitObituary "$OB_DSPARIL2HIT"

  action native A_Srcr2Decide();
  action native A_Srcr2Attack();
  action native A_Sor2DthInit();
  action native A_Sor2DthLoop();

    SOR2 MN 10 A_Look
    SOR2 MNOP 4 A_Chase
    SOR2 AB 4
    SOR2 C 4 A_PlaySound("dsparil/rise", CHAN_BODY, 1, FALSE, ATTN_NONE)
    SOR2 DEF 4
    SOR2 G 12 A_PlaySound("dsparil/sight", CHAN_BODY, 1, FALSE, ATTN_NONE)
    Goto See
    SOR2 Q 3
    SOR2 Q 6 A_Pain
    Goto See
    SOR2 R 9 A_Srcr2Decide
    SOR2 S 9 A_FaceTarget
    SOR2 T 20 A_Srcr2Attack
    Goto See
    Goto See
    SDTH A 8 A_Sor2DthInit
    SDTH B 8
    SDTH C 8 A_PlaySound("dsparil/scream", CHAN_BODY, 1, FALSE, ATTN_NONE)
    SDTH DE 7
    SDTH F 7 A_Sor2DthLoop
    SDTH G 6 A_PlaySound("dsparil/explode", CHAN_BODY, 1, FALSE, ATTN_NONE)
    SDTH H 6
    SDTH I 18
    SDTH J 6 A_NoBlocking
    SDTH K 6 A_PlaySound("dsparil/bones", CHAN_BODY, 1, FALSE, ATTN_NONE)
    SDTH LMN 6
    SDTH O -1 A_BossDeath