
//==============================================================================
//				PLAYER CLASSES
//==============================================================================

Actor FDPlayerPawn : DoomPlayer
{
  Player.DisplayName "FD Player"
  Player.viewheight 48
  Player.attackzoffset 15
  Player.Forwardmove 0.6 1.0
  Player.Sidemove 0.6 1.0
  Player.damagescreencolor Red, 0.5
  Species "Player"
  Tag "FD Player"
  PainChance 256
  +THRUSPECIES
  
  Player.StartItem "FDGotPistol"
  Player.StartItem "FDPlutPistol"
  Player.StartItem "FDPlutPistolAmmo", 6
  Player.StartItem "FDPlutFist"
  Player.StartItem "FDPlutBullets", 60
  Player.StartItem "FDPlutoniaToken"
  Player.StartItem "FDStartingOptionsSetter"
}

//==============================================================================
//			PLUTONIA PLAYER
//==============================================================================

Actor FDPlutPlayer : FDPlayerPawn
{
  Player.DisplayName "Plutguy"
  Player.Portrait "P_SELECT"
  Tag "Plutguy"
  
  Player.StartItem "FDGotPistol"
  Player.StartItem "FDPlutPistol"
  Player.StartItem "FDPlutPistolAmmo", 6
  Player.StartItem "FDPlutFist"
  Player.StartItem "FDPlutBullets", 60
  Player.StartItem "FDPlutoniaToken"
  Player.StartItem "FDStartingOptionsSetter"
}

//==============================================================================
//			TNT PLAYER
//==============================================================================

Actor FDTNTPlayer : FDPlayerPawn
{
  Player.DisplayName "TNTguy"
  Player.Portrait "T_SELECT"
  Tag "TNTguy"
  
  Player.StartItem "FDGotPistol"
  Player.StartItem "FDTNTPistol"
  Player.StartItem "FDTNTPistolAmmo", 17
  Player.StartItem "FDTNTFist"
  Player.StartItem "FDTNTBullets", 80
  Player.StartItem "FDTNTToken"
  Player.StartItem "FDStartingOptionsSetter"
}

//==============================================================================
//			DOOM II PLAYER
//==============================================================================

Actor FDDoom2Player : FDPlayerPawn
{
  Player.DisplayName "Doomguy"
  Player.Portrait "D_SELECT"
  Tag "Doomguy"
  
  Player.StartItem "FDGotPistol"
  Player.StartItem "FDDoom2Pistol"
  Player.StartItem "FDDoom2PistolAmmo", 15
  Player.StartItem "FDDoom2Fist"
  Player.StartItem "FDDoom2Bullets", 40
  Player.StartItem "FDDoom2Token"
  Player.StartItem "FDStartingOptionsSetter"
}

//==============================================================================
//			ANCIENT ALIENS PLAYER
//==============================================================================

Actor FDAliensPlayer : FDPlayerPawn
{
  Player.DisplayName "Aliensguy"
  Player.Portrait "A_SELECT"
  Tag "Aliensguy"
  
  Player.StartItem "FDGotPistol"
  Player.StartItem "FDAliensPistol"
  Player.StartItem "FDAliensPistolAmmo", 13
  Player.StartItem "FDAliensFist"
  Player.StartItem "FDAliensBullets", 60
  Player.StartItem "FDAliensToken"
  Player.StartItem "FDStartingOptionsSetter"
}

//==============================================================================
//			JPCP PLAYER
//==============================================================================

Actor FDJPCPPlayer : FDPlayerPawn
{
  Player.DisplayName "JPCPguy"
  Player.Portrait "J_SELECT"
  Tag "JPCPguy"
  
  Player.StartItem "FDGotPistol"
  Player.StartItem "FDJPCPPistol"
  Player.StartItem "FDJPCPPistolAmmo", 10
  Player.StartItem "FDJPCPFist"
  Player.StartItem "FDJPCPBullets", 30
  Player.StartItem "FDJPCPToken"
  Player.StartItem "FDStartingOptionsSetter"
}

//==============================================================================
//			BTSX PLAYER
//==============================================================================

Actor FDBTSXPlayer : FDPlayerPawn
{
  Player.DisplayName "BTSXguy"
  Player.Portrait "X_SELECT"
  Tag "BTSXguy"
  
  Player.StartItem "FDGotPistol"
  Player.StartItem "FDBTSXPistol"
  Player.StartItem "FDBTSXFist"
  Player.StartItem "FDBTSXBullets", 40
  Player.StartItem "FDBTSXToken"
  Player.StartItem "FDStartingOptionsSetter"
}

//==============================================================================
//			HELLBOUND PLAYER
//==============================================================================

Actor FDHellboundPlayer : FDPlayerPawn
{
  Player.DisplayName "Hellboundguy"
  Player.Portrait "H_SELECT"
  Tag "Hellboundguy"
  
  Player.StartItem "FDGotPistol"
  Player.StartItem "FDHellboundPistol"
  Player.StartItem "FDHellboundPistolAmmo", 12
  Player.StartItem "FDHellboundFist"
  Player.StartItem "FDHellboundBullets", 25
  Player.StartItem "FDHellboundToken"
  Player.StartItem "FDStartingOptionsSetter"
}

//==============================================================================
//			ALIEN VENDETTA PLAYER
//==============================================================================

Actor FDAlienVendettaPlayer : FDPlayerPawn
{
  Player.DisplayName "Vendettaguy"
  Player.Portrait "V_SELECT"
  Tag "Vendettaguy"
  
  Player.StartItem "FDGotPistol"
  Player.StartItem "FDAlienVendettaPistol"
  Player.StartItem "FDAlienVendettaPistolAmmo", 16
  Player.StartItem "FDAlienVendettaFist"
  Player.StartItem "FDAlienVendettaBullets", 60
  Player.StartItem "FDAlienVendettaToken"
  Player.StartItem "FDStartingOptionsSetter"
}

//==============================================================================
//			WHITEMARE PLAYER
//==============================================================================

Actor FDWhitemarePlayer : FDPlayerPawn
{
  Player.DisplayName "Whitemareguy"
  Player.Portrait "W_SELECT"
  Tag "Whitemareguy"
  
  Player.StartItem "FDGotPistol"
  Player.StartItem "FDWhitemarePistol"
  Player.StartItem "FDWhitemarePistolAmmo", 6
  Player.StartItem "FDWhitemareFist"
  Player.StartItem "FDWhitemareBullets", 40
  Player.StartItem "FDWhitemareToken"
  Player.StartItem "FDStartingOptionsSetter"
}

//==============================================================================
//				INVENTORY INHERITANCE
//==============================================================================

Actor FDBoolean : Inventory 
{
  +INVENTORY.UNTOSSABLE
  +INVENTORY.IGNORESKILL
inventory.maxamount 1
}

Actor FDCounter : Inventory 
{
  +INVENTORY.UNTOSSABLE
  +INVENTORY.IGNORESKILL
inventory.maxamount 99999
}

Actor FDLevelLimit : Inventory
{
  +INVENTORY.UNTOSSABLE
  +INVENTORY.IGNORESKILL
Inventory.InterHubAmount 0
inventory.maxamount 1
}

ACTOR FDCustomFunction : CustomInventory
{
  -COUNTITEM
  +INVENTORY.ALWAYSPICKUP
  Inventory.PickupMessage ""
  Inventory.PickupSound ""
  States
  {
  Spawn:
    TNT1 A 1
    Stop
  Pickup:
    TNT1 A 0 
	TNT1 A 0
    Stop
  }
}

ACTOR FDCooldown : Powerup
{
	+INVENTORY.UNTOSSABLE
	Powerup.Duration -5
}

Actor FDPermanentBoolean	: FDBoolean
{
	+INVENTORY.UNDROPPABLE
	+INVENTORY.UNTOSSABLE
}

Actor FDClassToken	: FDBoolean
{
	+INVENTORY.UNDROPPABLE
	+INVENTORY.UNTOSSABLE
}

Actor FDPlutoniaToken		: FDClassToken {}
Actor FDTNTToken			: FDClassToken {}
Actor FDDoom2Token			: FDClassToken {}
Actor FDAliensToken			: FDClassToken {}
Actor FDJPCPToken			: FDClassToken {}
Actor FDBTSXToken			: FDClassToken {}
Actor FDHellboundToken		: FDClassToken {}
Actor FDAlienVendettaToken	: FDClassToken {}
Actor FDWhitemareToken		: FDClassToken {}

ACTOR FDPickupMessageCooldown : FDCooldown {}

Actor FDSynthFireFire		: FDBoolean {} // Pewpew first gun
Actor FDSynthFireAltfire	: FDBoolean {} // Pewpew second gun
Actor FDSynthFireCrouch		: FDBoolean {} // Currently holding crouch
Actor FDSynthFireJump		: FDBoolean {} // Currently holding jump
Actor FDSynthFireForward	: FDBoolean {} // Currently holding forwards
Actor FDSynthFireBackward	: FDBoolean {} // Currently holding backwards

Actor FDWeaponAimState		: FDLevelLimit {} // Used for guns like the TNT and Doom II pistols that are aimed in a different position

const float FIXED2FLOAT = 65536.0; // For converting floats into non-decimal nightmare beasts

//==============================================================================
//				TEST ITEMS
//==============================================================================

ACTOR FDTestInventory : CustomInventory
{
  +INVENTORY.INVBAR
  +INVENTORY.UNTOSSABLE
  +INVENTORY.BIGPOWERUP
  Tag "Test Inventory"
  Inventory.MaxAmount 100
  Inventory.Icon "PAMMD0"
  Inventory.Pickupsound ""
  Inventory.UseSound ""
  Inventory.PickupMessage ""
  States
  {
  Spawn:
    TNT1 A -1
    Stop
  Pickup:
    TNT1 A 0 A_GiveInventory("FDHealthBonusPickup", 1)
    Stop
  Use:
    TNT1 A 0 
	TNT1 A 0 A_Print ("aeiou", 1)
    Stop
  }
}

ACTOR FDTestInventory2 : FDTestInventory
{
  Tag "Test Inventory 2"
  Inventory.Icon "DAMMC0"
}

//==============================================================================
//				WEAPON INHERITANCE
//==============================================================================

ACTOR FDWeapon : Weapon
{
  Weapon.Kickback 100
   // Bobstyle shamelessly stolen from some cop while he was distracted fighting terrorists
   // Or more likely, from Wildweasel's Terrorists!
  Weapon.BobStyle Alpha
  Weapon.BobSpeed 2.5
  Weapon.BobRangeX 0.2
  Weapon.BobRangeY 0.5
//  Weapon.UpSound "items/weaponswap1"
  Inventory.Pickupmessage ""
  Inventory.PickupSound ""
  Weapon.AmmoGive 0
  Weapon.AmmoUse 1
  +AMMO_OPTIONAL
  +NOALERT
//  +CHEATNOTWEAPON
  +NOTIMEFREEZE
  States
  {
  Ready:
    "####" "#" 1 A_TakeInventory ("FDWeapon", 1)
    Goto Deselect
  Select:
    "####" "#" 1 A_Raise
    Loop
  Deselect:
    "####" "#" 1 A_Lower
    Loop
  Fire:
    "####" "#" 1
    Goto Ready
  }
}

ACTOR FDBFGWeapon : FDWeapon
{
  Weapon.BobRangeX 0.08
  Weapon.BobRangeY 0.15
}

//==============================================================================
//				ITEM VISUALS INHERITANCE
//==============================================================================

actor FDItemVisualPlutonia
{
	Radius 16
	Height 8
	VisibleToPlayerClass "FDPlutPlayer"
	+THRUACTORS
	+NOCLIP
    +FORCEXYBILLBOARD
	+NOTONAUTOMAP
    +DONTSPLASH
	+NOTELEPORT
    States
    {
    Spawn:
	    TNT1 A 1
	    TNT1 A 0 A_Jump(256, "Check")
		Goto Check
    Check:
        TNT1 A 0 A_CheckFlag("SPECIAL", 1, AAPTR_MASTER)
        Stop
    Warp:
        TNT1 A 0 A_Warp(AAPTR_MASTER, 0, 0, 0, 0, WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION | WARPF_NOCHECKPOSITION, "Spawn")
        Stop
    }
}

actor FDItemVisualTNT : FDItemVisualPlutonia
{
	VisibleToPlayerClass "FDTNTPlayer"
}

actor FDItemVisualDoom2 : FDItemVisualPlutonia
{
	VisibleToPlayerClass "FDDoom2Player"
}

actor FDItemVisualAliens : FDItemVisualPlutonia
{
	VisibleToPlayerClass "FDAliensPlayer"
}

actor FDItemVisualJPCP : FDItemVisualPlutonia
{
	VisibleToPlayerClass "FDJPCPPlayer"
}

actor FDItemVisualBTSX : FDItemVisualPlutonia
{
	VisibleToPlayerClass "FDBTSXPlayer"
}

actor FDItemVisualHellbound : FDItemVisualPlutonia
{
	VisibleToPlayerClass "FDHellboundPlayer"
}

actor FDItemVisualAlienVendetta : FDItemVisualPlutonia
{
	VisibleToPlayerClass "FDAlienVendettaPlayer"
}

actor FDItemVisualWhitemare : FDItemVisualPlutonia
{
	VisibleToPlayerClass "FDWhitemarePlayer"
}

//==============================================================================

#include "decorate/startstuff.dec"
#include "decorate/bulletpuffs.dec"
#include "decorate/meleepuffs.dec"
#include "decorate/bfgrays.dec"
#include "decorate/casings.dec"
#include "decorate/sharedeffects.dec"
#include "decorate/teststuff.dec"
#include "decorate/pickups/weaponitems.dec"
#include "decorate/pickups/chainsawpickup.dec"
#include "decorate/pickups/fistpickup.dec"
#include "decorate/pickups/pistolpickup.dec"
#include "decorate/pickups/shotgunpickup.dec"
#include "decorate/pickups/supershotgunpickup.dec"
#include "decorate/pickups/chaingunpickup.dec"
#include "decorate/pickups/rocketlauncherpickup.dec"
#include "decorate/pickups/plasmariflepickup.dec"
#include "decorate/pickups/bfg9000pickup.dec"
#include "decorate/ammo.dec"
#include "decorate/pickups/ammopickups.dec"
#include "decorate/pickups/clippickups.dec"
#include "decorate/pickups/shellpickups.dec"
#include "decorate/pickups/rocketpickups.dec"
#include "decorate/pickups/cellpickups.dec"
#include "decorate/pickups/keys.dec"
#include "decorate/pickups/items.dec"
#include "decorate/modcompat.dec"

#include "decorate/plutonia/fist.dec"
#include "decorate/plutonia/chainsaw.dec"
#include "decorate/plutonia/pistol.dec"
#include "decorate/plutonia/shotgun.dec"
#include "decorate/plutonia/supershotgun.dec"
#include "decorate/plutonia/chaingun.dec"
#include "decorate/plutonia/rocketlauncher.dec"
#include "decorate/plutonia/plasmarifle.dec"
#include "decorate/plutonia/bfg9000.dec"

#include "decorate/TNT/fist.dec"
#include "decorate/TNT/chainsaw.dec"
#include "decorate/TNT/pistol.dec"
#include "decorate/TNT/shotgun.dec"
#include "decorate/TNT/supershotgun.dec"
#include "decorate/TNT/chaingun.dec"
#include "decorate/TNT/rocketlauncher.dec"
#include "decorate/TNT/plasmarifle.dec"
#include "decorate/TNT/bfg9000.dec"

#include "decorate/doom2/fist.dec"
#include "decorate/doom2/chainsaw.dec"
#include "decorate/doom2/pistol.dec"
#include "decorate/doom2/shotgun.dec"
#include "decorate/doom2/supershotgun.dec"
#include "decorate/doom2/chaingun.dec"
#include "decorate/doom2/rocketlauncher.dec"
#include "decorate/doom2/plasmarifle.dec"
#include "decorate/doom2/bfg9000.dec"

#include "decorate/aliens/fist.dec"
#include "decorate/aliens/chainsaw.dec"
#include "decorate/aliens/pistol.dec"
#include "decorate/aliens/shotgun.dec"
#include "decorate/aliens/supershotgun.dec"
#include "decorate/aliens/chaingun.dec"
#include "decorate/aliens/rocketlauncher.dec"
#include "decorate/aliens/plasmarifle.dec"
#include "decorate/aliens/bfg9000.dec"

#include "decorate/JPCP/fist.dec"
//#include "decorate/JPCP/chainsaw.dec"
#include "decorate/JPCP/pistol.dec"
#include "decorate/JPCP/shotgun.dec"
#include "decorate/JPCP/supershotgun.dec"
#include "decorate/JPCP/chaingun.dec"
#include "decorate/JPCP/rocketlauncher.dec"
#include "decorate/JPCP/plasmarifle.dec"
#include "decorate/JPCP/bfg9000.dec"

#include "decorate/BTSX/fist.dec"
#include "decorate/BTSX/chainsaw.dec"
#include "decorate/BTSX/pistol.dec"
#include "decorate/BTSX/shotgun.dec"
#include "decorate/BTSX/supershotgun.dec"
#include "decorate/BTSX/chaingun.dec"
#include "decorate/BTSX/rocketlauncher.dec"
#include "decorate/BTSX/plasmarifle.dec"
#include "decorate/BTSX/bfg9000.dec"

#include "decorate/Hellbound/fist.dec"
#include "decorate/Hellbound/chainsaw.dec"
#include "decorate/Hellbound/pistol.dec"
#include "decorate/Hellbound/shotgun.dec"
#include "decorate/Hellbound/supershotgun.dec"
#include "decorate/Hellbound/chaingun.dec"
#include "decorate/Hellbound/rocketlauncher.dec"
#include "decorate/Hellbound/plasmarifle.dec"
#include "decorate/Hellbound/bfg9000.dec"

#include "decorate/AlienVendetta/fist.dec"
#include "decorate/AlienVendetta/chainsaw.dec"
#include "decorate/AlienVendetta/pistol.dec"
#include "decorate/AlienVendetta/shotgun.dec"
#include "decorate/AlienVendetta/supershotgun.dec"
#include "decorate/AlienVendetta/chaingun.dec"
#include "decorate/AlienVendetta/rocketlauncher.dec"
#include "decorate/AlienVendetta/plasmarifle.dec"
#include "decorate/AlienVendetta/bfg9000.dec"

#include "decorate/Whitemare/fist.dec"
#include "decorate/Whitemare/chainsaw.dec"
#include "decorate/Whitemare/pistol.dec"
#include "decorate/Whitemare/shotgun.dec"
#include "decorate/Whitemare/supershotgun.dec"
#include "decorate/Whitemare/chaingun.dec"
#include "decorate/Whitemare/rocketlauncher.dec"
#include "decorate/Whitemare/plasmarifle.dec"
#include "decorate/Whitemare/bfg9000.dec"
