
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 "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 "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 "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 "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 "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 "FDJPCPPistol"
  Player.StartItem "FDJPCPPistolAmmo", 10
  Player.StartItem "FDJPCPFist"
  Player.StartItem "FDJPCPBullets", 30
  Player.StartItem "FDJPCPHUDChanger" // Used to toggle JPCP hud styles
  Player.StartItem "FDJPCPHUDRestorer" // Used to restore JPCP hud styles between playthroughs
  Player.StartItem "FDJPCPToken"
  Player.StartItem "FDStartingOptionsSetter"
}

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

Actor FDBTSXPlayer : FDPlayerPawn
{
  Player.DisplayName "BTSXguy"
  Player.Portrait "X_SELECT"
  Tag "BTSXguy"
  
  Player.StartItem "FDBTSXPistol"
  Player.StartItem "FDBTSXFist"
  Player.StartItem "FDBTSXBullets", 40
  Player.StartItem "FDBTSXToken"
  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
{
	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 FDPickupMessageCooldown : FDCooldown {}

//==============================================================================
//				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"
}

//==============================================================================
//				JPCP HUD
//==============================================================================

ACTOR FDJPCPHUDChanger : CustomInventory
{
    -COUNTITEM
    +INVENTORY.UNTOSSABLE
    +INVENTORY.UNDROPPABLE
	+INVENTORY.KEEPDEPLETED
    Tag "JPCP HUD Style"
    Inventory.InterHubAmount 1
    Inventory.MaxAmount 1
    Inventory.Icon "TNT1A0"
    Inventory.Pickupmessage ""
	Inventory.PickupSound ""
	Inventory.UseSound ""
	States
	{
	Spawn:
		TNT1 A -1
		Loop
	Use:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("FDJPCPHUDType",0,"Reset")
		TNT1 A 0 A_GiveInventory("FDJPCPHUDType",1)
		TNT1 A 0 ACS_NamedExecuteAlways("FD_JPCPHUDChanger", 0, 1)
		Fail
	Reset:
		TNT1 A 0 A_TakeInventory("FDJPCPHUDType",0)
		TNT1 A 0 ACS_NamedExecuteAlways("FD_JPCPHUDChanger", 0, 0)
		Fail
	}
}

ACTOR FDJPCPHUDRestorer : CustomInventory
{
  -COUNTITEM
  +INVENTORY.ALWAYSPICKUP
  Inventory.PickupMessage ""
  Inventory.PickupSound ""
  States
  {
  Spawn:
    TNT1 A 1
    Stop
  Pickup:
    TNT1 A 0 
  StatusBarHUDCheck:
//	- STATUSBAR HUD -
	TNT1 A 0 A_JumpIf(CallACS("FD_JPCPHUD") == 1, "Japanese")
	Stop
  Japanese:
    TNT1 A 0 A_GiveInventory("FDJPCPHUDType", 1)
	Stop
  }
}

Actor FDJPCPHUDType	: FDBoolean {}

//==============================================================================
//				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"
}

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

#include "decorate/startstuff.dec"
#include "decorate/bulletpuffs.dec"
#include "decorate/casings.dec"
#include "decorate/sharedeffects.dec"
#include "decorate/weaponitems.dec"
#include "decorate/ammo.dec"
#include "decorate/ammopickups.dec"
#include "decorate/keys.dec"
#include "decorate/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"
