// Blah.

ACTOR WWStylePlayer : DoomPlayer replaces DoomPlayer
{
	Player.StartItem "WWStylePistol"
	Player.StartItem "WWStyleAmmo" 20
}

// Guns.

ACTOR WWStyleBarFlash : Inventory {} // Weapons give and take this repeatedly to make the Style Bar flash when empty.

ACTOR WWStyleWeapon : Weapon
{
	Weapon.BobStyle Alpha
	Weapon.BobSpeed 2.5
	Weapon.BobRangeX .2
	Weapon.BobRangeY .5
	Inventory.Icon "UNKNA0" // if no icon defined, show <!> instead.
	States
	{
	DryfireBlink:
		TNT1 A 0 A_StartSound("keen/death", CHAN_WEAPON, 0, 1.0, ATTN_NORM, 1.75)
		TNT1 A 3 A_GiveInventory("WWStyleBarFlash",1)
		TNT1 A 3 A_TakeInventory("WWStyleBarFlash",1)
		TNT1 A 3 A_GiveInventory("WWStyleBarFlash",1)
		TNT1 A 3 A_TakeInventory("WWStyleBarFlash",1)
		Stop
	}
}

ACTOR WWStylePistol : WWStyleWeapon replaces Pistol
{
	Weapon.SlotNumber 1
	Weapon.AmmoType1 ""
	Weapon.AmmoType2 "WWStyleAmmo"
	Weapon.AmmoUse2 1
	Weapon.AmmoGive2 10
	AttackSound "weapons/pistol"
	+WEAPON.ALT_AMMO_OPTIONAL
	+WEAPON.NOAUTOFIRE
	Tag "Stylish Sidearm"
	States
	{
	Spawn:
		PIST A -1
		Stop
	Select:
		PISG A 1 A_Raise
		PISG A 0 A_Raise
		Loop
	Deselect:
		PISG A 1 A_Lower
		PISG A 0 A_Lower
		Loop
	Ready:
		PISG A 1 A_WeaponReady
		Loop
	Fire:
		PISG A 2
		PISG B 0 A_GunFlash
		PISG B 1 Offset(0,40) A_FireBullets(3,3,-1,(random(1,8)+6),"BulletPuff",0)
		PISG C 1 Offset(0,38)
		PISG D 1 Offset(0,36)
		PISG E 1 Offset(1,45) A_WeaponReady(1)
		PISG E 1 Offset(1,52) A_WeaponReady(1)
		PISG D 1 Offset(1,52) A_WeaponReady(1)
		PISG A 1 Offset(0,48) A_WeaponReady(1)
		PISG A 1 Offset(0,44) A_WeaponReady(1)
		PISG A 1 Offset(0,40) A_WeaponReady(1)
		PISG A 1 Offset(0,36) A_WeaponReady(1)
		Goto Ready
	AltFire:
		PISG A 0 A_JumpIfNoAmmo("Dryfire")
		PISG C 1 Offset(0,42)
		PISG B 0 A_GunFlash
		PISG B 1 Offset(0,44) A_FireBullets(3,7,-1,(random(1,8)+6),"BulletPuff",1)
		PISG C 1 Offset(0,43)
		PISG B 0 A_GunFlash
		PISG B 1 Offset(0,46) A_FireBullets(3,7,-1,(random(1,8)+6),"BulletPuff",1)
		PISG C 1 Offset(0,45)
		PISG B 0 A_GunFlash
		PISG B 1 Offset(0,48) A_FireBullets(3,7,-1,(random(1,8)+6),"BulletPuff",1)
		PISG C 1 Offset(0,47)
		PISG D 1 Offset(0,41)
		PISG E 1 Offset(0,50)
		PISG E 1 Offset(0,57) A_WeaponReady(1)
		PISG D 1 Offset(0,57) A_WeaponReady(1)
		PISG D 1 Offset(0,53) A_WeaponReady(1)
		PISG A 1 Offset(0,48) A_WeaponReady(1)
		PISG A 1 Offset(0,43) A_WeaponReady(1)
		PISG A 1 Offset(0,38) A_WeaponReady(1)
		PISG A 1 Offset(0,34) A_WeaponReady(1)
		Goto Ready
	Flash:
		PISF A 2 BRIGHT A_Light2
		TNT1 A 2 A_Light1
		Goto LightDone
	Dryfire:
		"####" A 0 A_Overlay(69, "DryfireBlink")
		Goto Ready
	}
}

ACTOR WWStyleDisruptor : WWStyleWeapon replaces Chaingun
{
	Weapon.SlotNumber 3
	Weapon.AmmoType1 ""
	Weapon.AmmoType2 "WWStyleAmmo"
	Weapon.AmmoUse2 2
	Weapon.AmmoGive2 10
	// AttackSound "weapons/plasmaf"
	Inventory.PickupSound "misc/w_pkup"
	Inventory.PickupMessage "You got the Dual Neutron Disruptor! (3)"
	Tag "Dual Neutron Disruptor"
	+WEAPON.ALT_AMMO_OPTIONAL
	States
	{
	Spawn:
		PLAS A 0 NoDelay A_CheckFlag("TOSSED", "DropNothing")
		PLAS A -1
		Wait
	DropNothing:
		PLAS A 0
		Stop // Poof!
	Select:
		WWPL A 1 A_Raise
		Loop
	Deselect:
		WWPL A 1 A_Lower
		Loop
	Ready:
		WWPL A 1 A_WeaponReady
		Loop
	Fire:
		WWPF A 0 A_StartSound("weapons/plasmaf", CHAN_WEAPON, CHANF_OVERLAP, 1.0, ATTN_NORM, 0.9)
		WWPF A 1 Offset(-2,36) Bright A_FireBullets(2,2,-1,(random(1,5)+5),"WWStylePlasmaPuff",0)
		WWPL D 1
		WWPL C 1 Offset(-1,35)
		WWPL B 1 Offset(-1,34)
		WWPL A 1 Offset(0,33)
		WWPF A 0 A_StartSound("weapons/plasmaf", CHAN_WEAPON, CHANF_OVERLAP, 1.0, ATTN_NORM, 1.1)
		WWPF B 1 Offset(2,36) Bright A_FireBullets(2,2,-1,(random(1,5)+5),"WWStylePlasmaPuff",0)
		WWPL G 1
		WWPL F 1 Offset(1,35)
		WWPL E 1 Offset(1,34)
		WWPL A 1 Offset(0,33)
		Goto Ready
	AltFire:
		WWPL A 0 A_JumpIfNoAmmo("Dryfire")
		WWPF A 0 A_StartSound("weapons/plasmaf", CHAN_WEAPON, CHANF_OVERLAP, 1.0, ATTN_NORM, 0.9)
		WWPL I 1
		WWPF A 0 A_StartSound("weapons/plasmaf", CHAN_WEAPON, CHANF_OVERLAP, 1.0, ATTN_NORM, 0.75)
		WWPF C 1 Offset(0,38) Bright A_FireBullets(3,3,2,(random(7,10)+6),"WWStylePlasmaPuff",1)
		WWPL J 1
		WWPL I 1 Offset(0,36)
		WWPL H 1 Offset(0,34)
		WWPL A 1 Offset(0,32)
		WWPL A 1
		Goto Ready
	Dryfire:
		"####" A 0 A_Overlay(69, "DryfireBlink")
		WWPL I 2 A_PlayWeaponSound("world/spark2")
		WWPL JIHHAAA 2
		Goto Ready
	Flash:
		TNT1 A 2 A_Light2
		TNT1 A 2 A_Light1
		Goto LightDone
	}
}

ACTOR WWTechLaser : WWStyleWeapon replaces Shotgun
{
	Weapon.SlotNumber 2
	Weapon.AmmoType1 ""
	Weapon.AmmoType2 "WWStyleAmmo"
	Weapon.AmmoUse2 1
	Weapon.AmmoGive2 10
	AttackSound "keen/pain"
	Inventory.PickupSound "misc/w_pkup"
	Inventory.PickupMessage "You got the Tech Laser! (2)"
	Tag "Tech Laser"
	+WEAPON.ALT_AMMO_OPTIONAL
	+WEAPON.NOAUTOFIRE
	States
	{
	Spawn:
		WWTS P 0 NoDelay A_CheckFlag("TOSSED", "DropNothing")
		WWTS P -1
		Wait
	DropNothing:
		WWTS P 0
		Stop // Poof!
	Select:
		WWTS A 1 A_Raise
		Loop
	Deselect:
		WWTS A 1 A_Lower
		Loop
	Ready:
		WWTS A 1 A_WeaponReady
		Loop
	Fire:
		WWTS A 0 A_StartSound("weapons/shotgf", CHAN_WEAPON, CHANF_OVERLAP, 1.0, ATTN_NORM, 2.0)
		WWTS A 0 A_StartSound("weapons/plasmax", CHAN_WEAPON, CHANF_OVERLAP)
		WWTS A 0 A_StartSound("keen/pain", CHAN_WEAPON, CHANF_OVERLAP)
		WWTS B 0 A_GunFlash
		WWTS B 1 BRIGHT A_FireCustomMissile("WWTechLaserProjectile")
		WWTS B 1 BRIGHT Offset(0,40)
		WWTS C 1 Offset(0,44)
		WWTS C 1 Offset(0,41)
		WWTS A 1 Offset(0,38)
		WWTS A 1 Offset(0,36)
		WWTS A 1 Offset(0,34)
		WWTS A 1 Offset(0,33)
		WWTS A 0 A_Refire
		Goto Ready
	AltFire:
		WWTS A 0 A_JumpIfNoAmmo("Dryfire")
		WWTS A 0 A_StartSound("weapons/sshotf", CHAN_WEAPON, CHANF_OVERLAP, 1.0, ATTN_NORM, 2.5)
		WWTS A 0 A_StartSound("weapons/bfgx", CHAN_WEAPON, CHANF_OVERLAP, 0.75, ATTN_NORM, 1.5)
		WWTS A 0 A_StartSound("weapons/plasmax", CHAN_WEAPON, CHANF_OVERLAP)
		WWTS A 0 A_StartSound("keen/pain", CHAN_WEAPON, CHANF_OVERLAP, 1.0, ATTN_NORM, 0.7)
		WWTS A 0 A_StartSound("keen/pain", CHAN_WEAPON, CHANF_OVERLAP, 1.0, ATTN_NORM, 0.6)
		WWTS A 0 A_StartSound("keen/pain", CHAN_WEAPON, CHANF_OVERLAP, 1.0, ATTN_NORM, 0.5)
		WWTS D 0 A_GunFlash
		WWTS D 0 BRIGHT A_FireCustomMissile("WWTechLaserProjectile",-6,0)
		WWTS D 0 BRIGHT A_FireCustomMissile("WWTechLaserProjectile",-3)
		WWTS D 0 BRIGHT A_FireCustomMissile("WWTechLaserProjectile",6,0)
		WWTS D 0 BRIGHT A_FireCustomMissile("WWTechLaserProjectile",3)
		WWTS D 1 BRIGHT A_FireCustomMissile("WWTechLaserProjectile")
		WWTS D 1 BRIGHT Offset(0,42)
		WWTS D 1 BRIGHT Offset(0,48)
		WWTS E 1 BRIGHT Offset(0,45)
		WWTS E 1 BRIGHT Offset(0,42)
		WWTS F 1 Offset(0,40)
		WWTS F 1 Offset(0,38)
		WWTS G 1 Offset(0,36)
		WWTS G 1 Offset(0,35)
		WWTS A 1 Offset(0,34)
		WWTS A 1 Offset(0,33)
		WWTS A 0 A_Refire
		Goto Ready
	Dryfire:
		"####" A 0 A_Overlay(69, "DryfireBlink")
		Goto Ready
	Flash:
		TNT1 A 2 A_Light2
		TNT1 A 2 A_Light1
		Goto LightDone
	}
}

ACTOR WWTechLaserProjectile
{
	PROJECTILE
	+STRIFEDAMAGE
	RenderStyle Add
	Alpha 1
	Damage 7
	Speed 30
	Radius 8
	Height 8
	Decal ArachnotronScorch
	// SeeSound "keen/pain"
	States
	{
	Spawn:
		WWTP A 0
		WWTP A 1 BRIGHT A_SpawnItemEx("WWTechLaserTrail")
		Loop
	Death:
		APBX B 3 BRIGHT A_SpawnDebris("WWStyleGreenPlasmaSpark")
		APBX CDE 3 BRIGHT
		Stop
	}
}

ACTOR WWTechLaserTrail
{
	+NOGRAVITY
	+NOCLIP
	Speed 0
	RenderStyle Add
	Alpha 1
	States
	{
	Spawn:
		WWTP A 2 BRIGHT
		WWTP A 2 BRIGHT A_SetTranslucent(0.85,1)
		WWTP A 2 BRIGHT A_SetTranslucent(0.7,1)
		WWTP A 2 BRIGHT A_SetTranslucent(0.55,1)
		WWTP A 2 BRIGHT A_SetTranslucent(0.4,1)
		WWTP A 2 BRIGHT A_SetTranslucent(0.25,1)
		WWTP A 2 BRIGHT A_SetTranslucent(0.1,1)
		Stop
	}
}
	


ACTOR WWStyleTripleShotgunSeq : Inventory
{
	Inventory.MaxAmount 3
}

ACTOR WWStyleTripleShotgunIdle : Inventory
{
	Inventory.MaxAmount 100
}

ACTOR WWStyleTripleShotgun : WWStyleWeapon replaces SuperShotgun
{
	Weapon.SlotNumber 4
	Weapon.AmmoType1 ""
	Weapon.AmmoType2 "WWStyleAmmo"
	Weapon.AmmoUse2 10
	Weapon.AmmoGive2 10
	// AttackSound "weapons/sshotf"
	Inventory.PickupSound "misc/w_pkup"
	Inventory.PickupMessage "You got the Triple Shotgun! (4)"
	Tag "Triple Shotgun"
	+WEAPON.ALT_AMMO_OPTIONAL
	+WEAPON.NOAUTOFIRE
	States
	{
	Spawn:
		SGN3 A -1
		Stop
	Select:
		WWSG A 1 A_Raise
		Loop
	Deselect:
		WWSG A 1 A_Lower
		Loop
	Ready:
		WWSG A 0 A_GiveInventory("WWStyleTripleShotgunIdle",1)
		WWSG A 1 A_WeaponReady
		WWSG A 0 A_JumpIfInventory("WWStyleTripleShotgunIdle",100,"IdleReload")
		Loop
	IdleReload:
		WWSG A 0 A_JumpIfInventory("WWStyleTripleShotgunSeq",1,"Reload")
		WWSG A 0 A_TakeInventory("WWStyleTripleShotgunIdle",100)
		Goto Ready
	Fire:
		WWSG A 0 A_JumpIfInventory("WWStyleTripleShotgunSeq",3,"Reload")
		WWSF A 0 A_StartSound("weapons/sshotf", CHAN_WEAPON, CHANF_OVERLAP, 1.0, ATTN_NORM, 1.1)
		WWSF A 1 Bright Offset(0,34) A_FireBullets(14,5,15,3,"BulletPuff",0)
		WWSF A 1 Bright Offset(0,38) A_GiveInventory("WWStyleTripleShotgunSeq",1)
		WWSF B 1 Bright Offset(0,42)
		WWSF B 1 Bright Offset(0,40)
		WWSF C 1 Offset(0,38)
		WWSF C 1 Offset(0,36)
		WWSG A 1 Offset(0,34)
		WWSG A 1 Offset(0,33)
		WWSG A 1 Offset(0,32) A_TakeInventory("WWStyleTripleShotgunIdle",100)
		WWSG A 5
		Goto Ready
	AltFire:
		WWSF A 0 A_JumpIfInventory("WWStyleTripleShotgunSeq",1,"Reload")
		WWSF A 0 A_JumpIfNoAmmo("Dryfire")
		WWSF A 0 A_StartSound("weapons/sshotf", CHAN_WEAPON, CHANF_OVERLAP, 1.0, ATTN_NORM, 0.75)
		WWSF A 0 A_StartSound("world/barrelx", CHAN_WEAPON, CHANF_OVERLAP, 0.8, ATTN_NORM, 0.85)
		WWSF A 0 A_StartSound("weapons/bfgx", CHAN_WEAPON, CHANF_OVERLAP, 0.8, ATTN_NORM, 1.5)
		WWSF A 1 Bright Offset(0,36) A_FireBullets(20,7,50,4,"BulletPuff",1)
		WWSF A 1 Bright Offset(0,41) A_GiveInventory("WWStyleTripleShotgunSeq",3)
		WWSF B 1 Bright Offset(0,47)
		WWSF B 1 Bright Offset(0,52)
		WWSF C 1 Offset(0,49)
		WWSF C 1 Offset(0,46)
		WWSG A 1 Offset(0,43)
		WWSG A 1 Offset(0,40)
		WWSG A 1 Offset(0,38)
		WWSG A 1 Offset(0,36)
		WWSG A 1 Offset(0,35)
		WWSG A 1 Offset(0,34)
		WWSG A 1 Offset(0,33)
		WWSG A 1 Offset(0,32)
		WWSG A 10
	Reload:
		WWSR AAAA 1 A_WeaponOffset(-2.0, 1.0, WOF_ADD|WOF_INTERPOLATE)
		WWSR A 0 A_PlaySound("weapons/sshoto")
		WWSR AAAAAAAA 1 A_WeaponOffset(-1.0, 2.0, WOF_ADD|WOF_INTERPOLATE)
		WWSR A 0 A_StartSound("weapons/sshotl", CHAN_WEAPON, CHANF_OVERLAP, 1.0, ATTN_NORM, frandom(0.8,1.2))
		WWSR A 0 A_TakeInventory("WWStyleTripleShotgunSeq",3)
		WWSR A 1 A_WeaponOffset(-1.0, 3.0, WOF_ADD|WOF_INTERPOLATE)
		WWSR A 1 A_WeaponOffset(-1.0, 5.0, WOF_ADD|WOF_INTERPOLATE)
		WWSR A 1 A_WeaponOffset(1.0, -2.0, WOF_ADD|WOF_INTERPOLATE)
		WWSR A 1 A_WeaponOffset(1.0, -3.0, WOF_ADD|WOF_INTERPOLATE)
		WWSR A 1 A_WeaponOffset(1.0, -3.0, WOF_ADD|WOF_INTERPOLATE)
		WWSR A 0 A_StartSound("weapons/sshotl", CHAN_WEAPON, CHANF_OVERLAP, 1.0, ATTN_NORM, frandom(0.8,1.2))
		WWSR A 1 A_WeaponOffset(-1.0, 3.0, WOF_ADD|WOF_INTERPOLATE)
		WWSR A 1 A_WeaponOffset(-1.0, 6.0, WOF_ADD|WOF_INTERPOLATE)
		WWSR A 1 A_WeaponOffset(-1.0, -2.0, WOF_ADD|WOF_INTERPOLATE)
		WWSR A 1 A_WeaponOffset(-1.0, -2.0, WOF_ADD|WOF_INTERPOLATE)
		WWSR A 1 A_WeaponOffset(1.0, -2.0, WOF_ADD|WOF_INTERPOLATE)
		WWSR A 1 A_WeaponOffset(1.0, -2.0, WOF_ADD|WOF_INTERPOLATE)
		WWSR A 1 A_WeaponOffset(1.0, -3.0, WOF_ADD|WOF_INTERPOLATE)
		WWSR A 1 A_WeaponOffset(1.0, -4.0, WOF_ADD|WOF_INTERPOLATE)
		WWSR A 0 A_StartSound("weapons/sshotl", CHAN_WEAPON, CHANF_OVERLAP, 1.0, ATTN_NORM, frandom(0.8,1.2))
		WWSR A 1 A_WeaponOffset(-1.0, 3.0, WOF_ADD|WOF_INTERPOLATE)
		WWSR A 1 A_WeaponOffset(-1.0, 5.0, WOF_ADD|WOF_INTERPOLATE)
		WWSR A 1 A_WeaponOffset(1.0, -2.0, WOF_ADD|WOF_INTERPOLATE)
		WWSR A 1 A_WeaponOffset(1.0, -3.0, WOF_ADD|WOF_INTERPOLATE)
		WWSR A 1 A_WeaponOffset(1.0, -3.0, WOF_ADD|WOF_INTERPOLATE)
		WWSG A 0 A_PlaySound("weapons/sshotc")
		WWSG A 1 A_WeaponOffset(-3.0, 34.0, WOF_INTERPOLATE)
		WWSG A 1 A_WeaponOffset(0.0, 32.0, WOF_INTERPOLATE)
		WWSG A 1 A_TakeInventory("WWStyleTripleShotgunIdle",100)
		Goto Ready
	Dryfire:
		"####" A 0 A_Overlay(69, "DryfireBlink")
		Goto Ready
	Flash:
		TNT1 A 2 A_Light2
		TNT1 A 2 A_Light1
		Goto LightDone
	}
}

ACTOR WWDoubleChaingun : WWStyleWeapon replaces PlasmaRifle
{
	Weapon.SlotNumber 5
	Weapon.AmmoType1 ""
	Weapon.AmmoType2 "WWStyleAmmo"
	Weapon.AmmoUse2 1
	Weapon.AmmoGive2 1
	Inventory.PickupSound "misc/w_pkup"
	Inventory.PickupMessage "You got the Overkill Cannon! (5)"
	Tag "Overkill Cannon"
	+WEAPON.ALT_AMMO_OPTIONAL
	States
	{
	Spawn:
		WWCP A -1
		Stop
	Select:
		WWCG A 1 A_Raise
		Wait
	Deselect:
		WWCG A 0 ACS_NamedExecute("StylePlayerSpeed",0,100)
		WWCG A 1 A_Lower
		Wait
	Ready:
		WWCG A 1 A_WeaponReady
		Loop
	Fire:
		TNT1 A 0 ACS_NamedExecute("StylePlayerSpeed",0,66)
		WWCG B 1 A_StartSound("weapons/sawidle", CHAN_AUTO, CHANF_DEFAULT, 1.0, ATTN_NORM, 0.9)
		WWCG BBBBBB 1
		WWCG C 1 A_StartSound("weapons/sawidle", CHAN_AUTO, CHANF_DEFAULT, 1.0, ATTN_NORM, 1.1)
		WWCG CCCCC 1
		WWCG C 1 A_StartSound("weapons/sawidle", CHAN_AUTO, CHANF_DEFAULT, 1.0, ATTN_NORM, 1.3)
		WWCG DDDD 1
		WWCG C 1 A_StartSound("weapons/sawidle", CHAN_AUTO, CHANF_DEFAULT, 1.0, ATTN_NORM, 1.5)
		WWCG AAA 1
		WWCG C 1 A_StartSound("weapons/sawidle", CHAN_AUTO, CHANF_DEFAULT, 1.0, ATTN_NORM, 1.75)
		WWCG BB 1
		WWCG C 1 A_StartSound("weapons/sawidle", CHAN_AUTO, CHANF_DEFAULT, 1.0, ATTN_NORM, 2.0)
		WWCG C 1 
		WWCG D 1 ACS_NamedExecute("StylePlayerSpeed",0,33)
		WWCG A 0 A_StartSound("weapons/sawfull", CHAN_5, CHANF_LOOP|CHANF_OVERLAP, 0.8, ATTN_NORM, 1.25)
		WWCG A 0 A_Refire
		WWCG A 0
		Goto FireStop
	Hold:
		WWCG A 0 A_PlaySoundEx("weapons/sawfull","SoundSlot5",1)
		WWCG D 1 ACS_NamedExecute("StylePlayerSpeed",0,33)
		WWCG A 0 A_StartSound("weapons/sshotf", CHAN_WEAPON, CHANF_OVERLAP, 0.5, ATTN_NORM, 1.75)
		WWCF A 1 BRIGHT Offset(0,37) A_FireBullets(6,4,3,(1),"BulletPuff",0)
		WWCF B 1 Offset(0,38) A_FireBullets(6,4,3,(1),"BulletPuff",0)
		WWCF A 0 A_StartSound("weapons/sshotf", CHAN_WEAPON, CHANF_OVERLAP, 0.5, ATTN_NORM, 1.75)
		WWCF C 1 BRIGHT Offset(0,37) A_FireBullets(6,4,3,(1),"BulletPuff",0)
		WWCF D 1 Offset(0,36) A_FireBullets(6,4,3,(1),"BulletPuff",0)
		WWCG A 1 Offset(0,35) A_Refire
	FireStop:
		WWCG B 1 Offset(0,34) A_StartSound("weapons/sawidle", CHAN_5, CHANF_DEFAULT, 1.0, ATTN_NORM, 1.0)
		WWCG C 2 Offset(0,33) A_StartSound("weapons/sawidle", CHAN_5, CHANF_DEFAULT, 1.0, ATTN_NORM, 0.75)
		WWCG D 3 Offset(0,32) ACS_NamedExecute("StylePlayerSpeed",0,100)
		Goto Ready
	AltFire:
		WWCG B 0 ACS_NamedExecute("StylePlayerSpeed",0,50)
		WWCG B 1 A_StartSound("weapons/sawup", CHAN_AUTO, CHANF_OVERLAP, 1.0, ATTN_NORM, 1.2)
		WWCG BBBBBBCCCCCCDDDDDAAAABBBCC 1
		WWCG D 1 ACS_NamedExecute("StylePlayerSpeed",0,20)
		WWCG A 0 A_Refire
		WWCG A 1
		Goto AltStop
	AltHold:
		WWCG A 0 A_JumpIfNoAmmo("Dryfire")
		WWCG A 0 A_StartSound("weapons/sshotf", CHAN_WEAPON, CHANF_OVERLAP, 0.8, ATTN_NORM, 1.85)
		WWCF A 1 BRIGHT Offset(0,42) A_FireBullets(12,8,6,(1),"BulletPuff",1)
		WWCF A 0 A_StartSound("weapons/sshotf", CHAN_WEAPON, CHANF_OVERLAP, 0.8, ATTN_NORM, 1.85)
		WWCF B 1 Offset(0,40) A_FireBullets(12,8,6,(1),"BulletPuff",0)
		WWCG A 0 A_StartSound("weapons/sshotf", CHAN_WEAPON, CHANF_OVERLAP, 0.8, ATTN_NORM, 1.85)
		WWCF C 1 BRIGHT Offset(0,42) A_FireBullets(12,8,6,(1),"BulletPuff",1)
		WWCF A 0 A_StartSound("weapons/sshotf", CHAN_WEAPON, CHANF_OVERLAP, 0.8, ATTN_NORM, 1.85)
		WWCF D 1 Offset(0,40) A_FireBullets(12,8,6,(1),"BulletPuff",0)
		WWCF A 1 Offset(0,39) A_Refire
	AltStop:
		WWCG B 1 Offset(0,38) A_StopSound(CHAN_5)
		WWCG C 1 Offset(0,37) A_PlaySound("weapons/sawidle")
		WWCG D 1 Offset(0,36)
		WWCG A 1 Offset(0,35)
		WWCG B 1 Offset(0,34)
		WWCG C 2 Offset(0,33)
		WWCG D 3 Offset(0,32) ACS_NamedExecute("StylePlayerSpeed",0,100)
		Goto Ready
	Dryfire:
		WWCG A 0 A_ClearRefire
		WWCG A 0 A_PlaySoundEx("weapons/sawidle","SoundSlot5",0)
		"####" A 0 A_Overlay(69, "DryfireBlink")
		WWCG ABCD 4 ACS_NamedExecute("StylePlayerSpeed",0,100)
		Goto Ready
	Flash:
		TNT1 A 2 A_Light2
		TNT1 A 1 A_Light1
		Goto LightDone
	}
}

// Swarmers.

ACTOR WWSwarmerMissile
{
	PROJECTILE
	+SCREENSEEKER
	+SEEKERMISSILE
	+SKYEXPLODE
	Damage (10)
	Speed 25
	Radius 8
	Height 8
	Decal Scorch
	SeeSound "weapons/rocklf"
	DeathSound "world/barrelx"
	Scale 0.5
	States
	{
	Spawn:
		MISL A 0
		MISL A 20
	SeekerLoop:
		MISL A 0 BRIGHT A_SpawnItemEx("WWSwarmerTrail")
		MISL A 1 BRIGHT A_SeekerMissile(20,2,SMF_LOOK|SMF_PRECISE,256)
		Loop
	Death:
		MISL B 3 BRIGHT A_SpawnDebris("WWStyleBulletSpark")
		MISL CDE 3 BRIGHT A_Explode(10,128)
		Stop
	}
}

ACTOR WWSwarmerTrail
{
	+NOGRAVITY
	+NOCLIP
	Speed 0
	RenderStyle Add
	Alpha 1
	Scale 0.4
	States
	{
	Spawn:
		RSMK A 2 BRIGHT
		RSMK A 1 BRIGHT A_SetTranslucent(0.9,1)
		RSMK B 2 BRIGHT A_SetTranslucent(0.8,1)
		RSMK B 1 BRIGHT A_SetTranslucent(0.7,1)
		RSMK C 2 BRIGHT A_SetTranslucent(0.6,1)
		RSMK C 1 BRIGHT A_SetTranslucent(0.5,1)
		RSMK D 2 BRIGHT A_SetTranslucent(0.4,1)
		RSMK D 1 BRIGHT A_SetTranslucent(0.3,1)
		RSMK E 2 BRIGHT A_SetTranslucent(0.2,1)
		RSMK E 1 BRIGHT A_SetTranslucent(0.1,1)
		Stop
	}
}

ACTOR WWSwarmerLauncherCharge : Inventory
{
	Inventory.MaxAmount 100
}

ACTOR WWSwarmerLauncher : WWStyleWeapon replaces RocketLauncher
{
	Weapon.SlotNumber 6
	Weapon.AmmoType1 ""
	Weapon.AmmoType2 "WWStyleAmmo"
	Weapon.AmmoUse2 1
	Weapon.AmmoGive2 10
	AttackSound "keen/pain"
	Inventory.PickupSound "misc/w_pkup"
	Inventory.PickupMessage "You got the Swarmer Launcher! (6)"
	Tag "Swarmer Launcher"
	+WEAPON.ALT_AMMO_OPTIONAL
	States
	{
	Ready:
		MISG A 1 A_WeaponReady
		MISG A 0 A_JumpIfInventory("WWSwarmerLauncherCharge",1,"AltLaunch")
		Loop
	Deselect:
		MISG A 1 A_Lower
		Loop
	Select:
		MISG A 1 A_Raise
		Loop
	Fire:
		MISG B 0 A_GunFlash
		MISG B 0 A_FireCustomMissile("WWSwarmerMissile",0)
		MISG B 0 A_FireCustomMissile("WWSwarmerMissile",3)
		MISG B 0 A_FireCustomMissile("WWSwarmerMissile",-3)
		MISG B 0 A_FireCustomMissile("WWSwarmerMissile",6)
		MISG B 3 A_FireCustomMissile("WWSwarmerMissile",-6)
		MISG B 1 Offset(0,44)
		MISG B 1 Offset(0,56)
		MISG B 1 Offset(0,68)
		MISG B 1 Offset(0,64)
		MISG B 1 Offset(0,60)
		MISG B 1 Offset(0,57)
		MISG B 1 Offset(0,55)
		MISG B 2 Offset(0,54)
		MISG B 2 Offset(0,53)
		MISG B 2 Offset(0,52)
		MISG B 2 Offset(0,54)
		MISG B 1 Offset(3,57)
		MISG B 2 Offset(6,60) A_PlaySound("weapons/sshotl")
		MISG B 3 Offset(8,64)
		MISG B 2 Offset(9,65)
		MISG A 2 Offset(6,64)
		MISG A 1 Offset(3,63)
		MISG A 1 Offset(-1,61)
		MISG A 1 Offset(0,56)
		MISG A 1 Offset(0,50)
		MISG A 1 Offset(0,42)
		MISG A 1 Offset(0,37)
		MISG A 1 Offset(0,34)
		MISG A 2 Offset(0,32)
		MISG A 3 Offset(0,31)
		Goto Ready
	Altfire:
		MISG A 0 A_JumpIfNoAmmo("Dryfire")
		MISG A 0 A_TakeInventory("WWStyleAmmo",1)
		MISG A 0 A_GiveInventory("WWSwarmerLauncherCharge",1)
		MISG A 1
		Goto Ready
	AltLaunch:
		MISG A 0 A_TakeInventory("WWSwarmerLauncherCharge",1)
		MISG A 0 A_FireCustomMissile("WWSwarmerMissile",(random(-8,8)),0,0,(random(-8,8)))
		MISG B 0 A_GunFlash
		MISG B 0 A_JumpIfInventory("WWSwarmerLauncherCharge",1,"AltLaunch")
		MISG B 1 Offset(0,44)
		MISG B 1 Offset(0,56)
		MISG B 1 Offset(0,68)
		MISG B 1 Offset(0,64)
		MISG B 1 Offset(0,60)
		MISG B 1 Offset(0,57)
		MISG B 1 Offset(0,55)
		MISG B 2 Offset(0,54)
		MISG B 2 Offset(0,53)
		MISG B 2 Offset(0,52)
		MISG B 2 Offset(0,54)
		MISG B 1 Offset(3,57)
		MISG B 2 Offset(6,60) A_PlaySound("weapons/sshotl")
		MISG B 3 Offset(8,64)
		MISG B 2 Offset(9,65)
		MISG A 2 Offset(6,64)
		MISG A 1 Offset(3,63)
		MISG A 1 Offset(-1,61)
		MISG A 1 Offset(0,56)
		MISG A 1 Offset(0,50)
		MISG A 1 Offset(0,42)
		MISG A 1 Offset(0,37)
		MISG A 1 Offset(0,34)
		MISG A 2 Offset(0,32)
		MISG A 3 Offset(0,31)
		Goto Ready
	Dryfire:
		MISG A 1 A_JumpIfInventory("WWSwarmerLauncherCharge",1,"AltLaunch")
		"####" A 0 A_Overlay(69, "DryfireBlink")
		MISG B 6
		MISG A 1
		Goto Ready
	Flash:
		MISF A 2 Bright A_Light1
		MISF B 2 Bright A_Light2
		MISF CD 2 Bright A_Light0
		Stop
	Spawn:
		LAUN A -1
		Stop
	}
}

// Random-ass pickups.

actor PowerAwexomeDamage : PowerDamage
{
	damagefactor "Normal", 4
}

actor WWAwexomeDamage : PowerupGiver
{
	Powerup.Type "PowerAwexomeDamage"
	Powerup.Duration 1050
	Powerup.Color "GoldMap"
	+INVENTORY.AUTOACTIVATE
}


ACTOR WWManBox : CustomInventory replaces Berserk
{
	Inventory.PickupSound "misc/p_pkup"
	Inventory.PickupMessage "You got a Box of Manliness!"
	Scale 1.5
	States
	{
	Spawn:
		PSTR A -1
		Stop
	Pickup:
		PSTR A 0
		PSTR A 0 A_GiveInventory("WWAwexomeDamage",1)
		PSTR A 0 A_GiveInventory("HealthBonus",75)
		Stop
	}
}

// Ammo.

ACTOR WWStyleAmmo : Ammo
{
	Inventory.Amount 3
	Inventory.MaxAmount 100
	Ammo.BackpackAmount 30
	Ammo.BackpackMaxAmount 150
	Inventory.Icon "WWSPA0"
	Inventory.PickupSound "world/spark3"
	Inventory.PickupMessage "Picked up a Style Orb."
	States
	{
	Spawn:
		WWSP A 1 Bright A_SetTranslucent(1.0,1)
		WWSP B 1 Bright A_SetTranslucent(0.95,1)
		WWSP A 1 Bright A_SetTranslucent(0.9,1)
		WWSP B 1 Bright A_SetTranslucent(0.85,1)
		WWSP A 1 Bright A_SetTranslucent(0.8,1)
		WWSP B 1 Bright A_SetTranslucent(0.75,1)
		WWSP A 1 Bright A_SetTranslucent(0.7,1)
		WWSP B 1 Bright A_SetTranslucent(0.65,1)
		WWSP A 1 Bright A_SetTranslucent(0.6,1)
		WWSP B 1 Bright A_SetTranslucent(0.55,1)
		WWSP A 1 Bright A_SetTranslucent(0.5,1)
		WWSP B 1 Bright A_SetTranslucent(0.45,1)
		WWSP A 1 Bright A_SetTranslucent(0.5,1)
		WWSP B 1 Bright A_SetTranslucent(0.55,1)
		WWSP A 1 Bright A_SetTranslucent(0.6,1)
		WWSP B 1 Bright A_SetTranslucent(0.65,1)
		WWSP A 1 Bright A_SetTranslucent(0.7,1)
		WWSP B 1 Bright A_SetTranslucent(0.75,1)
		WWSP A 1 Bright A_SetTranslucent(0.8,1)
		WWSP B 1 Bright A_SetTranslucent(0.85,1)
		WWSP A 1 Bright A_SetTranslucent(0.9,1)
		WWSP B 1 Bright A_SetTranslucent(0.95,1)
		Loop
	}
}

ACTOR WWStyleShades : CustomInventory replaces Chainsaw
{
	Inventory.PickupSound "misc/p_pkup"
	Inventory.PickupMessage "Picked up a pair of Stylish Shades!"
	Scale 2
	States
	{
	Spawn:
		WWSB AB 8 Bright
		Loop
	Pickup:
		WWSB A 0 A_GiveInventory("WWStyleAmmo",50)
		Stop
	}
}

// Special effects.

ACTOR WWStylePuff replaces BulletPuff
{
	Radius		1
	Height		1
	RenderStyle Add
	Alpha		1
	DamageType Bullet
	Decal BulletChip
	+NOGRAVITY
	+NOBLOCKMAP
	+FLOORCLIP
	+NOEXTREMEDEATH
	States
	{
	Spawn:
		PUFF A 0
		PUFF A 3 Bright A_SpawnDebris("WWStyleBulletSpark")
		PUFF B 3 Bright A_SetTranslucent(.75,0)
		PUFF C 3 Bright A_SetTranslucent(.5,0)
		PUFF D 3 Bright A_SetTranslucent(.25,0)
		Stop
	}
}

ACTOR WWStyleBulletSpark
{
	Health 4
	radius 3
	height 6
	speed .1
	RenderStyle ADD
	Alpha		1
	Scale 0.5
	Mass		0
	+missile
	+doombounce
	+FLOORCLIP
	+DONTSPLASH
	+NOTELEPORT
	States
	{
	Spawn:
		PUFF A 1
		PUFF A 1 Bright A_FadeOut(0.05, FTF_REMOVE)
		Loop
	}
}

ACTOR WWStylePlasmaPuff
{
	Radius		1
	Height		1
	RenderStyle Add
	Alpha		1
	DamageType Bullet
	Decal PlasmaScorch
	+NOGRAVITY
	+NOBLOCKMAP
	+FLOORCLIP
	+NOEXTREMEDEATH
	+PUFFONACTORS
	Scale 0.65
	States
	{
	Spawn:
		PLSE A 0
		PLSE A 2 Bright A_SpawnDebris("WWStylePlasmaSpark")
		PLSE B 2 Bright A_SetTranslucent(.8,1)
		PLSE C 2 Bright A_SetTranslucent(.6,1)
		PLSE D 2 Bright A_SetTranslucent(.4,1)
		PLSE E 2 Bright A_SetTranslucent(.2,1)
		Stop
	}
}

ACTOR WWStylePlasmaSpark
{
	Health 4
	radius 3
	height 6
	speed .1
	RenderStyle ADD
	Alpha		1
	Mass		0
	Scale 0.5
	+missile
	+doombounce
	+FLOORCLIP
	+DONTSPLASH
	+NOTELEPORT
	States
	{
		Spawn:
		PLSE E 1
		PLSE E 1 Bright A_FadeOut(0.05, FTF_REMOVE)
		Loop
	}
}

ACTOR WWStyleGreenPlasmaSpark : WWStylePlasmaSpark
{
	States
	{
	Spawn:
		BFE2 D 1
		BFE2 D 1 Bright A_FadeOut(0.05, FTF_REMOVE)
		Loop
	}
}

ACTOR WWStyleBackpack : Backpack replaces Backpack
{
	Inventory.PickupMessage "Picked up a snazzy hip satchel!"
	States
	{
	Spawn:
		WPAK A 10
		WPAK A 10 BRIGHT
		Loop
	}
}

ACTOR AbsolutelyNothing5 replaces Clip {}
ACTOR AbsolutelyNothing6 replaces ClipBox {}
ACTOR AbsolutelyNothing7 replaces Shell {}
ACTOR AbsolutelyNothing8 replaces ShellBox {}
ACTOR AbsolutelyNothing9 replaces RocketAmmo {}
ACTOR AbsolutelyNothing10 replaces RocketBox {}
ACTOR AbsolutelyNothing11 replaces Cell {}
ACTOR AbsolutelyNothing12 replaces CellPack {}
ACTOR AbsolutelyNothing14 replaces BFG9000 {}
