A_TroopAttack is used for both of the Imp's methods of attack. If the imp is within melee range of its target, it does a random amount of damage to its target and plays the sound effect DSCLAW. Otherwise, it launches a fireball (object of type
MT_TROOPSHOT) towards its target. If the monster has no target, nothing happens.
The naming of this code pointer is a somewhat confusing artifact of Doom's development process where the Imp was initially called a "troop" before the addition of the Zombieman (aka Trooper). A similar situation exists with A_SargAttack.
A_TroopAttack code pointer appears in the following states in Doom's state table:
|Frame number||Doom internal name||Use|
|454||S_TROO_ATK3||attack animation for the Imp|
The following is an example of how to set the
A_TroopAttack code pointer in a Dehacked file:
Pointer 21 (Frame 34) Codep Frame = 454
Or using BEX syntax:
[CODEPTR] Frame 1234 = TroopAttack