Classes:ID24CalamityBlade

From ZDoom Wiki
Jump to navigation Jump to search
Note: Wait! Stop! You do not need to copy this actor's code into your project! Here's why:
  1. This actor is already defined in GZDoom, there's no reason to define it again.
  2. In fact, trying to define an actor with the same name will cause an error (because it already exists).
  3. If you want to make your own version of this actor, use inheritance.
  4. Definitions for existing actors are put on the wiki for reference purpose only.
Incinerator
Actor type Weapon Game MiniDoomLogoIcon.png (Doom)
DoomEd Number None Class Name ID24Incinerator


Classes: InventoryWeaponDoomWeaponID24CalamityBlade

The Calamity Blade eats up a lot of fuel to spew out a giant blade of fire, scorching anyone foolish enough to get in the way, killing most weak enemies. Can be used up close, unlike the Incinerator.

ZScript definition

Note: The ZScript definition below is for reference and may be different in the current version of GZDoom.The most up-to-date version of this code can be found on GZDoom GitHub.
class ID24CalamityBlade : DoomWeapon // Heatwave Generator
{
	Default
	{
		Weapon.SelectionOrder 1000;
		Weapon.AmmoUse 10;
		Weapon.AmmoGive 20;
		Weapon.AmmoType "ID24Fuel";
		+Weapon.NoAutoAim;
		Inventory.PickupMessage "$ID24_GOTCALAMITYBLADE";
		Tag "$TAG_ID24CALAMITYBLADE";
	}
	
	action void A_CheckAmmo(StateLabel st, int amount)
	{
		MBF21_CheckAmmo(ResolveState(st), amount);
	}
	
	action void A_GunFlashTo(StateLabel st, int dontchangeplayer)
	{
		MBF21_GunFlashTo(ResolveState(st), dontchangeplayer);
	}
	
	action void A_RefireTo(StateLabel st, int skipcheck)
	{
		MBF21_RefireTo(ResolveState(st), skipcheck);
	}
	
	States
	{
	Spawn:
		CBLD A -1;
		Stop;
	Ready:
		HETG A 1 A_WeaponReady;
		Loop;
	Deselect:
		HETG A 1 A_Lower;
		Loop;
	Select:
		HETG A 1 A_Raise;
		Loop;
	Fire:
	Hold0:
		HETG A 0 MBF21_ConsumeAmmo(0);
		HETG A 0 A_GunFlashTo("Hold0Flash", 1);
		HETG A 20 A_StartSound("weapons/calamityblade/charge", CHAN_WEAPON);
		HETG A 0 A_CheckAmmo("Hold0FireProjectiles", 0);
		HETG A 0 A_RefireTo("Hold1", 0);
		Goto Hold0FireProjectiles;
	Hold1:
		HETG A 0 MBF21_ConsumeAmmo(0);
		HETG A 0 A_GunFlashTo("Hold1Flash", 1);
		HETG A 20 A_StartSound("weapons/calamityblade/charge", CHAN_WEAPON);
		HETG A 0 A_CheckAmmo("Hold1FireProjectiles", 0);
		HETG A 0 A_RefireTo("Hold2", 0);
		Goto Hold1FireProjectiles;
	Hold2:
		HETG A 0 MBF21_ConsumeAmmo(0);
		HETG A 0 A_GunFlashTo("Hold2Flash", 1);
		HETG A 20 A_StartSound("weapons/calamityblade/charge", CHAN_WEAPON);
		HETG A 0 A_CheckAmmo("Hold2FireProjectiles", 0);
		HETG A 0 A_RefireTo("Hold3", 0);
		Goto Hold2FireProjectiles;
	Hold3:
		HETG A 0 MBF21_ConsumeAmmo(0);
		HETG A 0 A_GunFlashTo("Hold3Flash", 1);
		HETG A 20 A_StartSound("weapons/calamityblade/charge", CHAN_WEAPON);
		HETG A 0 A_CheckAmmo("Hold3FireProjectiles", 0);
		HETG A 0 A_RefireTo("Hold4", 0);
		Goto Hold3FireProjectiles;
	Hold4:
		HETG A 0 MBF21_ConsumeAmmo(0);
		HETG A 0 A_GunFlashTo("Hold4Flash", 1);
		HETG A 20 A_StartSound("weapons/calamityblade/charge", CHAN_WEAPON);
		Goto Hold4FireProjectiles;
	Hold4FireProjectiles:
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", -35, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", -30, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", -25, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", -20, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", -15, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", -10, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", -5, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", 0, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", 5, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", 10, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", 15, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", 20, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", 25, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", 30, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", 35, 0, 0, 0);
		Goto FireAnim;
	Hold3FireProjectiles:
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", -27.5, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", -22.5, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", -17.5, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", -12.5, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", -7.5, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", -2.5, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", 2.5, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", 7.5, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", 12.5, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", 17.5, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", 22.5, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", 27.5, 0, 0, 0);
		Goto FireAnim;
	Hold2FireProjectiles:
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", -20, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", -15, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", -10, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", -5, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", 0, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", 5, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", 10, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", 15, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", 20, 0, 0, 0);
		Goto FireAnim;
	Hold1FireProjectiles:
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", -12.5, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", -7.5, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", -2.5, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", 2.5, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", 7.5, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", 12.5, 0, 0, 0);
		Goto FireAnim;
	Hold0FireProjectiles:
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", -5, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", 0, 0, 0, 0);
		HETF A 0 BRIGHT MBF21_WeaponProjectile("ID24IncineratorProjectile", 5, 0, 0, 0);
		Goto FireAnim;
	FireAnim:
		HETF A 0 BRIGHT A_StartSound("weapons/calamityblade/shoot", CHAN_WEAPON);
		HETF A 3 BRIGHT A_GunFlash;
		HETF B 5 BRIGHT;
		HETG D 4;
		HETG C 4;
		HETG B 4;
		HETG A 0 A_ReFire;
		Goto Ready;
	Hold0Flash:
		HETC A 6 BRIGHT;
		HETC BCD 5 BRIGHT;
		Goto LightDone;
	Hold1Flash:
		HETC E 6 BRIGHT;
		HETC FGH 5 BRIGHT;
		Goto LightDone;
	Hold2Flash:
		HETC I 6 BRIGHT;
		HETC JKL 5 BRIGHT;
		Goto LightDone;
	Hold3Flash:
		HETC M 6 BRIGHT;
		HETC NOP 5 BRIGHT;
		Goto LightDone;
	Hold4Flash:
		HETC Q 6 BRIGHT;
		HETC RST 5 BRIGHT;
		Goto LightDone;
	Flash:
		TNT1 A 3 A_Light1;
		TNT1 A 5 A_Light2;
		Goto LightDone;
	}
}

class ID24IncineratorProjectile : Actor // Heatwave Ripper 
{
	Default
	{
		Damage 10;
		Speed 20;
		Radius 16;
		Height 8;

		Projectile;
		+ZDOOMTRANS;
		+RIPPER;
		RenderStyle "Add";
		Decal "BladeScorch";

		DeathSound "weapons/calamityblade/explode";
	}

	States
	{
		Spawn:
			HETB ABC 3 Bright;
			Loop;
		Death:
			HETB DEFGHI 3 Bright;
			Stop;
	}
}