gzdoom/wadsrc/static/zscript/actors/strife/weaponmissile.zs

137 lines
2.3 KiB
Text

// Mini-Missile Launcher ----------------------------------------------------
class MiniMissileLauncher : StrifeWeapon
{
Default
{
+FLOORCLIP
Weapon.SelectionOrder 1800;
Weapon.AmmoUse1 1;
Weapon.AmmoGive1 8;
Weapon.AmmoType1 "MiniMissiles";
Inventory.Icon "MMSLA0";
Tag "$TAG_MMLAUNCHER";
Inventory.PickupMessage "$TXT_MMLAUNCHER";
}
States
{
Spawn:
MMSL A -1;
Stop;
Ready:
MMIS A 1 A_WeaponReady;
Loop;
Deselect:
MMIS A 1 A_Lower;
Loop;
Select:
MMIS A 1 A_Raise;
Loop;
Fire:
MMIS A 4 A_FireMiniMissile;
MMIS B 4 A_Light1;
MMIS C 5 Bright;
MMIS D 2 Bright A_Light2;
MMIS E 2 Bright;
MMIS F 2 Bright A_Light0;
MMIS F 0 A_ReFire;
Goto Ready;
}
//============================================================================
//
// A_FireMiniMissile
//
//============================================================================
action void A_FireMiniMissile ()
{
if (player == null)
{
return;
}
Weapon weapon = player.ReadyWeapon;
if (weapon != null)
{
if (!weapon.DepleteAmmo (weapon.bAltFire))
return;
}
double savedangle = angle;
angle += Random2[MiniMissile]() * (11.25 / 256) * AccuracyFactor();
player.mo.PlayAttacking2 ();
SpawnPlayerMissile ("MiniMissile");
angle = savedangle;
}
}
// Rocket Trail -------------------------------------------------------------
class RocketTrail : Actor
{
Default
{
+NOBLOCKMAP
+NOGRAVITY
RenderStyle "Translucent";
Alpha 0.25;
SeeSound "misc/missileinflight";
}
States
{
Spawn:
PUFY BCBCD 4;
Stop;
}
}
// Rocket Puff --------------------------------------------------------------
class MiniMissilePuff : StrifePuff
{
Default
{
-ALLOWPARTICLES
}
States
{
Spawn:
Goto Crash;
}
}
// Mini Missile -------------------------------------------------------------
class MiniMissile : Actor
{
Default
{
Speed 20;
Radius 10;
Height 14;
Damage 10;
Projectile;
+STRIFEDAMAGE
MaxStepHeight 4;
SeeSound "weapons/minimissile";
DeathSound "weapons/minimissilehit";
Obituary "$OB_MPMINIMISSILELAUNCHER";
}
States
{
Spawn:
MICR A 6 Bright A_RocketInFlight;
Loop;
Death:
SMIS A 0 Bright A_SetRenderStyle(1, STYLE_Normal);
SMIS A 5 Bright A_Explode(64, 64, alert:true);
SMIS B 5 Bright;
SMIS C 4 Bright;
SMIS DEFG 2 Bright;
Stop;
}
}