ACTOR PSYDUCK : DoomPlayer
{
  Speed 0.8
  Health 25
  WoundHealth 0
  Player.MaxHealth 50
  Radius 12
  Height 30
  Mass 50
  DamageFactor "PsyduckGrenadeDamage", 0.0
  PainChance 250
  PainSound "psyduck/hurt"
  +DONTTHRUST
  +NORADIUSDMG
  +FORCEXYBILLBOARD
  -PICKUP
  -BUDDHA
  -NODAMAGE
  -NOPAIN
  -INVULNERABLE
  Player.DisplayName "PSYDUCK"
  Player.CrouchSprite "PSYC"
  Player.SoundClass "PSYDUCK"
  Player.StartItem "PsyduckX2Small_NotActivated", 1
  Player.StartItem "PsyduckX2Big_NotActivated", 1
  Player.StartItem "PsyduckFist"
  Player.StartItem "PsyduckEnergy", 25
  Player.StartItem "PsyduckEnergySmall", 25
  Player.StartItem "DarkPsyduckOptional", 1
  Player.WeaponSlot 1, PsyduckFist
  Player.WeaponSlot 2, none
  Player.WeaponSlot 3, none
  Player.WeaponSlot 4, none
  Player.WeaponSlot 5, none
  Player.WeaponSlot 6, none
  Player.WeaponSlot 7, none
  Player.WeaponSlot 8, none
  Player.WeaponSlot 9, none
  Player.Face PSYNONE
  Player.MugShotMaxHealth 50
  Player.Viewbob 0.4
  Player.Viewheight 22
  Player.ColorRange 112, 127
  Player.ColorSet 0, "Green",         0x70, 0x7F,  0x72
  Player.ColorSet 1, "Gray",          0x60, 0x6F,  0x62 // Called "Indigo" originally so as to have a unique initial
  Player.ColorSet 2, "Brown",         0x40, 0x4F,  0x42
  Player.ColorSet 3, "Red",           0x20, 0x2F,  0x22
  // Doom Legacy additions
  Player.ColorSet 4, "Light Gray",    0x58, 0x67,  0x5A
  Player.ColorSet 5, "Light Brown",   0x38, 0x47,  0x3A
  Player.ColorSet 6, "Light Red",     0xB0, 0xBF,  0xB2
  Player.ColorSet 7, "Light Blue",    0xC0, 0xCF,  0xC2

  States
  {
  Spawn:
	PSYD A 0
	Goto PickUpItems
  PickUpItems:
	PSYD A 0 A_ChangeFlag("PICKUP", true)
	Goto SpawnReal
  Spawnreal:
	PSYD A 0 ACS_NamedExecute("PsyduckPlayerCounter",0)
	PSYD A 0 A_ChangeFlag("BUDDHA", false)
	PSYD A 0 A_ChangeFlag("INVULNERABLE", false)
	PSYD A 0 ACS_NamedExecute("PSYMAXHEALTH",0)
	PSYD AAB 14
	PSYD AAB 0 ACS_NamedExecute("PSYMAXHEALTH",0)
	PSYD AAB 16
	PSYD A 0 A_JumpIf(GetCVar("psyduck_speech_density")==1, "PsyduckSounds_Idle_Density_1")
	PSYD A 0 A_JumpIf(GetCVar("psyduck_speech_density")==2, "PsyduckSounds_Idle_Density_2")
	PSYD A 0 A_JumpIf(GetCVar("psyduck_speech_density")==3, "PsyduckSounds_Idle_Density_3")
	PSYD AAB 0 A_JumpIf(GetCVar("psyduck_idle_anims")==1,"PsyduckFallingAsleepChance")
	Loop
  PsyduckFallingAsleepChance:
	PSYD AAB 0 A_Jump(7,"PsyduckFallingAsleep")
	Goto Spawnreal
  PsyduckFallingAsleep:
    PSYF A 0 A_ChangeFlag("PICKUP", false)
	PSYS A 0 ACS_NamedExecute("PsyduckGetUpSleeping",0)
	PSYF A 36
	PSYS A 0 ACS_NamedExecute("PsyduckGetUpSleeping",0)
	PSYS A 36 A_StartSound("psyduck/fallingasleep",4)
	PSYS A 0 ACS_NamedExecute("PsyduckGetUpSleeping",0)
	PSYS B 36
	PSYS A 0 ACS_NamedExecute("PsyduckGetUpSleeping",0)
	PSYS C 48 A_StartSound("psyduck/yawning",4)
	PSYS A 0 ACS_NamedExecute("PsyduckGetUpSleeping",0)
	PSYS B 36
	PSYS A 0 ACS_NamedExecute("PsyduckGetUpSleeping",0)
	PSYS D 24
	PSYS D 0 ACS_NamedExecute("PsyduckGetUpSleeping",0)
	Goto Sleeping
  Sleeping:
	PSYS E 0 ACS_NamedExecute("PsyduckGetUpSleeping",0)
	PSYS E 0 A_StartSound("psyduck/inhaling",4)
	PSYS E 24
	PSYS E 0 ACS_NamedExecute("PsyduckGetUpSleeping",0)
	PSYS F 24
	PSYS F 0 ACS_NamedExecute("PsyduckGetUpSleeping",0)
	PSYS F 0 ACS_NamedExecute("PsyduckSleepAmmo",0)
	PSYS F 24
	PSYS G 0 ACS_NamedExecute("PsyduckGetUpSleeping",0)
	PSYS G 0 A_StartSound("psyduck/exhaling",4)
	PSYS G 0 ACS_NamedExecute("PsyduckSleepAmmo",0)
	PSYS F 24
	PSYS F 0 ACS_NamedExecute("PsyduckGetUpSleeping",0)
	PSYS E 24
	PSYS E 0 ACS_NamedExecute("PsyduckGetUpSleeping",0)
	PSYS E 0 A_Jump(100,"KickingWhileSleeping")
	Loop
  KickingWhileSleeping:
	PSYS E 6
	PSYS E 0 ACS_NamedExecute("PsyduckGetUpSleeping",0)
	PSYS H 12
	PSYS H 0 ACS_NamedExecute("PsyduckGetUpSleeping",0)
	PSYS I 6 A_StartSound("psyduck/steps",4)
	PSYS I 0 ACS_NamedExecute("PsyduckGetUpSleeping",0)
	PSYS H 12
	PSYS H 0 ACS_NamedExecute("PsyduckGetUpSleeping",0)
	PSYS I 6 A_StartSound("psyduck/steps",4)
	PSYS I 0 ACS_NamedExecute("PsyduckGetUpSleeping",0)
	PSYS H 24
	PSYS H 0 ACS_NamedExecute("PsyduckGetUpSleeping",0)
	PSYS E 4
	PSYS E 0 ACS_NamedExecute("PsyduckGetUpSleeping",0)
	Goto Sleeping
  GetUpFromSleeping:
	PSYS D 0 A_StopSound(4)
	PSYS D 24 A_StartSound("psyduck/fallingasleep",4,CHANF_OVERLAP)
	PSYS B 24
	PSYS B 0 A_ChangeFlag("PICKUP", true)
	Goto Spawnreal
  See:
	PSYD A 0 A_ChangeFlag("PICKUP", false)
	PSYD A 0 ACS_NamedExecute("PSYMAXHEALTH",0)
	PSYD A 0 A_JumpIfHealthLower(25,"Wound1")
    PSYD ABC 4
	PSYD A 0 ACS_NamedExecute("PsyduckAmmoRegenerator",0)
	PSYD A 0 ACS_NamedExecute("PsyduckFootstepsPlayer",0)
	PSYD ABC 4
	PSYD A 0 ACS_NamedExecute("PsyduckFootstepsPlayer",0)
	PSYD ABC 4
	PSYD A 0 ACS_NamedExecute("PsyduckFootstepsPlayer",0)
	PSYD ABC 4 
	PSYD A 0 ACS_NamedExecute("PsyduckFootstepsPlayer",0)
	PSYD A 0 ACS_NamedExecute("PSYMAXHEALTH",0)
	PSYD A 0 A_JumpIf(GetCVar("psyduck_speech_density")==1, "PsyduckSounds_Moving_Density_1")
	PSYD A 0 A_JumpIf(GetCVar("psyduck_speech_density")==2, "PsyduckSounds_Moving_Density_2")
	PSYD A 0 A_JumpIf(GetCVar("psyduck_speech_density")==3, "PsyduckSounds_Moving_Density_3")
	PSYD A 0 A_JumpIf(GetCVar("psyduck_items")==1, "SeeMinipackChance")
    Goto See
  SeeMinipackChance:
	PSYD A 0 A_JumpIfInventory("PsyduckMinipackActivatedCheck", 1, "SeeMinipackChance2")
	PSYD A 0 A_Jump(15,"SeeMinipackActivator")
	Goto Spawnreal
  SeeMinipackActivator:
	PSYD A 0 A_JumpIfInventory("PsyduckMinipackActivator",1,"Spawnreal")
	PSYD A 0 A_GiveInventory("PsyduckMinipackActivator",1)
	Goto Spawnreal
  SeeMinipackChance2:
	PSYD A 0 A_Jump(21,"SeeMinipackGive")
	Goto Spawnreal
  SeeMinipackGive:
	PSYD A 0 A_GiveInventory("PsyduckMinipackActivated",1)
	Goto Spawnreal
  SeeMinipack:
	PSYD A 0 A_GiveInventory("PsyduckMinipack",1)
	Goto Spawnreal
  PsyduckSounds_Idle_Density_1:					//Rarely - Idle Sounds   NORMAL
    PSYD A 0 A_Jump(25,"IdleShoutingSounds_EXECUTED")
	Goto SpawnReal
  PsyduckSounds_Idle_Density_2:					//Normal - Idle Sounds
    PSYD A 0 A_Jump(93,"IdleShoutingSounds_EXECUTED")
	Goto SpawnReal
  PsyduckSounds_Idle_Density_3:					//Frequently - Idle Sounds
    PSYD A 0 A_Jump(193,"IdleShoutingSounds_EXECUTED")	//////////////////////////
	Goto SpawnReal									//////////////////////////
  PsyduckSounds_Moving_Density_1:				//Rarely - Moving Sounds
    PSYD A 0 A_Jump(1,"FastRunningSound_EXECUTED")
	PSYD A 0 A_Jump(30,"ShoutingSounds_EXECUTED")
	PSYD A 0 A_Jump(22,"RunningSounds_EXECUTED")
	PSYD A 0 A_JumpIf(GetCVar("psyduck_items")==1, "SeeMinipackChance")
	Goto See
  PsyduckSounds_Moving_Density_2:				//Normal - Moving Sounds
    PSYD A 0 A_Jump(2,"FastRunningSound_EXECUTED")
	PSYD A 0 A_Jump(52,"ShoutingSounds_EXECUTED")
	PSYD A 0 A_Jump(66,"RunningSounds_EXECUTED")
	PSYD A 0 A_JumpIf(GetCVar("psyduck_items")==1, "SeeMinipackChance")
	Goto See
  PsyduckSounds_Moving_Density_3:				//Frequently - Moving Sounds
    PSYD A 0 A_Jump(3,"FastRunningSound_EXECUTED")
	PSYD A 0 A_Jump(166,"ShoutingSounds_EXECUTED")
	PSYD A 0 A_Jump(123,"RunningSounds_EXECUTED")
	PSYD A 0 A_JumpIf(GetCVar("psyduck_items")==1, "SeeMinipackChance")
	Goto See
  RunningSounds_EXECUTED:
    PSYD A 0 A_StartSound("psyduck/running",4)
	Goto See
  FastRunningSound_EXECUTED:
    PSYD A 0 A_StartSound("psyduck/running1",4)
	Goto See
  ShoutingSounds_EXECUTED:
    PSYP A 0 A_StopSound(4)
	PSYD A 0 A_StopSound(6)
	PSYD A 0 A_StartSound("psyduck/shouting",5)
	Goto See
  IdleShoutingSounds_EXECUTED:
    PSYP A 0 A_StopSound(4)
	PSYD A 0 A_StopSound(5)
	PSYD A 0 A_StartSound("psyduck/idleshouting",6)
	Goto SpawnReal
  Wound1:
	PSYP Q 0 A_JumpIfInventory("PsyduckSelfDetonator_Activated",1,"Wound1_Detonated")
	PSYP Q 0 A_JumpIf(GetCVar("psyduck_speech_density")==0, "Wound0")
	PSYP Q 0 A_StopSound(2)
	PSYP Q 0 A_StopSound(4)
	PSYP Q 0 A_StopSound(5)
	PSYP Q 0 A_JumpIfHealthLower(1,"XDeath")
	PSYD Q 0 A_TakeInventory("PsyduckEnergy",525)
	PSYD Q 0 A_TakeInventory("PsyduckEnergySmall",75)
	PSYD Q 0 A_TakeInventory("PsyduckParticleShotgun",45)
	PSYD Q 0 A_TakeInventory("PsyduckLightningGrenade",12)
	PSYD Q 0 A_TakeInventory("PsyduckFirestormGrenade",1)
	//PSYD Q 0 A_TakeInventory("PsyduckFirestormGrenadeKey",1)
	//PSYD Q 0 A_TakeInventory("PsyduckFirestormGrenadeSealed",1)
	//PSYD Q 0 A_TakeInventory("DarkPsyduckMorpher",1)
	//PSYD Q 0 A_TakeInventory("PsyduckFloppaCubeSpawner",1)
	PSYD Q 0 A_TakeInventory("PsyduckMinipack",1)
	PSYD Q 0 A_TakeInventory("PsyduckMinipackActivator",1)
	PSYD Q 0 A_TakeInventory("PsyduckAcidCloudsGrenade",4)
	PSYD Q 0 A_TakeInventory("PsyduckSelfDetonator",2)
	PSYD Q 0 A_StartSound("psyduck/explosion",2,CHANF_OVERLAP)
	PSYD Q 3 A_ChangeFlag("INVULNERABLE", false)
	PSYD Q 3 A_ChangeFlag("BUDDHA", false)
	PSYD Q 6 A_Quake(1,60,0,1000)
	PSYD R 12
	PSYD S 0 A_ChangeFlag("INVULNERABLE", true)
	PSYD S 0 A_ChangeFlag("BUDDHA", true)
	PSYD S 12
	PSYD T 12
	PSYD U 12
	PSYD U 0 A_ChangeFlag("INVULNERABLE", false)
	PSYD U 0 A_ChangeFlag("BUDDHA", false)
	PSYD V 6 A_Quake(9,62,0,1000)
	PSYD V 6
	PSYD V 0 A_Explode(500,666)
	PSYD V 0 A_StartSound("psyduck/death",2,CHANF_OVERLAP)
	PSYD V 0 A_SpawnItem("PsyduckExplosionBoom")
	PSYD V 0 A_GiveInventory("PsyduckEnergy",15)
	PSYD V 0 A_GiveInventory("PsyduckEnergySmall",25)
	PSYD V 0 A_SetHealth(45)
	PSYD V 0 A_ChangeFlag("INVULNERABLE",false)
	PSYD V 0 A_ChangeFlag("BUDDHA", false)
	Goto Recovering
  Wound1_Detonated:
	PSYD Q 0 A_ChangeFlag("NOPAIN",true)
	PSYP Q 0 A_JumpIf(GetCVar("psyduck_speech_density")==0, "Wound0_Detonated")
	PSYP Q 0 A_StopSound(2)
	PSYP Q 0 A_StopSound(4)
	PSYP Q 0 A_StopSound(5)
	PSYP Q 0 A_JumpIfHealthLower(1,"XDeath")
	PSYD Q 0 A_StartSound("psyduck/explosion",2,CHANF_OVERLAP)
	PSYD Q 3 A_ChangeFlag("INVULNERABLE", false)
	PSYD Q 3 A_ChangeFlag("BUDDHA", false)
	PSYD Q 6 A_Quake(1,60,0,1000)
	PSYD R 12
	PSYD S 0 A_ChangeFlag("INVULNERABLE", true)
	PSYD S 0 A_ChangeFlag("BUDDHA", true)
	PSYD S 12
	PSYD T 12
	PSYD U 12
	PSYD U 0 A_ChangeFlag("INVULNERABLE", false)
	PSYD U 0 A_ChangeFlag("BUDDHA", false)
	PSYD V 6 A_Quake(9,62,0,1000)
	PSYD V 6
	PSYD V 0 A_Explode(500,666)
	PSYD V 0 A_TakeInventory("PsyduckSelfDetonator_Activated",1)
	PSYD V 0 A_StartSound("psyduck/death",2,CHANF_OVERLAP)
	PSYD V 0 A_SpawnItem("PsyduckExplosionBoom")
	PSYD V 0 A_GiveInventory("PsyduckEnergy",15)
	PSYD V 0 A_GiveInventory("PsyduckEnergySmall",25)
	PSYD V 0 A_SetHealth(45)
	PSYD V 0 A_ChangeFlag("NOPAIN",false)
	PSYD V 0 A_ChangeFlag("INVULNERABLE",false)
	PSYD V 0 A_ChangeFlag("BUDDHA", false)
	Goto Recovering
  Wound0:
	PSYP Q 0 A_JumpIfInventory("PsyduckSelfDetonator_Activated",1,"Wound0_Detonated")
	PSYP Q 0 A_StopSound(2)
	PSYP Q 0 A_StopSound(4)
	PSYP Q 0 A_StopSound(5)
	PSYP Q 0 A_JumpIfHealthLower(1,"XDeath")
	PSYD Q 0 A_TakeInventory("PsyduckEnergy",525)
	PSYD Q 0 A_TakeInventory("PsyduckEnergySmall",75)
	PSYD Q 0 A_TakeInventory("PsyduckParticleShotgun",45)
	PSYD Q 0 A_TakeInventory("PsyduckLightningGrenade",12)
	PSYD Q 0 A_TakeInventory("PsyduckFirestormGrenade",1)
	//PSYD Q 0 A_TakeInventory("PsyduckFirestormGrenadeKey",1)
	//PSYD Q 0 A_TakeInventory("PsyduckFirestormGrenadeSealed",1)
	//PSYD Q 0 A_TakeInventory("DarkPsyduckMorpher",1)
	//PSYD Q 0 A_TakeInventory("PsyduckFloppaCubeSpawner",1)
	PSYD Q 0 A_TakeInventory("PsyduckMinipack",1)
	PSYD Q 0 A_TakeInventory("PsyduckMinipackActivator",1)
	PSYD Q 0 A_TakeInventory("PsyduckAcidCloudsGrenade",4)
	PSYD Q 0 A_TakeInventory("PsyduckSelfDetonator",2)
	PSYD Q 3 A_ChangeFlag("INVULNERABLE", false)
	PSYD Q 3 A_ChangeFlag("BUDDHA", false)
	PSYD Q 6 A_Quake(1,60,0,1000)
	PSYD R 12
	PSYD S 0 A_ChangeFlag("INVULNERABLE", true)
	PSYD S 0 A_ChangeFlag("BUDDHA", true)
	PSYD S 12
	PSYD T 12
	PSYD U 12
	PSYD U 0 A_ChangeFlag("INVULNERABLE", false)
	PSYD U 0 A_ChangeFlag("BUDDHA", false)
	PSYD V 6 A_Quake(9,62,0,1000)
	PSYD V 6
	PSYD V 0 A_Explode(500,666)
	PSYD V 0 A_StartSound("psyduck/death",2,CHANF_OVERLAP)
	PSYD V 0 A_SpawnItem("PsyduckExplosionBoom")
	PSYD V 0 A_GiveInventory("PsyduckEnergy",15)
	PSYD V 0 A_GiveInventory("PsyduckEnergySmall",25)
	PSYD V 0 A_SetHealth(45)
	PSYD V 0 A_ChangeFlag("INVULNERABLE",false)
	PSYD V 0 A_ChangeFlag("BUDDHA", false)
	Goto Recovering
  Wound0_Detonated:
	PSYD Q 0 A_ChangeFlag("NOPAIN",true)
	PSYP Q 0 A_StopSound(2)
	PSYP Q 0 A_StopSound(4)
	PSYP Q 0 A_StopSound(5)
	PSYP Q 0 A_JumpIfHealthLower(1,"XDeath")
	PSYD Q 3 A_ChangeFlag("INVULNERABLE", false)
	PSYD Q 3 A_ChangeFlag("BUDDHA", false)
	PSYD Q 6 A_Quake(1,60,0,1000)
	PSYD R 12
	PSYD S 0 A_ChangeFlag("INVULNERABLE", true)
	PSYD S 0 A_ChangeFlag("BUDDHA", true)
	PSYD S 12
	PSYD T 12
	PSYD U 12
	PSYD U 0 A_ChangeFlag("INVULNERABLE", false)
	PSYD U 0 A_ChangeFlag("BUDDHA", false)
	PSYD V 6 A_Quake(9,62,0,1000)
	PSYD V 6
	PSYD V 0 A_Explode(500,666)
	PSYD V 0 A_TakeInventory("PsyduckSelfDetonator_Activated",1)
	PSYD V 0 A_StartSound("psyduck/death",2,CHANF_OVERLAP)
	PSYD V 0 A_SpawnItem("PsyduckExplosionBoom")
	PSYD V 0 A_GiveInventory("PsyduckEnergy",15)
	PSYD V 0 A_GiveInventory("PsyduckEnergySmall",25)
	PSYD V 0 A_SetHealth(37)
	PSYD V 0 A_ChangeFlag("NOPAIN",false)
	PSYD V 0 A_ChangeFlag("INVULNERABLE",false)
	PSYD V 0 A_ChangeFlag("BUDDHA", false)
	Goto Recovering
  Recovering:
	PSYR A 0 A_Quake(1,24,0,500)
	PSYR A 0 A_ChangeFlag("PICKUP", false)
	PSYR A 28 A_Stop
	PSYD H 12 A_Stop
	PSYD H 0 ACS_NamedExecute("PsyduckAmmoRegenerator",0)
	PSYD J 24 A_Stop
	PSYD K 12
	Goto SeeMinipackChance
  Missile:
	PSYP A 0 A_ChangeFlag("BUDDHA", false)
	PSYP A 0 A_ChangeFlag("PICKUP", false)
	PSYP A 0 A_JumpIfHealthLower(25,"Wound1")
    PSYP A 6
	PSYP B 6
    Goto Spawnreal
  Melee:
	PSYP A 0 A_ChangeFlag("BUDDHA", false)
	PSYP A 0 A_ChangeFlag("PICKUP", false)
	PSYP A 0 A_JumpIfHealthLower(25,"Wound1")
	PSYP A 6
	PSYP B 6
    Goto Missile
  Pain:
    PSYD E 0 A_StopSound(2)
    PSYD E 4
	PSYD E 0 A_ChangeFlag("BUDDHA", false)
	PSYD E 0 A_ChangeFlag("INVULNERABLE", false)
	PSYD E 0 A_JumpIfHealthLower(25,"Wound1")
	PSYD E 0 A_StartSound("psyduck/hurt")
    PSYD E 4 A_Pain
    Goto SpawnReal
  Death:
    PSYD E 5
	PSYX A 10
    PSYX B 10 A_PlayerScream
    PSYX C 10 A_NoBlocking
    PSYX D 10
	PSYX E 10
	PSYX D 30
	PSYX E -1
    Stop
  XDeath:
    PSYY A 5
    PSYY A 5 A_XScream
    PSYY B 5 A_NoBlocking
    PSYY B -1
    Stop
  MorphingToDarkPsyduck:
	PSYP Q 0 A_JumpIf(GetCVar("psyduck_speech_density")==0, "MorphingToDarkPsyduck_NoVoice")
	PSYD Q 0 A_ChangeFlag("PICKUP", false)
	PSYD Q 0 A_ChangeFlag("INVULNERABLE", true)
	PSYD Q 0 A_ChangeFlag("BUDDHA", true)
	PSYD Q 0 A_ChangeFlag("NOPAIN", true)
	PSYP Q 0 A_StopSound(2)
	PSYP Q 0 A_StopSound(4)
	PSYP Q 0 A_StopSound(5)
	PSYD Q 0 A_TakeInventory("PsyduckEnergy",525)
	PSYD Q 0 A_TakeInventory("PsyduckEnergySmall",75)
	PSYD Q 0 A_TakeInventory("PsyduckParticleShotgun",45)
	PSYD Q 0 A_TakeInventory("PsyduckLightningGrenade",12)
	PSYD Q 0 A_TakeInventory("PsyduckFirestormGrenadeSealed",1)
	PSYD Q 0 A_TakeInventory("PsyduckFirestormGrenadeKey",1)
	PSYD Q 0 A_TakeInventory("PsyduckFirestormGrenade",1)
	PSYD Q 0 A_TakeInventory("PsyduckMinipack",1)
	PSYD Q 0 A_TakeInventory("PsyduckAcidCloudsGrenade",4)
	PSYD Q 0 A_TakeInventory("PsyduckSelfDetonator",2)
	PSYD Q 0 A_StartSound("darkpsyduck/transforming",2,CHANF_OVERLAP)
	PSYD Q 3
	PSYD Q 3
	DSYD Q 6 A_Quake(1,60,0,1000)
	PSYD R 24
	DSYD S 24
	PSYD T 8
	DSYD T 8
	PSYD U 14
	PSYD U 0
	PSYD U 0
	DSYD V 6 A_Quake(9,62,0,1000)
	DSYD V 9
	DSYD V 0 A_StartSound("psyduck/death",2,CHANF_OVERLAP)
	DSYD V 0 A_ChangeFlag("INVULNERABLE",false)
	DSYD V 0 A_ChangeFlag("BUDDHA", false)
	DSYD V 0 A_ChangeFlag("NOPAIN", false)
	DSYD V 0 A_SpawnItem("DarkPsyduckExplosionBoom")
	DSYD V 0 A_Morph("DarkPSYDUCK",0)
	Goto Recovering
  MorphingToDarkPsyduck_NoVoice:
	PSYD Q 0 A_ChangeFlag("PICKUP", false)
	PSYD Q 0 A_ChangeFlag("INVULNERABLE", true)
	PSYD Q 0 A_ChangeFlag("BUDDHA", true)
	PSYD Q 0 A_ChangeFlag("NOPAIN", true)
	PSYP Q 0 A_StopSound(2)
	PSYP Q 0 A_StopSound(4)
	PSYP Q 0 A_StopSound(5)
	PSYD Q 0 A_TakeInventory("PsyduckEnergy",525)
	PSYD Q 0 A_TakeInventory("PsyduckEnergySmall",75)
	PSYD Q 0 A_TakeInventory("PsyduckParticleShotgun",45)
	PSYD Q 0 A_TakeInventory("PsyduckLightningGrenade",12)
	PSYD Q 0 A_TakeInventory("PsyduckFirestormGrenadeSealed",1)
	PSYD Q 0 A_TakeInventory("PsyduckFirestormGrenadeKey",1)
	PSYD Q 0 A_TakeInventory("PsyduckFirestormGrenade",1)
	PSYD Q 0 A_TakeInventory("PsyduckMinipack",1)
	PSYD Q 0 A_TakeInventory("PsyduckAcidCloudsGrenade",4)
	PSYD Q 0 A_TakeInventory("PsyduckSelfDetonator",2)
	PSYD Q 3
	PSYD Q 3
	DSYD Q 6 A_Quake(1,60,0,1000)
	PSYD R 24
	DSYD S 24
	PSYD T 8
	DSYD T 8
	PSYD U 14
	PSYD U 0
	PSYD U 0
	DSYD V 6 A_Quake(9,62,0,1000)
	DSYD V 9
	DSYD V 0 A_StartSound("psyduck/death",2,CHANF_OVERLAP)
	DSYD V 0 A_ChangeFlag("INVULNERABLE",false)
	DSYD V 0 A_ChangeFlag("BUDDHA", false)
	DSYD V 0 A_ChangeFlag("NOPAIN", false)
	DSYD V 0 A_SpawnItem("DarkPsyduckExplosionBoom")
	DSYD V 0 A_Morph("DarkPSYDUCK",0)
	Goto Recovering
  }
}

ACTOR PsyduckEnergy : Ammo 
{
  Scale 0.3
  Radius 4
  Height 4
  Inventory.PickupMessage "$GOTCELL" // "Picked up an energy cell."
  Inventory.Amount 5
  Inventory.MaxAmount 250
  Ammo.BackpackAmount 250
  Ammo.BackpackMaxAmount 525
  Inventory.Icon "BAL2A0"
  Inventory.PickupSound "pickup/shell"
  States
  {
  Spawn:
    Goto Death
  Death:
    BAL2 A 4
    Stop
  }
}

ACTOR PsyduckEnergySmall : Ammo 
{
  Scale 0.2
  Radius 4
  Height 4
  Inventory.PickupMessage "$GOTCELL" // "Picked up an energy cell."
  Inventory.Amount 50
  Inventory.MaxAmount 50
  Ammo.BackpackAmount 50
  Ammo.BackpackMaxAmount 75
  Inventory.Icon "BAL3F0"
  Inventory.PickupSound "pickup/shell"
  States
  {
  Spawn:
    Goto Death
  Death:
    BAL3 E 4 
    Stop
  }
}

ACTOR PsyduckBall
{
  Radius 4
  Height 6
  Speed 25
  Scale 0.7
  FastSpeed 25
  Damage 1
  DamageType PsyduckGrenadeDamage
  Projectile
  +RANDOMIZE
  +BOUNCEONWALLS
  +BOUNCEONFLOORS
  +BOUNCEONCEILINGS
  +RIPPER
  +FORCEXYBILLBOARD
  +BRIGHT
  RenderStyle Add
  Alpha 1
  SeeSound "imp/attack"
  DeathSound "imp/shotx"
  States
  {
  Spawn:
    BAL2 AB 8
	BAL2 AB 10 
	BAL2 AB 12 
	BAL2 AB 14
	BAL2 AB 16
    Goto Death
  Death:
    BAL2 C 0 A_Explode(5,100)
    BAL2 CDE 0 A_SpawnProjectile("PsyduckShardSmall",random(-20, 20),1,random(-20, 20),0,0)
    BAL2 CDE 6 Bright
    Stop
  }
}

ACTOR PsyduckShard : PsyduckBall
{
  Scale 0.3
  Speed 50
  Damage 3
  DamageType PsyduckGrenadeDamage
  +BOUNCEONWALLS
  +BOUNCEONFLOORS
  +BOUNCEONCEILINGS
  -RIPPER

	States
	{
 	Spawn:
		BAL3 AB 6 Bright
		BAL3 AB 8 Bright
		BAL3 AB 10 Bright
		Goto Death1
	Death:
		BAL3 AA 0 A_SpawnProjectile("PsyduckShardSmallSlow",random(-50, 50),1,random(-50, 50),0,0)
		BAL3 ABCDE 4 Bright
		Stop
	Death1:
		BAL3 ABCDE 4 Bright
		Stop
	}
}

ACTOR PsyduckShardSmall : PsyduckShard
{
  Scale 0.2
  Speed 55
  Damage 3
  DamageType PsyduckGrenadeDamage
  +BOUNCEONWALLS
  +BOUNCEONFLOORS
  +BOUNCEONCEILINGS
  +RIPPER

	States
	{
 	Spawn:
		BAL4 AB 6 Bright
		BAL4 AB 8 Bright
		BAL4 AB 10 Bright
		Goto Death
	Death:
		BAL4 ABCDE 4 Bright
		Stop
	}
}

ACTOR PsyduckShardSmallSlow : PsyduckShardSmall
{
  Scale 0.2
  Speed 20
  Damage 1
  DamageType PsyduckGrenadeDamage

	States
	{
 	Spawn:
		BAL9 AB 6 Bright
		BAL9 AB 8 Bright
		BAL9 AB 10 Bright
		Goto Death
	Death:
		BAL9 ABCDE 4 Bright
		Stop
	}
}

ACTOR PsyduckExplosionBall : PsyduckBall
{
Scale 1.5

States
  {
  Spawn:
    BAL2 AB 8 Bright
	BAL2 AB 10 Bright
	BAL2 AB 12 Bright
	BAL2 AB 14 Bright
	BAL2 AB 16 Bright
    Goto Death
  Death:
    BAL2 C 0 A_Explode(5,100)
    BAL2 CDE 0 A_SpawnProjectile("PsyduckShardSmall",random(-20, 20),1,random(-20, 20),0,0)
    BAL2 CDE 6 Bright
    Stop
  }
}

ACTOR PsyduckExplosionBoom : PsyduckBall
{

Scale 2.5
Speed 0
DamageType PsyduckGrenadeDamage
Renderstyle Add
Alpha 1.5
+BRIGHT

States
  {
  Spawn:
    Goto Death
  Death:
    PSYE C 0 A_Explode(5,100)
    PSYE CCCCCCCCCCCC 1 A_SpawnProjectile("PsyduckBall",random(-20, 20),1,random(-20, 20),0,0)
	PSYE CCCCCCCCCCCC 1 A_SpawnProjectile("PsyduckBall",random(-20, 20),1,random(-20, 20),0,0)
	PSYE CCCCCCCCCCCC 1 A_SpawnProjectile("PsyduckBall",random(-20, 20),1,random(-20, 20),0,0)
	PSYE DE 16
    Stop
  }

}

ACTOR PsyduckFist : Weapon
{
  Weapon.SelectionOrder 3700
  Weapon.Kickback 200
  Weapon.AmmoUse 1
  Weapon.AmmoGive 50
  Weapon.AmmoType "PsyduckEnergySmall"
  Weapon.AmmoUse2 15
  Weapon.AmmoGive2 5
  Weapon.AmmoType2 "PsyduckEnergy"
  Weapon.BobSpeed 1.9
  Weapon.BobStyle Smooth
  Inventory.Icon "PSYDJ2J8"
  +WEAPON.MELEEWEAPON
  +WEAPON.NO_AUTO_SWITCH
  +INVENTORY.UNDROPPABLE
  States
  {
  Ready:
    TNT1 A 1 A_WeaponReady(WRF_NOSWITCH)
    Loop
  Deselect:
    TNT1 A 1 A_Lower(24)
    Goto Ready
  Select:
    TNT1 A 1 A_Raise
    Loop
  FireMinipackCheck:
	TNT1 A 0 A_JumpIf(GetCVar("psyduck_items")==1,"FireMinipackCheck2")
	Goto Fire2
  FireMinipackCheck2:
	TNT1 A 0 A_JumpIfInventory("PsyduckMinipackActivatedCheck", 1, "FireMinipackGive")
	TNT1 A 0 A_Jump(4,"FireMinipackActivator")
	Goto Fire2
  FireMinipackActivator:
	TNT1 A 0 A_JumpIfInventory("PsyduckMinipackActivator", 1, "Fire")
	TNT1 A 0 A_GiveInventory("PsyduckMinipackActivator",1)
	Goto Fire2
  FireMinipackGive:
	TNT1 A 0 A_GiveInventory("PsyduckMinipackActivated",1)
	Goto Fire2
  FireMultiplierCheck:
	TNT1 A 0 A_Jump(1,"FireMultiplierGive")
	TNT1 A 0 A_Jump(6,"FireMinipackCheck")
	Goto Fire2
  FireMultiplierGive:
	TNT1 A 0 A_GiveInventory("PsyduckX2Small",1)
	TNT1 A 0 A_TakeInventory("PsyduckX2Small_NotActivated",1)
	Goto Fire2
  Fire:
	TNT1 A 0 A_JumpIfInventory("PsyduckX2Small_NotActivated",1,"FireMultiplierCheck")
	TNT1 A 0 A_Jump(8,"FireMinipackCheck")
	Goto Fire2
  Fire2:
	TNT1 A 0 A_FireBullets(0,0,1,0,"PsyPuff",0)
	TNT1 A 0 A_JumpIfHealthLower(25,"Deselect")
	TNT1 A 0 A_JumpIfInventory("PsyduckX2Big_Activated",1,"Fire2_X2")
	TNT1 A 1
	TNT1 A 0 A_StartSound("psyduck/attacking",1,0,1.5)
    TNT1 A 2 A_CustomPunch(7)
	TNT1 A 0 A_FireProjectile("PsyduckShard",random(-2, 2),1,random(-2, 2),5,0)
	TNT1 A 0 A_GiveInventory("PsyduckEnergy",1)
    TNT1 A 4
    TNT1 A 5 A_ReFire
    Goto Ready
  Fire2_X2:
    TNT1 A 0 A_FireBullets(0,0,1,0,"PsyPuff",0)
	TNT1 A 0 A_JumpIfHealthLower(25,"Deselect")
	TNT1 A 1
	TNT1 A 0 A_StartSound("psyduck/attacking",1,0,1.5)
    TNT1 A 2 A_CustomPunch(7)
	TNT1 A 0 A_FireProjectile("PsyduckShard",random(-2, 2),1,random(-2, 2),5,0)
	TNT1 A 0 A_GiveInventory("PsyduckEnergy",2)
    TNT1 A 4
    TNT1 A 5 A_ReFire
    Goto Ready
  AltFireMinipackCheck:
	TNT1 A 0 A_JumpIf(GetCVar("psyduck_item")==1,"AltFireMinipackGive")
	Goto AltFire2
  AltFireMinipackCheck2:
	TNT1 A 0 A_JumpIfInventory("PsyduckMinipackActivatedCheck", 1, "AltFireMinipackGive")
	TNT1 A 0 A_Jump(25,"AltFireMinipackActivator")
	Goto AltFire2
  AltFireMinipackActivator:
	TNT1 A 0 A_JumpIfInventory("PsyduckMinipackActivator", 1, "AltFire2")
	TNT1 A 0 A_GiveInventory("PsyduckMinipackActivator",1)
	Goto Fire
  AltFireMinipackGive:
	TNT1 A 0 A_GiveInventory("PsyduckMinipackActivated",1)
	Goto AltFire2
  AltFireMinipack:
	TNT1 A 0 A_GiveInventory("PsyduckMinipack",1)
	Goto AltFire2
  AltFireMultiplierCheck:
	TNT1 A 0 A_Jump(15,"AltFireMultiplierGive")
	TNT1 A 0 A_Jump(62,"AltFireMinipackCheck")
	Goto AltFire2
  AltFireMultiplierGive:
	TNT1 A 0 A_GiveInventory("PsyduckX2Big",1)
	TNT1 A 0 A_TakeInventory("PsyduckX2Big_NotActivated",1)
	Goto AltFire2
  AltFire:
    TNT1 A 0 A_JumpIfInventory("PsyduckX2Big_NotActivated",1,"AltFireMultiplierCheck")
	TNT1 A 0 A_Jump(150,"AltFireMinipackCheck")
	Goto AltFire2
  AltFire2:
    TNT1 A 0 A_FireBullets(0,0,1,0,"PsyPuff",0)
	TNT1 A 0 A_JumpIfHealthLower(25,"Deselect")
	TNT1 A 0 A_JumpIfInventory("PsyduckX2Small_Activated",1,"AltFire2_X2")
	TNT1 A 6
	TNT1 A 0 A_DamageSelf(5)
	TNT1 A 0 A_GiveInventory("PsyduckEnergySmall",6)
	TNT1 A 0 A_StartSound("psyduck/attacking",1,0,1.5)
    TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),2)
	TNT1 A 0 A_StartSound("psyduck/hurt",3,CHANF_OVERLAP)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),1)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),3)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 0 A_StartSound("psyduck/hurt",3,CHANF_OVERLAP)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),2)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),1)
	TNT1 A 0 A_StartSound("psyduck/hurt",3,CHANF_OVERLAP)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),3)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),2)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),1)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),3)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),2)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),1)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),3)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),2)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),1)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),3)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),2)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),1)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),3)
    TNT1 A 3
    TNT1 A 3 
    TNT1 A 3 A_ReFire
	Goto Ready
  AltFire2_X2:
    TNT1 A 0 A_FireBullets(0,0,1,0,"PsyPuff",0)
	TNT1 A 0 A_JumpIfHealthLower(25,"Deselect")
	TNT1 A 6
	TNT1 A 0 A_DamageSelf(5)
	TNT1 A 0 A_GiveInventory("PsyduckEnergySmall",12)
	TNT1 A 0 A_StartSound("psyduck/attacking",1,0,1.5)
    TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),2)
	TNT1 A 0 A_StartSound("psyduck/hurt",3,CHANF_OVERLAP)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),1)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),3)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 0 A_StartSound("psyduck/hurt",3,CHANF_OVERLAP)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),2)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),1)
	TNT1 A 0 A_StartSound("psyduck/hurt",3,CHANF_OVERLAP)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),3)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),2)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),1)
	TNT1 A 1 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),3)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),2)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),1)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),3)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),2)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),1)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),3)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),2)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),1)
	TNT1 A 2 A_FireProjectile("PsyduckBall",random(-17, 17),1,3,random(-12, 12),3)
    TNT1 A 3
    TNT1 A 3 
    TNT1 A 3 A_ReFire
	Goto Ready
  }
}

ACTOR PsyPuff : BulletPuff
{
  States
  {
  Spawn:
    TNT1 A 1
  Melee:
    TNT1 A 0
    Stop
  }
}