gzdoom/wadsrc/static/zscript/heretic/hereticimp.txt
Christoph Oelckers 371712c53a - turned everything I could into non-action functions.
- fixed emission of the self pointer in FxVMFunctionCall. I did not realize that the self expression only sets up a register for the value, not pushing it onto the stack.
2016-10-22 17:49:08 +02:00

171 lines
2.5 KiB
Text

// Heretic imp (as opposed to the Doom variety) -----------------------------
class HereticImp : Actor
{
Default
{
Health 40;
Radius 16;
Height 36;
Mass 50;
Speed 10;
Painchance 200;
Monster;
+FLOAT
+NOGRAVITY
+SPAWNFLOAT
+DONTOVERLAP
+MISSILEMORE
SeeSound "himp/sight";
AttackSound "himp/attack";
PainSound "himp/pain";
DeathSound "himp/death";
ActiveSound "himp/active";
Obituary "$OB_HERETICIMP";
HitObituary "$OB_HERETICIMPHIT";
}
native void A_ImpMsAttack();
native void A_ImpDeath();
native void A_ImpXDeath1();
native void A_ImpExplode();
States
{
Spawn:
IMPX ABCB 10 A_Look;
Loop;
See:
IMPX AABBCCBB 3 A_Chase;
Loop;
Melee:
IMPX DE 6 A_FaceTarget;
IMPX F 6 A_CustomMeleeAttack(random[ImpMeAttack](5,12), "himp/attack", "himp/attack");
Goto See;
Missile:
IMPX A 10 A_FaceTarget;
IMPX B 6 A_ImpMsAttack;
IMPX CBAB 6;
Goto Missile+2;
Pain:
IMPX G 3;
IMPX G 3 A_Pain;
Goto See;
Death:
IMPX G 4 A_ImpDeath;
IMPX H 5;
Wait;
XDeath:
IMPX S 5 A_ImpXDeath1;
IMPX TU 5;
IMPX V 5 A_Gravity;
IMPX W 5;
Wait;
Crash:
IMPX I 7 A_ImpExplode;
IMPX J 7 A_Scream;
IMPX K 7;
IMPX L -1;
Stop;
XCrash:
IMPX X 7;
IMPX Y 7;
IMPX Z -1;
Stop;
}
}
// Heretic imp leader -------------------------------------------------------
class HereticImpLeader : HereticImp
{
Default
{
Species "HereticImpLeader";
Health 80;
-MISSILEMORE
AttackSound "himp/leaderattack";
}
States
{
Melee:
Stop;
Missile:
IMPX DE 6 A_FaceTarget;
IMPX F 6 A_CustomComboAttack("HereticImpBall", 32, random[ImpMsAttack2](5,12), "himp/leaderattack");
Goto See;
}
}
// Heretic imp chunk 1 ------------------------------------------------------
class HereticImpChunk1 : Actor
{
Default
{
Mass 5;
Radius 4;
+NOBLOCKMAP
+MOVEWITHSECTOR
}
States
{
Spawn:
IMPX M 5;
IMPX NO 700;
Stop;
}
}
// Heretic imp chunk 2 ------------------------------------------------------
class HereticImpChunk2 : Actor
{
Default
{
Mass 5;
Radius 4;
+NOBLOCKMAP
+MOVEWITHSECTOR
}
States
{
Spawn:
IMPX P 5;
IMPX QR 700;
Stop;
}
}
// Heretic imp ball ---------------------------------------------------------
class HereticImpBall : Actor
{
Default
{
Radius 8;
Height 8;
Speed 10;
FastSpeed 20;
Damage 1;
Projectile;
SeeSound "himp/leaderattack";
+SPAWNSOUNDSOURCE
-ACTIVATEPCROSS
-ACTIVATEIMPACT
RenderStyle "Add";
}
States
{
Spawn:
FX10 ABC 6 Bright;
Loop;
Death:
FX10 DEFG 5 Bright;
Stop;
}
}