/// IDM.pk3 Decorate by Kaapeli47

#include "decorate/world.txt"
#include "decorate/health.txt"
#include "decorate/armor.txt"
#include "decorate/powerups.txt"
#include "decorate/ammo.txt"
#include "decorate/weapons.txt"
#include "decorate/spawners.txt"
#include "decorate/projectiles.txt"

/// Player and playerclasses ///

ACTOR IDMPlayer : DoomPlayer replaces DoomPlayer
{
  Speed 1
  Health 100
  GibHealth 75
  Radius 16
  Height 56
  Mass 100
  PainChance 255
  Player.MaxHealth 200
  Player.MugshotMaxHealth 125
  Player.FallingScreamSpeed 20.0,35.0
  Player.ForwardMove 2,1
  Player.SideMove 2,1
  Player.GruntSpeed 19.999999
  Player.CrouchSprite "PLYC"
  Player.DisplayName "Pistol"
  Player.Portrait "SWPIST"
  Player.InvulnerabilityMode "Ghost"
  Player.Soundclass "Player"
  Player.DamageScreenColor "Red", 1.0
  Player.DamageScreenColor "Cyan", 1.0, "Plasma"
  Player.DamageScreenColor "Green", 1.0, "HitPlasma"
  Player.DamageScreenColor "Green", 1.0, "Pulse"
  Player.DamageScreenColor "Green", 1.0, "BFG"
  Player.DamageScreenColor "Green", 1.0, "BFGSpray"
  Player.DamageScreenColor "Green", 1.0, "BFG10k"
  Player.DamageScreenColor "Orange", 1.0, "Reflection"
  Player.DamageScreenColor "Blue", 1.0, "Ice"
  Player.StartItem "IDMPistol"
  Player.StartItem "Fist"
  Player.StartItem "PlayerStartingArmor"
  Player.SpawnClass "Any"
  Player.WeaponSlot 1, Fist, StartingChainsaw
  Player.WeaponSlot 2, Blaster, Yellowboy, Machinegun, IDMPistol
  Player.WeaponSlot 3, Boomstick, BuckShot, IDMShotgun, RiotShotgun, IDMSuperShotgun
  Player.WeaponSlot 4, Nailgun, IDMChaingun, HeavyMachinegun, SuperNailgun, SuperChaingun
  Player.WeaponSlot 5, IDMRocketLauncher, IDMGrenadeLauncher, HeatSeeker, BarrageLauncher
  Player.WeaponSlot 6, IDMPlasmagun, PlasMachineGun, PulseRifle, PlasmaBeam, IDMRailgun
  Player.WeaponSlot 7, IDMMinigun, QuadShotgun, HellstormCannon, Devastator, FreezeCannon, BFG9000, Unmaker, IDMBFG10K, IDMMace, IDMWraithverge, IDMBloodscourge
  Player.ColorRange 112, 127
  -RANDOMIZE
  States
  {
  Spawn:
	PLAY A -1
    Loop
  See:
    PLAY ABCD 5
    Loop
  Missile:
    PLAY E 8
    Goto Spawn
  Melee:
    PLAY F 5 BRIGHT
    Goto Missile
  Pain:
	TNT1 A 0
	TNT1 A 0 A_JumpIfArmorType("BulletArmorProtection","ArmorPain")
	TNT1 A 0 A_JumpIfArmorType("FragArmorProtection","ArmorPain")
	TNT1 A 0 A_JumpIfArmorType("TechArmorProtection","ArmorPain")
	TNT1 A 0 A_JumpIfArmorType("IDMYellowArmor","ArmorPain")
	TNT1 A 0 A_JumpIfArmorType("IDMBlueArmor","ArmorPain")
	TNT1 A 0 A_JumpIfArmorType("IDMRedArmor","ArmorPain")
	TNT1 A 0 A_JumpIfArmorType("PurpleArmor","ArmorPain")
	TNT1 A 0 A_JumpIfArmorType("SuperArmor","ArmorPain")
    PLAY G 8 BRIGHT A_Pain
    Goto Spawn
  ArmorPain:
	TNT1 A 0
	TNT1 A 0 A_Playsound("misc/armhit",CHAN_ITEM)
	Goto Pain+9
  Death.Bullet:
	TNT1 A 0 A_Jump(36,"XDeath")
  Death:
	TNT1 A 0 A_TakeInventory("SoulsphereGiver")
	TNT1 A 0 A_Jump(26,"DTip")
	TNT1 A 0 A_Jump(64,"Death.Fast","Death.Faster","Death.Slow","Death.Slower")
    PLAY H 6 Bright A_PlayerScream
    PLAY I 6 Bright
    PLAY J 6 Bright A_NoBlocking
    PLAY K 6 Bright
	PLAY LM 6 Bright
    PLAY N -1
    Stop
  DTip:
	TNT1 A 0 A_GiveInventory("TipItem")
	Goto Death+3
  Death.Fast:
    PLAY H 5 Bright A_PlayerScream
    PLAY I 5 Bright
    PLAY J 5 Bright A_NoBlocking
    PLAY K 5 Bright
	PLAY LM 5 Bright
    PLAY N -1
    Stop
  Death.Faster:
    PLAY H 4 Bright A_PlayerScream
    PLAY I 4 Bright
    PLAY J 4 Bright A_NoBlocking
    PLAY K 4 Bright
	PLAY LM 4
    PLAY N -1
    Stop
  Death.Slow:
    PLAY H 7 Bright A_PlayerScream
    PLAY I 7 Bright
    PLAY J 7 Bright A_NoBlocking
    PLAY K 7 Bright
	PLAY LM 7 Bright
    PLAY N -1
    Stop
  Death.Slower:
    PLAY H 8 Bright A_PlayerScream
    PLAY I 8 Bright
    PLAY J 8 Bright A_NoBlocking
    PLAY K 8 Bright
	PLAY LM 8 Bright
    PLAY N -1
    Stop
  XDeath:
	TNT1 A 0 A_TakeInventory("SoulsphereGiver")
	TNT1 A 0 A_Jump(26,"XDTip")
	TNT1 A 0 A_Jump(192,"Xdeath.Fast","XDeath.Slow")
    PLAY O 4 Bright
    PLAY P 5 Bright A_XScream
    PLAY Q 5 Bright A_NoBlocking
    PLAY RSTUV 5 Bright
    PLAY W -1
    Stop
  XDTip:
	TNT1 A 0 A_GiveInventory("XTipItem")
	Goto XDeath+2
  XDeath.Fast:
    PLAY O 3 Bright
    PLAY P 4 Bright A_XScream
    PLAY Q 4 Bright A_NoBlocking
    PLAY RSTUV 4 Bright
    PLAY W -1
    Stop
  XDeath.Slow:
    PLAY O 5 Bright
    PLAY P 6 Bright A_XScream
    PLAY Q 6 Bright A_NoBlocking
    PLAY RSTUV 6 Bright
    PLAY W -1
    Stop
  }
}

ACTOR MachinegunPlayer : IDMPlayer
{
  Player.DisplayName "Machinegun"
  Player.StartItem "Machinegun"
  Player.StartItem "Fist"
  Player.StartItem "IDMClip", 100
  Player.StartItem "PlayerStartingArmor"
}

ACTOR YellowboyPlayer : IDMPlayer
{
  Player.DisplayName "Yellowboy"
  Player.StartItem "Yellowboy"
  Player.StartItem "Fist"
  Player.StartItem "IDMClip", 50
  Player.StartItem "PlayerStartingArmor"
}

ACTOR BlasterPlayer : IDMPlayer
{
  Player.DisplayName "Blaster"
  Player.StartItem "IDMBlaster"
  Player.StartItem "Fist"
  Player.StartItem "IDMCell", 50
  Player.StartItem "PlayerStartingArmor"
}

ACTOR BoomstickPlayer : IDMPlayer
{
  Player.DisplayName "Boomstick"
  Player.StartItem "Boomstick"
  Player.StartItem "Fist"
  Player.StartItem "IDMShell", 20
  Player.StartItem "PlayerStartingArmor"
}

ACTOR BuckShotPlayer : IDMPlayer
{
  Player.DisplayName "BuckShot"
  Player.StartItem "BuckShot"
  Player.StartItem "Fist"
  Player.StartItem "IDMShell", 20
  Player.StartItem "PlayerStartingArmor"
}

ACTOR ChaingunPlayer : IDMPlayer
{
  Player.DisplayName "Chaingun"
  Player.StartItem "IDMChaingun"
  Player.StartItem "Fist"
  Player.StartItem "IDMClip", 100
  Player.StartItem "PlayerStartingArmor"
}

ACTOR NailgunPlayer : IDMPlayer
{
  Player.DisplayName "Nailgun"
  Player.StartItem "Nailgun"
  Player.StartItem "Fist"
  Player.StartItem "IDMClip", 100
  Player.StartItem "PlayerStartingArmor"
}

ACTOR ChainsawPlayer : IDMPlayer
{
  Player.DisplayName "Chainsaw"
  Player.StartItem "StartingChainsaw"
  Player.StartItem "Fist"
  Player.StartItem "PlayerStartingArmor"
}

ACTOR GrenadeRiflePlayer : IDMPlayer
{
  Player.DisplayName "Grenade Rifle"
  Player.StartItem "GrenadeRifle"
  Player.StartItem "Fist"
  Player.StartItem "IDMRocketAmmo", 15
  Player.StartItem "PlayerStartingArmor"
}

ACTOR TargetDummy : IDMPlayer
{
  Health 200
  +ISMONSTER
}

ACTOR IDMIceChunkHead : IceChunkHead replaces IceChunkHead
{
	+NOTDMATCH
	States
	{
	Spawn:
		PLAY "]" -1
		Stop
	}
}


ACTOR IDMPlayerHead : BloodySkull
{
	+NOTDMATCH
	States
	{
	Spawn:
		PLAY "]" 0
		PLAY "]" 1 A_CheckFloor("Hit")
		Loop
	Hit:
		PLAY "]" 16 A_CheckPlayerDone
		Wait
	}
}

ACTOR IDMSkull : BloodySkull
{
  Gravity 0.375
  WallBounceFactor 0.85
  Speed 5
  VSpeed 5
  +CLIENTSIDEONLY
  States
  {
  Spawn:
	PHED G 0
    PHED G 0 A_Jump(128,"Spawn2")
	PHED GHIJK 5 Bright A_CheckFloor("Hit")
    Goto Spawn+2
  Hit:
	PHED L 5 Bright
    PHED L -1
    Stop
  Spawn2:
	PHED MNOPQRS 4 Bright A_CheckFloor("Hit2")
  SpawnLoop:
	PHED TUVS 4 Bright A_CheckFloor("Hit2")
    Loop
  Hit2:
	PHED W 4 Bright
    PHED W -1
	Stop
  }
}

ACTOR TipItem : CustomInventory
{
  Inventory.Amount 1
  Inventory.MaxAmount 1
  -INVENTORY.INVBAR
  +INVENTORY.AUTOACTIVATE
  States
  {
  Pickup:
	TNT1 A 0 A_JumpIfHealthLower(1,"DeadTip")
	Stop
  DeadTip:
	TNT1 A 0 A_Jump(256,"DTip1","DTip2","DTip3","DTip4","DTip5","DTip6","DTip7","DTip8","DTip9","DTip10","DTip11","DTip12","DTip13","DTip14","DTip15","DTip16","DTip17","DTip18","DTip19","DTip20","DTip21","DTip22","DTip23","DTip24","DTip25","DTip26","DTip27","DTip28","DTip29","DTip30","DTip31","DTip32","DTip33","DTip34","DTip35","DTip36","DTip37","DTip38","DTip39","DTip40","DTip41","DTip42","DTip43","DTip44","DTip45","DTip46","DTip47")
	Stop
  DTip1:
	TNT1 A 0 A_Print("$TIP1",6)
	Stop
  DTip2:
	TNT1 A 0 A_Print("$TIP2",6)
	Stop
  DTip3:
	TNT1 A 0 A_Print("$TIP3",6)
	Stop
  DTip4:
	TNT1 A 0 A_Print("$TIP4",6)
	Stop
  DTip5:
	TNT1 A 0 A_Print("$TIP5",6)
	Stop
  DTip6:
	TNT1 A 0 A_Print("$TIP6",6)
	Stop
  DTip7:
	TNT1 A 0 A_Print("$TIP7",6)
	Stop
  DTip8:
	TNT1 A 0 A_Print("$TIP8",6)
	Stop
  DTip9:
	TNT1 A 0 A_Print("$TIP9",6)
	Stop
  DTip10:
	TNT1 A 0 A_Print("$TIP10",6)
	Stop
  DTip11:
	TNT1 A 0 A_Print("$TIP11",6)
	Stop
  DTip12:
	TNT1 A 0 A_Print("$TIP12",6)
	Stop
  DTip13:
	TNT1 A 0 A_Print("$TIP13",6)
	Stop
  DTip14:
	TNT1 A 0 A_Print("$TIP14",6)
	Stop
  DTip15:
	TNT1 A 0 A_Print("$TIP15",6)
	Stop
  DTip16:
	TNT1 A 0 A_Print("$TIP16",6)
	Stop
  DTip17:
	TNT1 A 0 A_Print("$TIP17",6)
	Stop
  DTip18:
	TNT1 A 0 A_Print("$TIP18",6)
	Stop
  DTip19:
	TNT1 A 0 A_Print("$TIP19",6)
	Stop
  DTip20:
	TNT1 A 0 A_Print("$TIP20",6)
	Stop
  DTip21:
	TNT1 A 0 A_Print("$TIP21",6)
	Stop
  DTip22:
	TNT1 A 0 A_Print("$TIP22",6)
	Stop
  DTip23:
	TNT1 A 0 A_Print("$TIP23",6)
	Stop
  DTip24:
	TNT1 A 0 A_Print("$TIP24",6)
	Stop
  DTip25:
	TNT1 A 0 A_Print("$TIP25",6)
	Stop
  DTip26:
	TNT1 A 0 A_Print("$TIP26",6)
	Stop
  DTip27:
	TNT1 A 0 A_Print("$TIP27",6)
	Stop
  DTip28:
	TNT1 A 0 A_Print("$TIP28",6)
	Stop
  DTip29:
	TNT1 A 0 A_Print("$TIP29",6)
	Stop
  DTip30:
	TNT1 A 0 A_Print("$TIP30",6)
	Stop
  DTip31:
	TNT1 A 0 A_Print("$TIP31",6)
	Stop
  DTip32:
	TNT1 A 0 A_Print("$TIP32",6)
	Stop
  DTip33:
	TNT1 A 0 A_Print("$TIP33",6)
	Stop
  DTip34:
	TNT1 A 0 A_Print("$TIP34",6)
	Stop
  DTip35:
	TNT1 A 0 A_Print("$TIP35",6)
	Stop
  DTip36:
	TNT1 A 0 A_Print("$TIP36",6)
	Stop
  DTip37:
	TNT1 A 0 A_Print("$TIP37",6)
	Stop
  DTip38:
	TNT1 A 0 A_Print("$TIP38",6)
	Stop
  DTip39:
	TNT1 A 0 A_Print("$TIP39",6)
	Stop
  DTip40:
	TNT1 A 0 A_Print("$TIP40",6)
	Stop
  DTip41:
	TNT1 A 0 A_Print("$TIP41",6)
	Stop
  DTip42:
	TNT1 A 0 A_Print("$TIP42",6)
	Stop
  DTip43:
	TNT1 A 0 A_Print("$TIP43",6)
	Stop
  DTip44:
	TNT1 A 0 A_Print("$TIP44",6)
	Stop
  DTip45:
	TNT1 A 0 A_Print("$TIP45",6)
	Stop
  DTip46:
	TNT1 A 0 A_Print("$TIP46",6)
	Stop
  DTip47:
	TNT1 A 0 A_Print("$TIP47",6)
	Stop
  }
}


ACTOR XTipItem : CustomInventory
{
  Inventory.Amount 1
  Inventory.MaxAmount 1
  -INVENTORY.INVBAR
  +INVENTORY.AUTOACTIVATE
  States
  {
  Pickup:
	TNT1 A 0 A_JumpIfHealthLower(1,"DeadTip")
	Stop
  DeadTip:
	TNT1 A 0 A_Jump(256,"XTip1","XTip2","XTip3","XTip4","XTip5","XTip6","XTip7","XTip8","XTip9","XTip10","XTip11","XTip12","XTip13","XTip14","XTip15","XTip16","XTip17","XTip18","XTip19","XTip20","XTip21","XTip22","XTip23","XTip24","XTip25","XTip26","XTip27","XTip28","XTip29","XTip30","XTip31","XTip32","XTip33","XTip34","XTip35")
	Stop
  XTip1:
	TNT1 A 0 A_Print("$XTIP1",5)
	Stop
  XTip2:
	TNT1 A 0 A_Print("$XTIP2",5)
	Stop
  XTip3:
	TNT1 A 0 A_Print("$XTIP3",5)
	Stop
  XTip4:
	TNT1 A 0 A_Print("$XTIP4",5)
	Stop
  XTip5:
	TNT1 A 0 A_Print("$XTIP5",5)
	Stop
  XTip6:
	TNT1 A 0 A_Print("$XTIP6",5)
	Stop
  XTip7:
	TNT1 A 0 A_Print("$XTIP7",5)
	Stop
  XTip8:
	TNT1 A 0 A_Print("$XTIP8",5)
	Stop
  XTip9:
	TNT1 A 0 A_Print("$XTIP9",5)
	Stop
  XTip10:
	TNT1 A 0 A_Print("$XTIP10",5)
	Stop
  XTip11:
	TNT1 A 0 A_Print("$XTIP11",5)
	Stop
  XTip12:
	TNT1 A 0 A_Print("$XTIP12",5)
	Stop
  XTip13:
	TNT1 A 0 A_Print("$XTIP13",5)
	Stop
  XTip14:
	TNT1 A 0 A_Print("$XTIP14",5)
	Stop
  XTip15:
	TNT1 A 0 A_Print("$XTIP15",5)
	Stop
  XTip16:
	TNT1 A 0 A_Print("$XTIP16",5)
	Stop
  XTip17:
	TNT1 A 0 A_Print("$XTIP17",5)
	Stop
  XTip18:
	TNT1 A 0 A_Print("$XTIP18",5)
	Stop
  XTip19:
	TNT1 A 0 A_Print("$XTIP19",5)
	Stop
  XTip20:
	TNT1 A 0 A_Print("$XTIP20",5)
	Stop
  XTip21:
	TNT1 A 0 A_Print("$XTIP21",5)
	Stop
  XTip22:
	TNT1 A 0 A_Print("$XTIP22",5)
	Stop
  XTip23:
	TNT1 A 0 A_Print("$XTIP23",5)
	Stop
  XTip24:
	TNT1 A 0 A_Print("$XTIP24",5)
	Stop
  XTip25:
	TNT1 A 0 A_Print("$XTIP25",5)
	Stop
  XTip26:
	TNT1 A 0 A_Print("$XTIP26",5)
	Stop
  XTip27:
	TNT1 A 0 A_Print("$XTIP27",5)
	Stop
  XTip28:
	TNT1 A 0 A_Print("$XTIP28",5)
	Stop
  XTip29:
	TNT1 A 0 A_Print("$XTIP29",5)
	Stop
  XTip30:
	TNT1 A 0 A_Print("$XTIP30",5)
	Stop
  XTip31:
	TNT1 A 0 A_Print("$XTIP31",5)
	Stop
  XTip32:
	TNT1 A 0 A_Print("$XTIP32",5)
	Stop
  XTip33:
	TNT1 A 0 A_Print("$XTIP33",5)
	Stop
  XTip34:
	TNT1 A 0 A_Print("$XTIP34",5)
	Stop
  XTip35:
	TNT1 A 0 A_Print("$XTIP35",5)
	Stop
  }
}