// ============================================================
// Sprites/sounds from mop_ixtra_v1.2.4 (see CREDITS.txt).
// ============================================================

// ------------------------------------------------------------
// SawThrower
// ------------------------------------------------------------

ACTOR SawBlade : Ammo
{
  Inventory.MaxAmount 60
  Ammo.BackpackAmount 30
  Ammo.BackpackMaxAmount 120
  Inventory.PickupMessage "Picked up some saw blades."
  Inventory.Icon "SWTSA0"
  States
  {
  Spawn:
    SWTS A -1
    Stop
  }
}

ACTOR FLSawPuff : BulletPuff
{
  +EXTREMEDEATH
  DamageType "Cut"
}

ACTOR SawShot
{
  Radius 4
  Height 2
  Speed 50
  Scale 0.3
  Damage (random(30,40))
  DeathSound "weapons/throwsawhit"
  BounceSound "weapons/throwsawhit"
  WallBounceSound "weapons/throwsawhit"
  DamageType "Cut"
  BounceFactor 0.8
  BounceCount 2
  +NOGRAVITY
  +DROPOFF
  +MISSILE
  +RIPPER
  +EXTREMEDEATH
  +BLOODSPLATTER
  +BOUNCEONFLOORS
  +CANBOUNCEWATER
  +BOUNCEONWALLS
  +BOUNCEONCEILINGS
  Obituary "%o was gutted by %k's saw."
  States
  {
  Spawn:
    SWTS AABBCCDDEEFFGGHH 2
    SWTS A 0 A_Gravity
    SWTS AABBCCDDEEFFGGHH 2
    Loop
  Crash:
    SWTE A 1 A_ChangeFlag("RIPPER", 0)
    Goto Death
  Death:
    SWTE A 1 A_Gravity
    SWTE A 32 A_CustomMissile("SawSmoke", 0, 0, 180, 2)
    SWTE B 24
    SWTE C 16
    SWTE DEF 12
    SWTE F 8
    SWTE G 4
    Stop
  }
}

ACTOR SawSmoke
{
  Height 1
  Radius 1
  Speed 1
  +NOBLOCKMAP
  +NOGRAVITY
  +DROPOFF
  +MISSILE
  +NOTELEPORT
  +THRUGHOST
  +CLIENTSIDEONLY
  RenderStyle Translucent
  Alpha 0.15
  Scale 0.1
  States
  {
  Spawn:
    CSM2 D 2 Bright
  Death:
    CSM2 EEFFGGHHIIJJKK 1 Bright A_FadeOut(0.01)
    Stop
  }
}

ACTOR SawThrower : Weapon
{
  Weapon.AmmoType "SawBlade"
  Weapon.AmmoUse 1
  Weapon.AmmoGive 30
  Weapon.SlotNumber 1
  Weapon.SelectionOrder 2600
  Weapon.Kickback 100
  Inventory.PickupSound "misc/w_pkup"
  Inventory.PickupMessage "You got the Saw Thrower!"
  Tag "Saw Thrower"
  +WEAPON.NOAUTOAIM
  +WEAPON.NOAUTOFIRE
  States
  {
  Ready:
    TSWG A 1 A_WeaponReady
    Loop
  Select:
    TSWG A 1 A_Raise
    Loop
  Deselect:
    TSWG A 1 A_Lower
    Loop
  Fire:
    TSWG D 0 A_PlayWeaponSound("weapons/throwsawlaunch")
    TSWG D 0 A_Recoil(1.5)
    TSWG D 4 A_FireCustomMissile("SawShot", 0, 1, 0, 3)
    TSWG E 4
    TSWG F 3
    TSWG A 3
    TSWG A 0 A_ReFire
    Goto Ready
  AltFire:
    TSWG A 0 A_JumpIfNoAmmo("NoSawAmmo")
    TSWG A 0 A_PlayWeaponSound("weapons/throwsawready")
    TSWG B 4
    TSWG C 3
    TSWG C 0 A_CustomPunch(20, 0, 0, "FLSawPuff", 60)
    TSWG C 2
    TSWG C 0 A_ReFire
    Goto Ready
  NoSawAmmo:
    TSWG A 1 A_WeaponReady
    Goto Ready
  Spawn:
    THRS A 1
    THRS A 0 A_SpawnItemEx("SawThrowerPickup", 56, 0, 28, 6, 0, 6, 0, 1)
    Stop
  }
}

ACTOR SawThrowerPickup : CustomInventory
{
  Inventory.PickupSound "misc/w_pkup"
  Inventory.PickupMessage "You got the Saw Thrower!"
  +INVENTORY.AUTOACTIVATE
  +INVENTORY.ALWAYSPICKUP
  +FLOAT
  +FLOATBOB
  States
  {
  Spawn:
    THRS A 5040
    THRS AAAAAAAAAAAAAAAAAA 70 A_FadeOut(0.05)
    Stop
  Pickup:
    THRS A 0 A_GiveInventory("SawThrower", 1)
    THRS A 0 A_GiveInventory("SawBlade", 30)
    Stop
  }
}

// ------------------------------------------------------------
// Quad Shotgun
// ------------------------------------------------------------

ACTOR QuadAmmo : Ammo
{
  Inventory.Amount 0
  Inventory.MaxAmount 4
  Ammo.BackpackAmount 0
  Ammo.BackpackMaxAmount 4
}

ACTOR MQuadShotgun : Weapon
{
  Weapon.AmmoType "Shell"
  Weapon.AmmoType2 "QuadAmmo"
  Weapon.AmmoUse 0
  Weapon.AmmoUse2 0
  Weapon.AmmoGive 40
  Weapon.AmmoGive2 4
  Weapon.SlotNumber 3
  Weapon.SelectionOrder 1300
  Weapon.Kickback 900
  Inventory.PickupSound "misc/w_pkup"
  Inventory.PickupMessage "You've got the Quad Shotgun!"
  Obituary "%o was blown away by %k's Quad Shotgun."
  Tag "Quad Shotgun"
  Decal "BulletChip"
  +WEAPON.NOAUTOAIM
  +WEAPON.NOAUTOFIRE
  States
  {
  Ready:
    TNT1 A 0 A_JumpIfInventory("QuadAmmo", 1, "ReadyLoop")
    TNT1 A 0 A_JumpIfInventory("Shell", 1, "QuadReload")
    Goto ReadyLoop
  ReadyLoop:
    SSHG A 1 A_WeaponReady
    Loop
  Select:
    SSHG A 1 A_Raise
    Loop
  Deselect:
    SSHG A 1 A_Lower
    Loop
  Fire:
    TNT1 A 0 A_JumpIfInventory("QuadAmmo", 4, "FireFull")
    TNT1 A 0 A_JumpIfInventory("Shell", 1, "QuadReload")
    Goto QuadNoAmmo
  FireFull:
    SSHG A 0 A_AlertMonsters
    SSHG A 0 A_PlaySound("Quadshot/Fire", 1, 0.6)
    SSHF A 1 Bright A_GunFlash
    SSHG A 0 A_FireBullets(8, 8, random(52,60), 30, "Shotgunpuff", FBF_NORANDOM)
    TNT1 AAAAAAAAAAAAAAAAAAAA 0 BRIGHT A_FireCustomMissile("ShotgunParticles", random(-19,19), 0, -1, 0, 0, random(-9,9))
    TNT1 AAAAAAAAAAAAA 0 BRIGHT A_FireCustomMissile("ShotgunParticles2", random(-19,19), 0, -1, 0, 0, random(-9,9))
    TNT1 AAAAAAAAAAA 0 A_FireCustomMissile("DecorativeTracer", random(-10,10), 0, 0, -12, 0, random(-5,5))
    SSHG A 0 A_TakeInventory("QuadAmmo", 4)
    SSHF BCDCB 1 Bright
    SSHG A 0 A_Recoil(5)
    SSHG A 0 A_Quake(6, 12, 0, 32, none)
    Goto QuadReload
  AltFire:
    TNT1 A 0 A_JumpIfInventory("QuadAmmo", 1, "AltFireShot")
    TNT1 A 0 A_JumpIfInventory("Shell", 1, "QuadReload")
    Goto QuadNoAmmo
  AltFireShot:
    SSHG A 0 A_AlertMonsters
    SSHG A 0 A_PlaySound("Quadshot/Fire", 1, 0.6)
    SSHF A 1 Bright A_GunFlash
    SSHG A 0 A_FireBullets(3, 3, random(20,25), 26, "Shotgunpuff", FBF_NORANDOM)
    TNT1 AAAAA 0 BRIGHT A_FireCustomMissile("ShotgunParticles", random(-12,12), 0, -1, 0, 0, random(-9,9))
    TNT1 AAAAA 0 A_FireCustomMissile("DecorativeTracer", random(-8,8), 0, 0, -12, 0, random(-5,5))
    SSHG A 0 A_TakeInventory("QuadAmmo", 1)
    SSHF BCB 1 Bright
    SSHG A 0 A_Recoil(2)
    SSHG A 4
    SSHG A 0 A_ReFire
    Goto Ready
  QuadReload:
    TNT1 A 0 A_JumpIfInventory("Shell", 1, "QuadReloadOpen")
    Goto Ready
  QuadReloadOpen:
    SSHO ABCDEFGHIJK 1
    SSHO K 0 A_PlaySound("Quadshot/Open", 5, 0.7)
    SSHO LMNOQRT 1
    SSHO UWX 1
  QuadReloadLoad:
    SSHL ABCDEF 1
    SSHL F 0 A_PlaySound("Quadshot/Load", 6, 0.6)
    SSHL GHIJV 1
    SSHL J 0 A_TakeInventory("Shell", 1)
    SSHL J 0 A_GiveInventory("QuadAmmo", 1)
  QuadReloadTopUp:
    TNT1 A 0 A_JumpIfInventory("QuadAmmo", 4, "QuadReloadClose")
    TNT1 A 0 A_JumpIfInventory("Shell", 1, "QuadReloadTopUpShot")
    Goto QuadReloadClose
  QuadReloadTopUpShot:
    TNT1 A 0 A_TakeInventory("Shell", 1)
    TNT1 A 0 A_GiveInventory("QuadAmmo", 1)
    Goto QuadReloadTopUp
  QuadReloadClose:
    SSHC ABCDEF 1
    SSHO A 0 A_PlaySound("Quadshot/Close", 6, 0.7)
    SSHO ABCDEFGH 1
    SSHN GFDCB 1
    SSHG A 12
    Goto Ready
  QuadNoAmmo:
    SSHG A 1 A_WeaponReady
    Goto Ready
  Flash:
    GFSE A 1 Bright A_Light2
    GFSE B 1 Bright A_Light1
    Goto LightDone
  AltFlash:
    GFSF AB 1 Bright A_Light2
    Goto LightDone
  Spawn:
    SSHG X 1
    SSHG X 0 A_SpawnItemEx("MQuadShotgunPickup", 56, 0, 28, 6, 0, 6, 0, 1)
    Stop
  }
}

ACTOR MQuadShotgunPickup : CustomInventory
{
  Inventory.PickupSound "misc/w_pkup"
  Inventory.PickupMessage "You've got the Quad Shotgun!"
  +INVENTORY.AUTOACTIVATE
  +INVENTORY.ALWAYSPICKUP
  +FLOAT
  +FLOATBOB
  States
  {
  Spawn:
    SSHG X 5040
    SSHG XXXXXXXXXXXXXXXXXX 70 A_FadeOut(0.05)
    Stop
  Pickup:
    SSHG X 0 A_GiveInventory("MQuadShotgun", 1)
    SSHG X 0 A_GiveInventory("QuadAmmo", 4)
    SSHG X 0 A_GiveInventory("Shell", 40)
    Stop
  }
}

// ------------------------------------------------------------
// UberMinigun
// ------------------------------------------------------------

ACTOR UberMinigun : Weapon
{
  Weapon.AmmoType "Clip2"
  Weapon.AmmoUse 1
  Weapon.AmmoGive 200
  Weapon.SlotNumber 4
  Weapon.SelectionOrder 1400
  Weapon.Kickback 100
  Inventory.PickupSound "misc/w_pkup"
  Inventory.PickupMessage "You got the UberMinigun!"
  Obituary "%k turned %o into swiss cheese with the UberMinigun."
  Tag "UberMinigun"
  Decal "BulletChip"
  +WEAPON.NOAUTOAIM
  States
  {
  Ready:
    MING A 0 A_JumpIfNoAmmo("MiniNoAmmo")
    MING A 1 A_WeaponReady
    Loop
  Select:
    MING A 1 A_Raise
    Loop
  Deselect:
    MING A 1 A_Lower
    Loop
  Fire:
    MING A 0 A_JumpIfNoAmmo("MiniNoAmmo")
    MING A 0 A_PlaySound("weapons/minigunup")
    MING BCDEFGH 2
  Hold:
    MING A 0 A_JumpIfNoAmmo("MiniSpindown")
    MING A 0 A_GunFlash
    MING A 0 A_PlaySound("weapons/minigun", CHAN_5)
    MINF A 0 BRIGHT A_FireBullets(5.6, 2.5, 1, 8, "MachineGunBulletPuff", FBF_NORANDOM | FBF_USEAMMO)
    MINF A 0 BRIGHT A_FireBullets(5.6, 2.5, 1, 8, "MachineGunBulletPuff", FBF_NORANDOM | FBF_USEAMMO)
    MINF A 0 BRIGHT A_FireBullets(5.6, 2.5, 1, 8, "MachineGunBulletPuff", FBF_NORANDOM | FBF_USEAMMO)
    MINF A 1 BRIGHT A_FireBullets(5.6, 2.5, 1, 8, "MachineGunBulletPuff", FBF_NORANDOM | FBF_USEAMMO)
    MING A 0 A_PlaySound("weapons/minigun", CHAN_6)
    MINF C 0 BRIGHT A_FireBullets(5.6, 2.5, 1, 8, "MachineGunBulletPuff", FBF_NORANDOM | FBF_USEAMMO)
    MINF C 0 BRIGHT A_FireBullets(5.6, 2.5, 1, 8, "MachineGunBulletPuff", FBF_NORANDOM | FBF_USEAMMO)
    MINF C 0 BRIGHT A_FireBullets(5.6, 2.5, 1, 8, "MachineGunBulletPuff", FBF_NORANDOM | FBF_USEAMMO)
    MINF C 1 BRIGHT A_FireBullets(5.6, 2.5, 1, 8, "MachineGunBulletPuff", FBF_NORANDOM | FBF_USEAMMO)
    MING A 0 A_PlaySound("weapons/minigun", CHAN_7)
    MINF B 0 BRIGHT A_FireBullets(5.6, 2.5, 1, 8, "MachineGunBulletPuff", FBF_NORANDOM | FBF_USEAMMO)
    MINF B 0 BRIGHT A_FireBullets(5.6, 2.5, 1, 8, "MachineGunBulletPuff", FBF_NORANDOM | FBF_USEAMMO)
    MINF B 0 BRIGHT A_FireBullets(5.6, 2.5, 1, 8, "MachineGunBulletPuff", FBF_NORANDOM | FBF_USEAMMO)
    MINF B 1 BRIGHT A_FireBullets(5.6, 2.5, 1, 8, "MachineGunBulletPuff", FBF_NORANDOM | FBF_USEAMMO)
    MING C 0 A_ReFire("Hold")
  MiniSpindown:
    MING A 0 A_PlaySound("weapons/minigundown")
    MING ACEGABCDEFGH 1
    MING ABCDEFGH 1
    Goto Ready
  AltFire:
    TNT1 A 0 A_JumpIfInventory("Clip2", 6, "AltFireSpin")
    Goto MiniNoAmmo
  AltFireSpin:
    MING A 0 A_PlaySound("weapons/minigunup")
    MING BCDEFGH 2
  Hold2:
    TNT1 A 0 A_JumpIfInventory("Clip2", 6, "Hold2Fire")
    Goto MiniSpindown
  Hold2Fire:
    MING A 0 A_GunFlash
    MING A 0 A_PlaySound("weapons/minigun", CHAN_5)
    MING A 0 A_TakeInventory("Clip2", 6)
    MINF A 3 BRIGHT A_FireBullets(5.6, 2.5, 1, 6, "MachineGunBulletPuff", FBF_NORANDOM)
    MINF A 0 BRIGHT A_FireBullets(5.6, 2.5, 1, 6, "MachineGunBulletPuff", FBF_NORANDOM)
    MINF C 3 BRIGHT A_FireBullets(5.6, 2.5, 1, 6, "MachineGunBulletPuff", FBF_NORANDOM)
    MINF C 0 BRIGHT A_FireBullets(5.6, 2.5, 1, 6, "MachineGunBulletPuff", FBF_NORANDOM)
    MINF B 3 BRIGHT A_FireBullets(5.6, 2.5, 1, 6, "MachineGunBulletPuff", FBF_NORANDOM)
    MINF B 0 BRIGHT A_FireBullets(5.6, 2.5, 1, 6, "MachineGunBulletPuff", FBF_NORANDOM)
    MING C 0 A_ReFire("Hold2")
    Goto MiniSpindown
  MiniNoAmmo:
    MING A 1 A_WeaponReady
    Goto Ready
  Flash:
    TNT1 A 1 Bright A_Light2
    TNT1 C 1 Bright A_Light1
    TNT1 B 1 Bright A_Light0
    Goto LightDone
  AltFlash:
    TNT1 A 3 Bright A_Light2
    TNT1 C 3 Bright A_Light1
    TNT1 B 3 Bright A_Light0
    Goto LightDone
  Spawn:
    MINI A 1
    MINI A 0 A_SpawnItemEx("MUberMinigunPickup", 56, 0, 28, 6, 0, 6, 0, 1)
    Stop
  }
}

ACTOR MUberMinigunPickup : CustomInventory
{
  Inventory.PickupSound "misc/w_pkup"
  Inventory.PickupMessage "You got the UberMinigun!"
  +INVENTORY.AUTOACTIVATE
  +INVENTORY.ALWAYSPICKUP
  +FLOAT
  +FLOATBOB
  States
  {
  Spawn:
    MINI A 5040
    MINI AAAAAAAAAAAAAAAAAA 70 A_FadeOut(0.05)
    Stop
  Pickup:
    MINI A 0 A_GiveInventory("UberMinigun", 1)
    MINI A 0 A_GiveInventory("Clip2", 200)
    Stop
   }
}

