// --------------------------------------------------------------------------
//
// Fist
//
// --------------------------------------------------------------------------
ACTOR BasicWeapon : Weapon
{
	Weapon.Kickback 100
	 Weapon.BobRangeX 0.2
	 Weapon.BobRangeY 0.4
	 Weapon.BobSpeed 2.9
}


ACTOR GrinderFist : BasicWeapon Replaces Fist
{
	Game Doom
	Weapon.SelectionOrder 3700
	Weapon.Kickback 100
	Obituary "$OB_MPFIST"
	Tag "$TAG_FIST"
	+WEAPON.WIMPY_WEAPON
	+WEAPON.MELEEWEAPON
	+WEAPON.ALLOW_WITH_RESPAWN_INVUL
	States
	{
	Ready:
		FSTZ A 1 A_WeaponReady
		Loop
	Deselect:
		FSTZ AAAAAA 0 A_Lower
		FSTZ AAA 1 A_Lower
		Loop
	Select:
		FSTZ AAAAAA 0 A_Raise
		FSTZ AAA 1 A_Raise
		Loop
	Fire:
		FSTZ B 1 A_Punch
		FSTZ CCDE 1
		FSTZ F 1 A_Punch
		FSTZ GGHI 1
		Goto Ready
	}
}


// --------------------------------------------------------------------------
//
// Chainsaw
//
// --------------------------------------------------------------------------

ACTOR SuperSaw : BasicWeapon Replaces Chainsaw
{
	Game Doom
	SpawnID 32
	Weapon.Kickback 0
	Weapon.SelectionOrder 2200
	Weapon.UpSound "weapons/sawup"
	Weapon.ReadySound "weapons/sawidle"
	Inventory.PickupMessage "$GOTCHAINSAW"
	Obituary "$OB_MPCHAINSAW"
	Tag "$TAG_CHAINSAW"
	+WEAPON.MELEEWEAPON	
	+EXTREMEDEATH
	+WEAPON.ALLOW_WITH_RESPAWN_INVUL
	States
	{
	Ready:
		SAWG CD 4 A_WeaponReady
		Loop
	Deselect:
		SAWG DDDDD 0 A_Lower
		SAWG CCC 1 A_Lower
		Loop
	Select:
		SAWG DDDDD 0 A_Raise
		SAWG DDD 1 A_Raise
		Loop
	Fire:
		SAWF ABCD 1 A_Saw("weapons/sawfull", "weapons/sawhit", 2, "SawPuff")
		SAWG B 0 A_ReFire
		Goto Ready
	Spawn:
		CSAW A -1
		Stop
	}
}
	

	

ACTOR Machinegun : BasicWeapon Replaces Pistol
{
	Game Doom
	Weapon.SelectionOrder 1900
	Weapon.AmmoUse 1
	Weapon.AmmoGive 30
	Weapon.AmmoType "Clip2"
	Obituary "$OB_MPPISTOL"
	+WEAPON.WIMPY_WEAPON
	+WEAPON.ALLOW_WITH_RESPAWN_INVUL
	Inventory.Pickupmessage "$PICKUP_PISTOL_DROPPED"
	Radius 20
	Height 16
	States
	{
	Ready:
		MGNG A 1 A_WeaponReady
		Loop
	Deselect:
		NULL AAAAAA 0 A_Lower
		MGNG AAA 1 A_Lower
		Loop
	Select:
		NULL AAAAAA 0 A_Raise
		MGNG AAA 1 A_Raise
		Loop
	Fire:
		TNT1 A 0 A_ZoomFactor(0.99)
		MGNF A 1 BRIGHT A_FireCustomMissile("bullet1", 0, 1, 0, 0, 0,  1)
		NULL A 0 A_FireBullets(0, 0, 1, 0, "NoPuff", FBF_NORANDOM) //Dummy tracer to activate Sigil's switches
		TNT1 A 0 A_FireCustomMissile("RifleCaseSpawn",-5,0,-8,-14)
		TNT1 A 0 A_PlaySound("MGFIRE", 1)
		TNT1 A 0 A_ZoomFactor(1.00)
		MGNG BCA 1
		TNT1 A 0 A_ZoomFactor(0.99)
		MGNF B 1 BRIGHT A_FireCustomMissile("bullet1",0, 1, 0, 0, 0,  1)
		TNT1 A 0 A_FireCustomMissile("RifleCaseSpawn",-5,0,-8,-14)
		TNT1 A 0 A_PlaySound("MGFIRE", 1)
		TNT1 A 0 A_ZoomFactor(1.00)
		//TNT1 A 0 A_PlaySound("MGFIRE", 2)
		MGNG BCA 1
		TNT1 A 0 A_ReFire
		Goto Ready
 	Spawn:
		WPPI A -1
		Stop
	}
}

Actor NOPuff //Dummy tracer to activate Sigil's switches
{
States
{
	Spawn:
	TNT1 A 0
	Stop
}}

ACTOR Bullet: FastProjectile
{
	Radius 1
	Height 1
	Speed 250
	Damage (random (10, 10))
	+MISSILE
	+BLOODSPLATTER
	+ACTIVATEIMPACT
	+ACTIVATEPCROSS
	Renderstyle Add
	Scale 0.2
	
	States
	{
	Spawn:
		TRAC A 1
		TRAC A -1
		Loop
	Death:
		TNT1 A 0
		TNT1 A 0 A_SpawnItem("BulletPuff")
		Stop

	XDeath:
		TNT1 A 0
		Stop
	}
}

ACTOR Bullet1: Bullet
{
	Species "Marines"
	+THRUSPECIES
	+MTHRUSPECIES
	Damage (random (20, 20))
}


ACTOR Bullet2: Bullet1
{
	Damage (random (20, 20))
}


ACTOR EnemyBullet: Bullet
{
	Damage (random (8, 12))
	Speed 80
}

		
// --------------------------------------------------------------------------
//
// Shotgun
//
// --------------------------------------------------------------------------

ACTOR AutoShotgun : BasicWeapon Replaces SuperShotgun
{
	Game Doom
	SpawnID 27
	Weapon.SelectionOrder 400
	Weapon.AmmoUse 1
	Weapon.AmmoGive 8
	Weapon.AmmoType "Shell"
	Inventory.PickupMessage "$GOTSHOTGUN"
	Obituary "$OB_MPSHOTGUN"
	States
	{
	Ready:
		SHTG A 1 A_WeaponReady
		Loop
	Deselect:
		NULL AAAAAA 0 A_Lower
		SHTG AAA 1 A_Lower
		Loop
	Select:
		NULL AAAAAA 0 A_Raise
		SHTG AAA 1 A_Raise
		Loop
	Fire:
		TNT1 A 0 A_ZoomFactor(0.98)
		TNT1 A 0 A_PlaySound("SGFIRE", 1)
		NULL A 0 A_FireBullets(0, 0, 1, 0, "NoPuff", FBF_NORANDOM) //Dummy tracer to activate Sigil's switches
		SSGF AAAA 0 BRIGHT A_FireCustomMissile("Bullet2", random(-4, 4), 0, 0, 0, 0,  random(-1, 1))
		SSGF A 0 BRIGHT A_FireCustomMissile("Bullet2", 0, 1, 0, 0, 0,  0)
		TNT1 A 0 A_FireCustomMissile("ShotCaseSpawn2",-5,0,2,-14)
		SHTG B 1 BRIGHT
		TNT1 A 0 A_ZoomFactor(1.00)
		SHTG CDAAAA 1
		Goto Ready
	Spawn:
		WPPI C -1
		Stop
	}
}	

// --------------------------------------------------------------------------
//
// SuperShotgun
//
// --------------------------------------------------------------------------

Actor SSGFireToken: Inventory {inventory.maxamount 1}

ACTOR SSG : BasicWeapon Replaces Shotgun
{
	Game Doom
	SpawnID 33
	Weapon.SelectionOrder 1300
	Weapon.AmmoUse1 1
	Weapon.AmmoUse2 1
	Weapon.AmmoGive 12
	Weapon.AmmoType1 "Shell"
	Weapon.AmmoType2 "Shell"
	Inventory.PickupMessage "$GOTSHOTGUN2"
	Obituary "$OB_MPSSHOTGUN"
	Tag "$TAG_SUPERSHOTGUN"
	+WEAPON.NOAUTOFIRE
	States
	{
	Ready:
		SSGG A 1 A_WeaponReady
		Loop
	Deselect:
		NULL AAAAAA 0 A_Lower
		SSGG AAA 1 A_Lower
		Loop
	Select:
		NULL AAAAAA 0 A_Raise
		SSGG AAA 1 A_Raise
		Loop
	Fire:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("SSGFireToken", 1, "Fire2")
		TNT1 A 0 A_ZoomFactor(0.98)
		TNT1 A 0 A_PlaySound("SSGFIRE", 1)
		NULL A 0 A_FireBullets(0, 0, 1, 0, "NoPuff", FBF_NORANDOM) //Dummy tracer to activate Sigil's switches
		SSGF A 0 BRIGHT A_FireCustomMissile("Bullet2", 0, 1, 0, 0, 0,  0)
		SSGF AAAA 0 BRIGHT A_FireCustomMissile("Bullet2", random(-4, 4), 0, 0, 0, 0,  random(-1, 1))
		SSGF A 0 BRIGHT A_FireCustomMissile("Bullet2", 0, 1, 0, 0, 0,  0)
		SSGF AAAA 0 BRIGHT A_FireCustomMissile("Bullet2", random(-3, 3), 0, 0, 0, 0,  random(-1, 1))
		SSGF A 1 BRIGHT
		TNT1 A 0 A_ZoomFactor(1.00)
		SSGF BCDE 1
		SSGG A 2
		TNT1 A 0 A_PlaySound("STGPUMP", 4)
		TNT1 AA 0 A_FireCustomMissile("ShotCaseSpawn",-5,0,8,-14)
		SSGG ABCDDEFGGGFDDCBA 1
		TNT1 A 0 A_Refire
		Goto Ready

	AltFire: 
		TNT1 A 0 A_ZoomFactor(0.99)
		TNT1 A 0 A_JumpIfInventory("SSGFireToken", 1, "Fire2")
		TNT1 A 0 A_GiveInventory("SSGFireToken", 1)
		TNT1 A 0 A_PlaySound("SGFIRE", 1)
		SSGF A 0 BRIGHT A_FireCustomMissile("Bullet2", 0, 1, 0, 0, 0,  0)
		SSGF AAAA 0 BRIGHT A_FireCustomMissile("Bullet2", random(-4, 4), 0, 0, 0, 0,  random(-1, 1))
		SSGA A 1 BRIGHT
		TNT1 A 0 A_ZoomFactor(1.00)
		SSGF BCDE 1
		Goto Ready

	Fire2:
		TNT1 A 0 A_PlaySound("SGFIRE", 1)
		SSGF A 0 BRIGHT A_FireCustomMissile("Bullet2", 0, 1, 0, 0, 0,  0)
		SSGF AAAA 0 BRIGHT A_FireCustomMissile("Bullet2", random(-4, 4), 0, 0, 0, 0,  random(-1, 1))
		SSGA B 1 BRIGHT
		TNT1 A 0 A_ZoomFactor(1.00)
		SSGF BCDE 1
		SSGG A 2 A_TakeInventory("SSGFireToken", 1)
		TNT1 A 0 A_PlaySound("STGPUMP", 4)
		TNT1 AA 0 A_FireCustomMissile("ShotCaseSpawn",-5,0,8,-14)
		SSGG ABCDDEFGGGFDDCBA 1
		Goto Ready

		
	Flash:
		SHT2 I 1 Bright A_Light1
		SHT2 J 1 Bright A_Light2
		Goto LightDone
	Spawn:
		WPPI B -1
		Stop
	}
}

// --------------------------------------------------------------------------
//
// Chaingun
//
// --------------------------------------------------------------------------

ACTOR ChaingunCannon : BasicWeapon Replaces Chaingun
{
	Game Doom
	SpawnID 28
	Weapon.SelectionOrder 700
	Weapon.AmmoUse 1
	Weapon.AmmoGive 200
	Weapon.AmmoType "Clip2"
	Inventory.PickupMessage "$GOTCHAINGUN"
	Obituary "$OB_MPCHAINGUN"
	Tag "$TAG_CHAINGUN"
	States
	{
	Ready:
		MGUG A 1 A_WeaponReady
		Loop
	Deselect:
		MGUG AAAAAA 0 A_Lower
		MGUG AAA 1 A_Lower
		Loop
	Select:
		MGUG AAAAAA 0 A_Raise
		MGUG AAA 1 A_Raise
		Loop
	Fire:
		MGUF A 0
		TNT1 A 0 A_PlaySound("MINIGUN", 1, 1)

		TNT1 A 0 A_ZoomFactor(0.99)
		NULL A 0 A_FireBullets(0, 0, 1, 0, "NoPuff", FBF_NORANDOM) //Dummy tracer to activate Sigil's switches
		MGUF A 1 BRIGHT A_FireCustomMissile("Bullet1", random(-3, 3), 1, 0, 0, 0,  random(-1, 2))
		TNT1 A 0 A_FireCustomMissile("RifleCaseSpawn",-5,0,-8,-14)
		TNT1 A 0 A_ZoomFactor(1.00)
		MGUF B 1 BRIGHT A_FireCustomMissile("bullet1", random(-3, 3), 1, 0, 0, 0,  random(-1, 2))
		TNT1 A 0 A_FireCustomMissile("RifleCaseSpawn",-5,0,-8,-14)
		TNT1 A 0 A_ReFire
		MGUG ABCDABCDABCD 1 A_WeaponReady
		MGUG ABCDABCD 2 A_WeaponReady
		MGUG ABCD 2 A_WeaponReady
		Goto Ready
	Spawn:
		WPPI D -1
		Stop
	}
}


ACTOR Clip2 : Ammo Replaces CLip
{
	Game Doom
	SpawnID 11
	Inventory.PickupMessage "$GOTCLIP"
	Inventory.Amount 10
	Inventory.MaxAmount 400
	Ammo.BackpackAmount 10
	Ammo.BackpackMaxAmount 800
	Inventory.Icon "CLIPA0"
	States
	{
	Spawn:
		CLIP A -1
		Stop
	}
}

// Clip box ----------------------------------------------------------------

ACTOR ClipBox2 : Clip2 Replaces ClipBox
{
	Game Doom
	SpawnID 139
	Inventory.PickupMessage "$GOTCLIPBOX"
	Inventory.Amount 50
	States
	{
	Spawn:
		AMMO A -1
		Stop
	}
}

// --------------------------------------------------------------------------
//
// Rocket launcher
//
// --------------------------------------------------------------------------

ACTOR MultiRocketLauncher : BasicWeapon Replaces RocketLauncher
{
	Game Doom
	SpawnID 29
	Weapon.SelectionOrder 2500
	Weapon.AmmoUse1 1
	Weapon.AmmoUse2 1
	Weapon.AmmoGive 2
	Weapon.AmmoType1 "RocketAmmo"
	Weapon.AmmoType2 "RocketAmmo"
	Inventory.PickupMessage "$GOTLAUNCHER"
	Tag "$TAG_ROCKETLAUNCHER"
	States
	{
	Ready:
		RLNC A 1 A_WeaponReady
		Loop
	Deselect:
		RLNC AAAAAA 0 A_Lower
		RLNC AAA 1 A_Lower
		Loop
	Select:
		RLNC AAAAAA 0 A_Raise
		RLNC AAA 1 A_Raise
		Loop
	Fire:
		TNT1 A 0 A_ZoomFactor(0.99)
		RLNF AB 1 BRIGHT A_GunFlash
		TNT1 A 0 A_FireCustomMissile("Rocket2", 0, 1, 0, -8, 0, 1)
		TNT1 A 0 A_ZoomFactor(1.00)
		RLNC A 3
		RLNC ABCD 1
		RLNC A 3
		Goto Ready
	AltFire:
		TNT1 A 0 A_ZoomFactor(0.9)
		RLNF A 1 BRIGHT A_FireCustomMissile("Rocket2", 0, 1, 0, -8, 0, 1)
		RLNF B 1 BRIGHT A_FireCustomMissile("Rocket2", -5, 1, 0, -8, 0, 1)
		RLNF C 1 BRIGHT A_FireCustomMissile("Rocket2", 5, 1, 0, -8, 0, 1)
		TNT1 A 0 A_ZoomFactor(1.00)
		RLNC A 5
		RLNC ABCD 1
		RLNC ABCD 1
		RLNC ABCD 1
		Goto Ready
	Spawn:
		WPPI E -1
		Stop
	}
}

ACTOR NewRocket Replaces Rocket
{
	Game Doom
	SpawnID 127
	Radius 2
	Height 2
	Speed 20
	Scale 0.5
	Damage 20
	Projectile
	+RANDOMIZE
	+EXPLODEONDEATH
	+EXTREMEDEATH
	+BLOODSPLATTER
	SeeSound "weapons/rocklf"
	Obituary "$OB_MPROCKET"
	Decal "ScorchSmall"
	Species "Marines"
	+THRUSPECIES
	+MTHRUSPECIES
	States
	{
	Spawn:
		//MISL A 1 Bright
		MISL A 1 BRIGHT A_SpawnItem("RocketTrails")
		Loop
	Death:
		TNT1 A 0 A_Explode
		TNT1 A 0 A_SpawnItem("Explosion")
		TNT1 A 6
		Stop
	}
}


Actor Rocket2: NewRocket
{
Speed 60
}

// --------------------------------------------------------------------------
//
// Plasma rifle
//
// --------------------------------------------------------------------------

ACTOR PlasmaThrower : BasicWeapon Replaces PLasmaRifle
{
	Game Doom
	SpawnID 30
	Weapon.SelectionOrder 100
	Weapon.AmmoUse 1
	Weapon.AmmoGive 40
	Weapon.AmmoType "Cell"
	Inventory.PickupMessage "$GOTPLASMA"

	Tag "$TAG_PLASMARIFLE"
	States
	{
	Ready:
		PLSC A 1 A_WeaponReady
		Loop
	Deselect:
		PLSC AAAAAA 0 A_Lower
		PLSC AAA 1 A_Lower
		Loop
	Select:
		PLSC AAAAAA 0 A_Raise
		PLSC AAA 1 A_Raise
		Loop
	Fire:
		PLSF A 1 BRIGHT A_FireCustomMissile("PlasmaBallNew2", 0, 1, 0, -4, 0,  1)
		PLSC B 1
		PLSF A 1 BRIGHT A_FireCustomMissile("PlasmaBallNew2", 0, 1, 0, -4, 0,  1)
		PLSC B 1
		TNT1 A 0 A_ReFire
		PLSC BC 1
		Goto Ready
	Spawn:
		PLAS A -1
		Stop
	}
}

ACTOR PlasmaBall44 Replaces PlasmaBall
{
	Game Doom
	SpawnID 51
	Radius 2
	Height 2
	Speed 25
	Damage 5
	Projectile
	+RANDOMIZE
	Alpha 0.75
	SeeSound "weapons/plasmaf"
	DeathSound "weapons/plasmax"
	Obituary "$OB_MPPLASMARIFLE"
	+EXTREMEDEATH
	Scale 0.8
	damagetype "plasma"
	rENDERSTYLE aDD
	States
	{
	Spawn:
		PBLS AB 1 Bright
		Loop
	Death:
		TNT1 A 0

	TNT1 A 0 A_Jump(192, "Spawn1", "Spawn2", "Spawn3", "Spawn4")
	TNT1 A 0 A_SetScale(1.0, -1.0)
	Goto Live

	Spawn1:
	TNT1 A 0
	TNT1 A 0 A_SetScale(0.8, 0.8)
	Goto live 

	Spawn2:
	TNT1 A 0
	TNT1 A 0 A_SetScale(-0.8, 0.8)
	Goto live 

	Spawn3:
	TNT1 A 0
	TNT1 A 0 A_SetScale(-1.2, -1.2)
	Goto live 

	Spawn4:
	TNT1 A 0
	TNT1 A 0 A_SetScale(-0.7, 0.7)
	Goto live 


	Live:
		TNT1 A 0
		TNT1 AAAA 0 A_CustomMissile("PlasmaParticle", 0,  0, random(0, 360), 2, random(0, 360))
		PBLE ABCD 1 Bright
		Stop
	}
}

Actor PlasmaBallNew2: PlasmaBall44
{
Speed 100
Species "Marines"
+THRUSPECIES
+MTHRUSPECIES
}


ACTOR BFG9K : DoomWeapon Replaces BFG9000
{
	Game Doom
	Height 20
	SpawnID 31
	Weapon.SelectionOrder 2800
	Weapon.AmmoUse 40
	Weapon.AmmoGive 40
	Weapon.AmmoType "Cell"
	+WEAPON.NOLMS
	Inventory.PickupMessage "$GOTBFG9000"
	Tag "$TAG_BFG9000"
	States
	{
	Ready:
		BFGN A 1 A_WeaponReady
		Loop
	Deselect:
		BFGN AAAAAA 0 A_Lower
		BFGN AAA 1 A_Lower
		Loop
	Select:
		BFGN AAAAAA 0 A_Raise
		BFGN AAA 1 A_Raise
		Loop
	Fire:
		TNT1 A 0
		TNT1 A 0 A_PlaySound("weapons/bfgf")
		BFGC ABCDABCDABCD 1 BRIGHT
		TNT1 A 0 BRIGHT A_FireCustomMissile("BFGBall2", random(-1, 1), 1, 0, -4, 0,  random(0, 2))
		BFGA ABCDEF 1 BRIGHT
		BFGN A 5
		BFGN A 1 A_ReFire
		Goto Ready
	Spawn:
		BFUG A -1
		Stop
	}
}


ACTOR BFGBall2
{
	Game Doom
	SpawnID 128
	Radius 13
	Height 8
	Speed 50
	Damage 100
	Projectile
	+RANDOMIZE
	+EXTREMEDEATH
	Scale 0.5
	DeathSound "weapons/bfgx"
	Obituary "$OB_MPBFG_BOOM"
	Species "Marines"
	+THRUSPECIES
	+MTHRUSPECIES
	States
	{
	Spawn:
		BFS1 AB 2 Bright
		Loop
	Death:
		BFGB A 0
		BFGB A 0 A_SetScale(1.0, 1.0)
		BFGB ABCDE 2 Bright
		BFGB F 2 Bright A_BFGSpray
		BFGB G 2 Bright
		Stop
	}
}
		
ACTOR BFGExtra2 Replaces BFGExtra
{
	+NOBLOCKMAP
	+NOGRAVITY
	+EXTREMEDEATH
	RenderStyle Add
	Alpha 0.75
	DamageType "BFGSplash"
	
	States
	{
	Spawn:
		BFE2 ABCD 4 Bright
		Stop
	}
}

