MorphActor
From ZDoom Wiki
int MorphActor (int tid, [str playerclass, [str monsterclass, [int duration, [int style, [str morphflash, [str unmorphflash]]]]]])
(development version only)
Contents |
Usage
This function and its complement UnMorphActor give the ACS coder direct access to the engine's morph subsystem, instead of having to strategically place DECORATE items and suchlike.
Parameters
- tid: The actor(s) to morph. The activator is used if this parameter is zero.
- playerclass: Defines what class to morph a player into.
- monsterclass: Defines what class to morph a monster into.
- duration: Defines the durationof the morphing effects.
- style: Defines the behaviour of the morphing effects.
- morphflash: Defines the effect flash actor to spawn when the player morphs. If omitted, the game's default teleport fog is used.
- unmorphflash: Defines the effect flash actor to spawn when the player unmorphs. If omitted, the game's default teleport fog is used .
Excepting tid, the parameters are the same special properties defined by the MorphProjectile class. They are summarised above; for full details and additional notes, please refer to the MorphProjectile class.
Important note: the optional arguments are for the moment not optional due to a limitation in the current implementation of ACC. As a workaround, please treat all optional arguments to MorphActor as mandatory until the problem is resolved. Specify 0 for unused integer arguments and "" for unused string arguments. (This Wiki entry will be amended when the problem has been resolved.)
Notes
This function does honor the MRF_WHENINVULNERABLE flag when used on a player, provided that player is also the activator of the function.
The return value is the number of actors successfully morphed. This also means that for TID = 0, it's also a "boolean" (0=failed, 1=succeeded).
Examples
The following example assumes that a Cyberdemon with the DONTMORPH actor flag disabled has a TID of one. The function call turns him in to a pitiful little puppy demon, so you can kill him with ease :)
Note that the Demon's DECORATE code is reproduced from ZDoom.wad because the engine currently requires that all morphed monsters must inherit the MorphedMonster class and ZDoom does not support multiple inheritance; at the moment, you cannot arbitrarily morph one kind of monster into another.
script 1 (void)
{
int morphed = MorphActor(1, "", "MorphDemon", 1048576, 0, "", "");
}
ACTOR MorphableCyberDemon : CyberDemon replaces CyberDemon
{
-DONTMORPH
}
ACTOR MorphDemon : MorphedMonster
{
Game Doom
Health 150
PainChance 180
Speed 10
Radius 30
Height 56
Mass 400
Monster
+FLOORCLIP +FASTER +FASTMELEE
SeeSound "demon/sight"
AttackSound "demon/melee"
PainSound "demon/pain"
DeathSound "demon/death"
ActiveSound "demon/active"
Obituary "%o was killed by a dem... cyberd... well, by something anyway"
States
{
Spawn:
SARG AB 10 A_Look
Loop
See:
SARG AABBCCDD 2 A_Chase
Loop
Melee:
SARG EF 8 A_FaceTarget
SARG G 8 A_SargAttack
Goto See
Pain:
SARG H 2
SARG H 2 A_Pain
Goto See
Death:
SARG I 8
SARG J 8 A_Scream
SARG K 4
SARG L 4 A_NoBlocking
SARG M 4
SARG N -1
Stop
Raise:
SARG N 5
SARG MLKJI 5
Goto See
}
}

