Classes:Fist
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:
|
Fist | |||
---|---|---|---|
Actor type | Weapon | Game | ![]() |
DoomEd Number | None | Class Name | Fist |
Classes: Inventory→Weapon→Fist
Your (hairy), brass-knuckled fist. Used as a melee weapon. Automatically selected as a last resort if you run out of ammo and do not have the chainsaw. Picking up the berserk pack also switches to this weapon.
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 Fist : Weapon
{
Default
{
Weapon.SelectionOrder 3700;
Weapon.Kickback 100;
Obituary "$OB_MPFIST";
Tag "$TAG_FIST";
+WEAPON.WIMPY_WEAPON
+WEAPON.MELEEWEAPON
+WEAPON.NOAUTOSWITCHTO
}
States
{
Ready:
PUNG A 1 A_WeaponReady;
Loop;
Deselect:
PUNG A 1 A_Lower;
Loop;
Select:
PUNG A 1 A_Raise;
Loop;
Fire:
PUNG B 4;
PUNG C 4 A_Punch;
PUNG D 5;
PUNG C 4;
PUNG B 5 A_ReFire;
Goto Ready;
}
}
//===========================================================================
//
// Code (must be attached to Actor)
//
//===========================================================================
extend class Actor
{
action void A_Punch()
{
FTranslatedLineTarget t;
if (player != null)
{
Weapon weap = player.ReadyWeapon;
if (weap != null && !weap.bDehAmmo && invoker == weap && stateinfo != null && stateinfo.mStateType == STATE_Psprite)
{
if (!weap.DepleteAmmo (weap.bAltFire))
return;
}
}
int damage = random[Punch](1, 10) << 1;
if (FindInventory("PowerStrength"))
damage *= 10;
double ang = angle + Random2[Punch]() * (5.625 / 256);
double range = MeleeRange + MELEEDELTA;
double pitch = AimLineAttack (ang, range, null, 0., ALF_CHECK3D);
LineAttack (ang, range, pitch, damage, 'Melee', "BulletPuff", LAF_ISMELEEATTACK, t);
// turn to face target
if (t.linetarget)
{
A_StartSound ("*fist", CHAN_WEAPON);
angle = t.angleFromSource;
}
}
}
DECORATE definition
Note: This is legacy code, kept for archival purposes only. DECORATE is deprecated in GZDoom and is completely superseded by ZScript. GZDoom internally uses the ZScript definition above. |
ACTOR Fist : Weapon { Weapon.SelectionOrder 3700 Weapon.Kickback 100 Obituary "$OB_MPFIST" Tag "$TAG_FIST" +WEAPON.WIMPY_WEAPON +WEAPON.MELEEWEAPON States { Ready: PUNG A 1 A_WeaponReady Loop Deselect: PUNG A 1 A_Lower Loop Select: PUNG A 1 A_Raise Loop Fire: PUNG B 4 PUNG C 4 A_Punch PUNG D 5 PUNG C 4 PUNG B 5 A_ReFire Goto Ready } }