Here is the weapon code:
Code: Select all
ACTOR Spas12 : Weapon replaces Shotgun 5533
{
//$Category Weapons
Tag "SPAS-12"
Weapon.Slotnumber 3
Weapon.Selectionorder 1
Weapon.Ammotype1 "SpasLoaded"
Weapon.Ammotype2 "308Magazine"
Weapon.Ammouse 1
Weapon.Ammouse2 0
Weapon.Ammogive1 0
Weapon.Ammogive2 8
Weapon.BobStyle Smooth
Weapon.BobSpeed 2
Weapon.BobRangeX 0.5
Weapon.BobRangeY 0.7
Weapon.Kickback 115
Obituary "%o was shot by %k's SPAS-12."
Scale 0.4
Decal "BulletChip"
AttackSound "M14FIRE"
Inventory.Pickupmessage "SPAS-12"
Inventory.PickupSound "SPASPU"
+Weapon.Ammo_Optional
+NOAUTOFIRE
+NOEXTREMEDEATH
+COUNTITEM
States
{
Ready:
SPAS B 1 A_WeaponReady(WRF_ALLOWRELOAD)
loop
Select:
SPAS B 1 Offset (-90,69)
SPAS B 1 Offset (-70,60)
SPAS B 1 Offset (-55,52)
SPAS B 1 Offset (-35,45)
SPAS B 1 Offset (-15,39)
SPAS B 1 Offset (-1,35)
SelectRaise:
SPAS B 1 A_Raise
loop
Deselect:
SPAS B 1 Offset (-1,35)
SPAS B 1 Offset (-15,39)
SPAS B 1 Offset (-35,45)
SPAS B 1 Offset (-55,52)
SPAS B 1 Offset (-70,60)
SPAS B 1 Offset (-90,69)
SPAS B 1 Offset (-105,89)
SPAS B 1 Offset (-125,102)
SPAS B 1 Offset (-155,108)
SPAS B 1 Offset (-155,150)
DeselectRaise:
SPAS B 0 Offset (-1,0)
SPAS B 1 A_Lower
loop
Fire:
SPAS B 0 A_JumpIfNoAmmo("Reload")
SPAS C 0 A_Quake(2, 2, 0, 1)
SPAS C 0 A_StartSound("SPASFIRE", CHAN_WEAPON)
SPAS C 2 Bright A_FireProjectile("PelletPracer", FRandom(-0.52, 0.52), true, 0, 0, 7, FRandom(-1, 0.55))
SPAS C 0 A_spawnitemex ("308Casing", 40, 20, 20, random(4,6), random(4,8), random(4,9), 0)
SPAS C 0 A_FireCustomMissile("GunSmokeSpawner",0,0,0,5)
SPAS D 2 Bright A_SetPitch(pitch-0.5)
SPAS E 2 A_SetPitch(pitch-0.25)
SPAS F 2 A_SetPitch(pitch+0.25)
SPAS F 0 A_SetPitch(pitch+0.5)
Goto Ready
Reload:
SPAS B 0 A_JumpIfInventory("SpasLoaded", 8, 2)
SPAS B 0 A_JumpIfInventory("308Magazine", 1, "ReloadWork")
SPAS B 1
Goto Ready
ReloadWork:
SPAS B 1 Offset(0,38) A_PlaySound("M1RELOAD", CHAN_5)
SPAS B 1 Offset(0,44)
SPAS B 1 Offset(0,56)
SPAS B 1 Offset(-2,60)
SPAS B 1 Offset(-4,72)
SPAS B 1 Offset(-7,80)
SPAS B 1 Offset(-10,82)
SPAS B 15 Offset(-11,84)
ReloadLoop:
TNT1 A 0 A_TakeInventory("308Magazine", 1)
TNT1 A 0 A_GiveInventory("SpasLoaded", 1)
TNT1 A 0 A_JumpIfInventory("SpasLoaded", 8, "ReloadFinish")
TNT1 A 0 A_JumpIfInventory("308Magazine", 1, "ReloadLoop")
Goto ReloadFinish
ReloadFinish:
SPAS B 1 Offset(-10,84)
SPAS B 1 Offset(-10,90)
SPAS B 1 Offset(-10,98)
SPAS B 1 Offset(-10,110)
SPAS B 1 Offset(-10,98)
SPAS B 1 Offset(-10,88)
SPAS B 1 Offset(-10,78)
SPAS B 1 Offset(-10,74)
SPAS B 1 Offset(-10,70)
SPAS B 1 Offset(-9,68)
SPAS B 1 Offset(-8,60)
SPAS B 1 Offset(-7,54)
SPAS B 1 Offset(-5,48)
SPAS B 1 Offset(-3,42)
SPAS B 1 Offset(-1,36)
SPAS B 1 Offset(0,32)
Goto Ready
Spawn:
SPAS A -1
Stop
}
}
ACTOR SpasLoaded : Ammo
{
Inventory.MaxAmount 8
+IGNORESKILL
}