qzdoom-gpl/wadsrc/static/zscript/hexen/iceguy.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

185 lines
2.6 KiB
Text

// Ice Guy ------------------------------------------------------------------
class IceGuy : Actor
{
Default
{
Health 120;
PainChance 144;
Speed 14;
Radius 22;
Height 75;
Mass 150;
DamageType "Ice";
Monster;
+NOBLOOD
+TELESTOMP
+NOICEDEATH
SeeSound "IceGuySight";
AttackSound "IceGuyAttack";
ActiveSound "IceGuyActive";
Obituary "$OB_ICEGUY";
}
native void A_IceGuyLook();
native void A_IceGuyChase();
native void A_IceGuyAttack();
States
{
Spawn:
ICEY A 10 A_IceGuyLook;
Loop;
See:
ICEY A 4 A_Chase;
ICEY B 4 A_IceGuyChase;
ICEY CD 4 A_Chase;
Loop;
Pain:
ICEY A 1 A_Pain;
Goto See;
Missile:
ICEY EF 3 A_FaceTarget;
ICEY G 8 Bright A_IceGuyAttack;
ICEY F 4 A_FaceTarget;
Goto See;
Death:
ICEY A 1 A_IceGuyDie;
Stop;
Inactive:
ICEY A -1;
Goto See;
}
}
// Ice Guy Projectile -------------------------------------------------------
class IceGuyFX : Actor
{
Default
{
Speed 14;
Radius 8;
Height 10;
Damage 1;
DamageType "Ice";
Projectile;
-ACTIVATEIMPACT -ACTIVATEPCROSS
DeathSound "IceGuyMissileExplode";
}
native void A_IceGuyMissileExplode();
States
{
Spawn:
ICPR ABC 3 Bright A_SpawnItemEx("IceFXPuff", 0,0,2);
Loop;
Death:
ICPR D 4 Bright;
ICPR E 4 Bright A_IceGuyMissileExplode;
ICPR FG 4 Bright;
ICPR H 3 Bright;
Stop;
}
}
// Ice Guy Projectile's Puff ------------------------------------------------
class IceFXPuff : Actor
{
Default
{
Radius 1;
Height 1;
+NOBLOCKMAP +NOGRAVITY +DROPOFF +SHADOW
+NOTELEPORT
RenderStyle "Translucent";
Alpha 0.4;
}
States
{
Spawn:
ICPR IJK 3;
ICPR LM 2;
Stop;
}
}
// Secondary Ice Guy Projectile (ejected by the primary projectile) ---------
class IceGuyFX2 : Actor
{
Default
{
Speed 10;
Radius 4;
Height 4;
Damage 1;
DamageType "Ice";
Gravity 0.125;
+NOBLOCKMAP +DROPOFF +MISSILE
+NOTELEPORT
+STRIFEDAMAGE
}
States
{
Spawn:
ICPR NOP 3 Bright;
Loop;
}
}
// Ice Guy Bit --------------------------------------------------------------
class IceGuyBit : Actor
{
Default
{
Radius 1;
Height 1;
Gravity 0.125;
+NOBLOCKMAP +DROPOFF
+NOTELEPORT
}
States
{
Spawn:
ICPR Q 50 Bright;
Stop;
ICPR R 50 Bright;
Stop;
}
}
// Ice Guy Wisp 1 -----------------------------------------------------------
class IceGuyWisp1 : Actor
{
Default
{
+NOBLOCKMAP +NOGRAVITY +DROPOFF +MISSILE
+NOTELEPORT
RenderStyle "Translucent";
Alpha 0.4;
}
States
{
Spawn:
ICWS ABCDEFGHI 2;
Stop;
}
}
// Ice Guy Wisp 2 -----------------------------------------------------------
class IceGuyWisp2 : IceGuyWisp1
{
States
{
Spawn:
ICWS JKLMNOPQR 2;
Stop;
}
}