Classes:Chaingun
Classes: Inventory→Weapon→DoomWeapon→Chaingun
Note: Wait! Stop! Before you copy this actor's definition into your mod, remember the following things:
|
Chaingun | |||
---|---|---|---|
Actor type | Weapon | Game | ![]() |
DoomEd Number | 2002 | Class Name | Chaingun |
Spawn ID | 28 | Identifier | T_CHAINGUN |
The chaingun is a rapid fire bullet weapon. It is dropped by chaingunners and uses clips for ammo.
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 Chaingun : DoomWeapon
{
Default
{
Weapon.SelectionOrder 700;
Weapon.AmmoUse 1;
Weapon.AmmoGive 20;
Weapon.AmmoType "Clip";
Inventory.PickupMessage "$GOTCHAINGUN";
Obituary "$OB_MPCHAINGUN";
Tag "$TAG_CHAINGUN";
}
States
{
Ready:
CHGG A 1 A_WeaponReady;
Loop;
Deselect:
CHGG A 1 A_Lower;
Loop;
Select:
CHGG A 1 A_Raise;
Loop;
Fire:
CHGG AB 4 A_FireCGun;
CHGG B 0 A_ReFire;
Goto Ready;
Flash:
CHGF A 5 Bright A_Light1;
Goto LightDone;
CHGF B 5 Bright A_Light2;
Goto LightDone;
Spawn:
MGUN A -1;
Stop;
}
}
extend class StateProvider
{
action void A_FireCGun()
{
if (player == null)
{
return;
}
Weapon weap = player.ReadyWeapon;
if (weap != null && invoker == weap && stateinfo != null && stateinfo.mStateType == STATE_Psprite)
{
if (!weap.DepleteAmmo (weap.bAltFire, true, 1))
return;
A_StartSound ("weapons/chngun", CHAN_WEAPON);
State flash = weap.FindState('Flash');
if (flash != null)
{
// Removed most of the mess that was here in the C++ code because SetSafeFlash already does some thorough validation.
State atk = weap.FindState('Fire');
let psp = player.GetPSprite(PSP_WEAPON);
if (psp)
{
State cur = psp.CurState;
int theflash = atk == cur? 0:1;
player.SetSafeFlash(weap, flash, theflash);
}
}
}
player.mo.PlayAttacking2 ();
GunShot (!player.refire, "BulletPuff", BulletSlope ());
}
}
DECORATE definition
Note: This is legacy code, kept here for reference only. DECORATE is still supported but no longer used by GZDoom. GZDoom internally uses the ZScript definition above. |
ACTOR Chaingun : DoomWeapon { Weapon.SelectionOrder 700 Weapon.AmmoUse 1 Weapon.AmmoGive 20 Weapon.AmmoType "Clip" Inventory.PickupMessage "$GOTCHAINGUN" // "You got the chaingun" Obituary "$OB_MPCHAINGUN" // "%o was mowed down by %k's chaingun." Tag "$TAG_CHAINGUN" States { Ready: CHGG A 1 A_WeaponReady Loop Deselect: CHGG A 1 A_Lower Loop Select: CHGG A 1 A_Raise Loop Fire: CHGG AB 4 A_FireCGun CHGG B 0 A_ReFire Goto Ready Flash: CHGF A 5 Bright A_Light1 Goto LightDone CHGF B 5 Bright A_Light1 Goto LightDone Spawn: MGUN A -1 Stop } }
This article is issued from Zdoom. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.