ACTOR PsyduckX2Small : CustomInventory
{
  Inventory.Icon "X2ENA0"
  Inventory.PickupSound "misc/p_pkup"
  Inventory.UseSound "misc/p_pkup"
  Inventory.Amount 1
  Inventory.MaxAmount 1
  Inventory.InterHubAmount 1
  Inventory.PickupMessage "Picked up a primary energy regen multiplier!"
  -INVENTORY.AUTOACTIVATE
  +INVENTORY.INVBAR
  +INVENTORY.HUBPOWER
  States
  
  {
  Spawn:
	X2EN A -1
	Stop
  Pickup:
	X2EN A 0 A_Print("\cnYou received the primary energy regen multiplier!")
	Stop
  Use:
	X2EN A 0 A_GiveInventory("PsyduckX2Small_Activated",1)
	X2EN A 0 A_Print("\cnx2 Primary Energy")
  }
}

ACTOR PsyduckX2Small_NotActivated : CustomInventory
{

  Inventory.Icon "X2ENA0"
  Inventory.Amount 1
  Inventory.MaxAmount 1
  Inventory.InterHubAmount 1
  -INVENTORY.AUTOACTIVATE
  -INVENTORY.INVBAR
  +INVENTORY.HUBPOWER
  +INVENTORY.UNDROPPABLE
  States
  {
  Spawn:
	X2EN A -1
	Stop
  Use:
	X2EN A 0 A_Print("You shouldn't see this print!")
	Stop
  Pickup:
	X2EN A 0 A_Print("")
	Stop
  Drop:
	SPAK A -1
	Stop
  }
}

ACTOR PsyduckX2Small_Activated : CustomInventory
{

  Inventory.Icon "X2ENA0"
  Inventory.Amount 1
  Inventory.MaxAmount 1
  Inventory.InterHubAmount 1
  -INVENTORY.AUTOACTIVATE
  -INVENTORY.INVBAR
  +INVENTORY.HUBPOWER
  +INVENTORY.UNDROPPABLE
  States
  {
  Spawn:
	X2EN A -1
	Stop
  Use:
	X2EN A 0 A_Print("You shouldn't see this print!")
	Stop
  Pickup:
	X2EN A 0 A_Print("")
	Stop
  Drop:
	SPAK A -1
	Stop
  }
}

ACTOR PsyduckX2Big : CustomInventory
{
  Inventory.Icon "X2ENB0"
  Inventory.PickupSound "misc/p_pkup"
  Inventory.UseSound "misc/p_pkup"
  Inventory.Amount 1
  Inventory.MaxAmount 1
  Inventory.InterHubAmount 1
  Inventory.PickupMessage "Picked up a secondary energy multiplier!"
  -INVENTORY.AUTOACTIVATE
  +INVENTORY.INVBAR
  +INVENTORY.HUBPOWER
  States
  
  {
  Spawn:
	X2EN B -1
	Stop
  Pickup:
	X2EN B 0 A_Print("\cgYou received the secondary energy multiplier!")
	Stop
  Use:
	X2EN B 0 A_GiveInventory("PsyduckX2Big_Activated",1)
	X2EN B 0 A_Print("\cgx2 Secondary Energy")
  }
}

ACTOR PsyduckX2Big_NotActivated : CustomInventory
{

  Inventory.Icon "X2ENB0"
  Inventory.Amount 1
  Inventory.MaxAmount 1
  Inventory.InterHubAmount 1
  -INVENTORY.AUTOACTIVATE
  -INVENTORY.INVBAR
  +INVENTORY.HUBPOWER
  +INVENTORY.UNDROPPABLE
  States
  {
  Spawn:
	X2EN B -1
	Stop
  Use:
	X2EN B 0 A_Print("You shouldn't see this print!")
	Stop
  Pickup:
	X2EN B 0 A_Print("")
	Stop
  Drop:
	SPAK B -1
	Stop
  }
}

ACTOR PsyduckX2Big_Activated : CustomInventory
{

  Inventory.Icon "X2ENB0"
  Inventory.Amount 1
  Inventory.MaxAmount 1
  Inventory.InterHubAmount 1
  -INVENTORY.AUTOACTIVATE
  -INVENTORY.INVBAR
  +INVENTORY.HUBPOWER
  +INVENTORY.UNDROPPABLE
  States
  {
  Spawn:
	X2EN B -1
	Stop
  Use:
	X2EN B 0 A_Print("You shouldn't see this print!")
	Stop
  Pickup:
	X2EN B 0 A_Print("")
	Stop
  Drop:
	SPAK B -1
	Stop
  }
}

ACTOR PsyduckMinipackActivator : CustomInventory
{
  Inventory.Icon "SPAKB0"
  Inventory.PickupSound "misc/p_pkup"
  Inventory.UseSound "misc/p_pkup"
  Inventory.Amount 1
  Inventory.MaxAmount 1
  Inventory.InterHubAmount 1
  Inventory.PickupMessage "Picked up a minipack!"
  -INVENTORY.AUTOACTIVATE
  +INVENTORY.INVBAR
  +INVENTORY.HUBPOWER
  States
  {
  Spawn:
    SPAK A -1
    Stop
  Pickup:
	SPAK A 0 A_Print("+1 Minipack Activator")
	Stop
  Use:
	SPAK A 0 A_GiveInventory("PsyduckMinipack",1)
	SPAK A 0 A_GiveInventory("PsyduckMinipackActivatedCheck")
	SPAK A 0 A_Print("Minipacks activated!")
	Stop
  Drop:
	SPAK A -1
	Stop
  }
}

ACTOR PsyduckMinipackActivatedCheck : CustomInventory
{
  Inventory.Icon "SPAKB0"
  Inventory.Amount 1
  Inventory.MaxAmount 1
  Inventory.InterHubAmount 1
  -INVENTORY.AUTOACTIVATE
  -INVENTORY.INVBAR
  +INVENTORY.HUBPOWER
  +INVENTORY.UNDROPPABLE
  States
  {
  Spawn:
	SPAK B -1
	Stop
  Use:
	SPAK B 0 A_Print("You shouldn't see this print!")
	Stop
  Pickup:
	SPAK B 0 A_Print("")
	Stop
  Drop:
	SPAK A -1
	Stop
  }
}

ACTOR PsyduckMinipack : CustomInventory
{
  Inventory.Icon "SPAKA0"
  Inventory.PickupSound "misc/p_pkup"
  Inventory.UseSound "misc/p_pkup"
  Inventory.MaxAmount 3
  Inventory.InterHubAmount 3
  Inventory.PickupMessage "Picked up a minipack!"
  -INVENTORY.AUTOACTIVATE
  +INVENTORY.INVBAR
  +INVENTORY.HUBPOWER
  States
  {
  Spawn:
    SPAK A -1
    Stop
  Pickup:
	SPAK A 0 A_Print("+1 Minipack")
	Stop
  Use:
	SPAK A 0 A_GiveInventory("PsyduckMinipackActivated",1)
	Stop
  Drop:
	SPAK A -1
	Stop
  }
}

ACTOR PsyduckMinipackActivated : CustomInventory
{
  Inventory.Icon "SPAKA0"
  Inventory.PickupSound "misc/p_pkup"
  Inventory.UseSound "misc/p_pkup"
  Inventory.MaxAmount 3
  Inventory.InterHubAmount 3
  Inventory.PickupMessage "Picked up a minipack!"
  -INVENTORY.AUTOACTIVATE
  +INVENTORY.INVBAR
  +INVENTORY.HUBPOWER
  States
  {
  Spawn:
    SPAK A -1
    Stop
  PickUp:
	SPAK A 0 A_Jump(random(1,6),"Pickup_DarkPsyduck")
	SPAK A 0 A_Jump(random(2,4),"Pickup_FloppaCube")
	SPAK A 0 A_Jump(random(4,6),"Pickup_FirestormGrenade")
	SPAK A 0 A_Jump(random(4,6),"Pickup_FirestormGrenadeKey")
	SPAK A 0 A_Jump(random(6,9),"Pickup_SelfDetonator")
	SPAK A 0 A_Jump(random(15,35),"Pickup_AcidCloudsGrenade")
	SPAK A 0 A_Jump(random(75,210),"Pickup_ParticleShotgun")
	SPAK A 0 A_Jump(random(50,220),"Pickup_LightningGrenade")
	Goto UseAllAmmo
  UseAllAmmo:
	Goto PickUp
  /////Dark Psyduck/////
  Pickup_DarkPsyduck:
	SPAK A 0 A_JumpIfInventory("DarkPsyduckMorpher", 1, "UseAllAmmo")
	SPAK A 0 A_GiveInventory("DarkPsyduckMorpher",1)
	SPAK A 0 A_Print("\cuYou feel \cgsomething \cutwitching inside your head.")
	Stop
  /////Floppa Cube/////
  Pickup_FloppaCube:
	SPAK A 0 A_JumpIfInventory("PsyduckFloppaCubeSpawner", 1, "UseAllAmmo")
	SPAK A 0 A_GiveInventory("PsyduckFloppaCubeSpawner",1)
	SPAK A 0 A_Print("\cbTime to flop.")
	Stop
  /////Firestorm GRENADE/////
  Pickup_FirestormGrenadeKey:
	SPAK A 0 A_JumpIfInventory("PsyduckFirestormGrenadeKey", 1, "Pickup_FirestormGrenade")
	SPAK A 0 A_GiveInventory("PsyduckFirestormGrenadeKey",1)
	SPAK A 0 A_Print("\cu+1 Firestorm Grenade Key!")
	Stop
  Pickup_FirestormGrenade:
	SPAK A 0 A_JumpIfInventory("PsyduckFirestormGrenadeSealed", 1, "UseAllAmmo")
	SPAK A 0 A_JumpIfInventory("PsyduckFirestormGrenade", 1, "Pickup_FirestormGrenadeKey")
	SPAK A 0 A_GiveInventory("PsyduckFirestormGrenadeSealed",1)
	SPAK A 0 A_Print("\cx+1 Firestorm Grenade!")
	Stop
  /////LIGHTNING GRENADE/////
  Pickup_LightningGrenade:
	SPAK A 0 A_JumpIfInventory("PsyduckLightningGrenade", 12, "UseAllAmmo")
	SPAK A 0 A_JumpIfInventory("PsyduckLightningGrenade", 11, "Use1LG")
	SPAK A 0 A_JumpIfInventory("PsyduckLightningGrenade", 10, "Use2LG")
	SPAK A 0 A_GiveInventory("PsyduckLightningGrenade",3)
	SPAK A 0 A_Print("\cy+3 Lightning Grenades!")
	Stop
  Use2LG:
	SPAK A 0 A_GiveInventory("PsyduckLightningGrenade", 2)
	SPAK A 0 A_TakeInventory("PsyduckMinipack",1)
	SPAK A 0 A_Print("\cy+2 Lightning Grenades!")
	Stop
  Use1LG:
	SPAK A 0 A_GiveInventory("PsyduckLightningGrenade", 1)
	SPAK A 0 A_TakeInventory("PsyduckMinipack",1)
	SPAK A 0 A_Print("\cy+1 Lightning Grenade!")
	Stop
  /////ACID CLOUDS GRENADE/////
  Pickup_AcidCloudsGrenade:
	SPAK A 0 A_JumpIfInventory("PsyduckAcidCloudsGrenade", 4, "UseAllAmmo")
	SPAK A 0 A_GiveInventory("PsyduckAcidCloudsGrenade",1)
	SPAK A 0 A_Print("\cd+1 Acid Clouds Grenade!")
	Stop
  /////PARTICLE SHOTGUN/////
  Pickup_ParticleShotgun:
	SPAK A 0 A_JumpIfInventory("PsyduckParticleShotgun", 45, "Use0PPS")
	SPAK A 0 A_JumpIfInventory("PsyduckParticleShotgun", 44, "Use1PPS")
	SPAK A 0 A_JumpIfInventory("PsyduckParticleShotgun", 43, "Use2PPS")
	SPAK A 0 A_JumpIfInventory("PsyduckParticleShotgun", 42, "Use3PPS")
	SPAK A 0 A_JumpIfInventory("PsyduckParticleShotgun", 41, "Use4PPS")
	SPAK A 0 A_JumpIfInventory("PsyduckParticleShotgun", 40, "Use5PPS")
	SPAK A 0 A_GiveInventory("PsyduckParticleShotgun",6)
	SPAK A 0 A_Print("\cf+6 Particle Shotgun!")
	Stop
  Use5PPS:
	SPAK A 0 A_GiveInventory("PsyduckParticleShotgun", 5)
	SPAK A 0 A_TakeInventory("PsyduckMinipack",1)
	SPAK A 0 A_Print("\cf+5 Particle Shotgun!")
	Stop
  Use4PPS:
	SPAK A 0 A_GiveInventory("PsyduckParticleShotgun",4)
	SPAK A 0 A_TakeInventory("PsyduckMinipack",1)
	SPAK A 0 A_Print("\cf+4 Particle Shotgun!")
	Stop
  Use3PPS:
	SPAK A 0 A_GiveInventory("PsyduckParticleShotgun",3)
	SPAK A 0 A_TakeInventory("PsyduckMinipack",1)
	SPAK A 0 A_Print("\cf+3 Particle Shotgun!")
	Stop
  Use2PPS:
	SPAK A 0 A_GiveInventory("PsyduckParticleShotgun",2)
	SPAK A 0 A_TakeInventory("PsyduckMinipack",1)
	SPAK A 0 A_Print("\cf+2 Particle Shotgun!")
	Stop
  Use1PPS:
	SPAK A 0 A_GiveInventory("PsyduckParticleShotgun",1)
	SPAK A 0 A_TakeInventory("PsyduckMinipack",1)
	SPAK A 0 A_Print("\cf+1 Particle Shotgun!")
	Stop
  Use0PPS:
	SPAK A 0 A_GiveInventory("PsyduckMinipack",1)
	Goto Spawn
  /////SELF DETONATOR/////
  Pickup_SelfDetonator:
	SPAK A 0 A_JumpIfInventory("PsyduckSelfDetonator", 2, "UseAllAmmo")
	SPAK A 0 A_GiveInventory("PsyduckSelfDetonator",1)
	SPAK A 0 A_Print("\cj+1 Self Detonator!")
	Stop
  Drop:
	SPAK A -1
	Stop
  }
}

ACTOR PsyduckParticleShotgunParticle
{
  Radius 4
  Height 6
  Speed 30
  Scale 0.4
  FastSpeed 30
  Damage 2
  Projectile
  +RANDOMIZE
  +BOUNCEONWALLS
  +BOUNCEONFLOORS
  +BOUNCEONCEILINGS
  +FORCEXYBILLBOARD
  +BRIGHT
  RenderStyle Add
  Alpha 1
  SeeSound "imp/attack"
  DeathSound "imp/shotx"
  States
  {
  Spawn:
    SAL4 AB 8
	SAL4 AB 10 
	SAL4 AB 12 
    Goto Death
  Death:
    SAL4 EFG 0 A_SpawnProjectile("PsyduckParticleShotgunParticleSmall",random(-20, 20),random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
    SAL4 EFG 6 Bright
    Stop
  }
}



ACTOR PsyduckParticleShotgunParticleSmall : PsyduckParticleShotgunParticle
{
  Scale 0.2
  Speed 40
  Damage 1
  +BOUNCEONWALLS
  +BOUNCEONFLOORS
  +BOUNCEONCEILINGS
  +RIPPER

	States
	{
 	Spawn:
		SAL4 CD 6 Bright
		SAL4 CD 8 Bright
		SAL4 CD 10 Bright
		Goto Death
	Death:
		SAL4 HIJ 4 Bright
		Stop
	}
}

ACTOR PsyduckParticleShotgun : CustomInventory
{
  Inventory.Icon "SAL4A0"
  Inventory.PickupSound "misc/p_pkup"
  Inventory.UseSound "misc/p_pkup"
  Inventory.Amount 6
  Inventory.MaxAmount 45
  Inventory.InterHubAmount 45
  Inventory.PickupMessage "Picked up a Particle Shotgun!"
  Inventory.RespawnTics 105
  -INVENTORY.AUTOACTIVATE
  +INVENTORY.INVBAR
  +INVENTORY.HUBPOWER
  States
  {
  
  Spawn:
	SAL4 KL 5 Bright
	SAL4 KL 5 Bright
	Loop
  Pickup:
	SAL4 A 0 A_Print("")
	Stop
  Use:
	SAL4 A 0 A_FireProjectile("PsyduckParticleShotgunParticle",random(-10, 10),1,3,random(-10, 10),0)
	SAL4 A 0 A_FireProjectile("PsyduckParticleShotgunParticle",random(-10, 10),1,3,random(-10, 10),0)
	SAL4 A 0 A_FireProjectile("PsyduckParticleShotgunParticle",random(-10, 10),1,3,random(-10, 10),0)
	SAL4 A 0 A_FireProjectile("PsyduckParticleShotgunParticle",random(-10, 10),1,3,random(-10, 10),0)
	Stop
  Drop:
	SAL4 A -1
	Stop
  }

}

DamageType PsyduckGrenadeDamage {}

ACTOR PsyduckFirestormGrenadeSealed : CustomInventory
{
  Inventory.Icon "IGRSA0"
  Inventory.PickupSound "misc/p_pkup"
  Inventory.UseSound "misc/p_pkup"
  Inventory.Amount 1
  Inventory.MaxAmount 1
  Inventory.InterHubAmount 1
  Inventory.PickupMessage "Picked up a sealed Firestorm Grenade!"
  -INVENTORY.AUTOACTIVATE
  +INVENTORY.INVBAR
  +INVENTORY.HUBPOWER
  States
  {
  
  Spawn:
	IGRS A 5 Bright
	IGRS B 5 Bright
	Loop
  Pickup:
	IGRS A 0 A_Print("")
	Stop
  Use:
	IGRS A 0 A_JumpIfInventory("PsyduckFirestormGrenadeKey",1,"UseUnsealed")
	IGRS A 0 ACS_NamedExecute("PFGReg")
	Stop
  UseUnsealed:
	IGRS A 0 A_GiveInventory("PsyduckFirestormGrenade",1)
	IGRS A 0 A_TakeInventory("PsyduckFirestormGrenadeKey",1)
	Stop
  Drop:
	IGRS A -1
	Stop
  }
}

ACTOR PsyduckFirestormGrenadeKey : CustomInventory
{

  Inventory.Icon "FKEYA0"
  Inventory.PickupSound "misc/p_pkup"
  Inventory.UseSound "misc/p_pkup"
  Inventory.Amount 1
  Inventory.MaxAmount 1
  Inventory.InterHubAmount 1
  Inventory.PickupMessage "Picked up a Firestorm Grenade key!"
  -INVENTORY.AUTOACTIVATE
  +INVENTORY.INVBAR
  +INVENTORY.HUBPOWER
  States
  {
  
  Spawn:
	FKEY A -1
	Stop
  Pickup:
	FKEY A 0 A_Print("")
	Stop
  Use:
	FKEY A 0 A_JumpIfInventory("PsyduckFirestormGrenadeSealed",1,"UseUnsealer")
	FKEY A 0 ACS_NamedExecute("PsyduckKeyRegen")
	Stop
  UseUnsealer:
	FKEY A 0 A_TakeInventory("PsyduckFirestormGrenadeSealed",1)
	FKEY A 0 A_GiveInventory("PsyduckFirestormGrenade",1)
	Stop
  Drop:
	FKEY A -1
	Stop
  }
}

ACTOR PsyduckFirestormGrenade : CustomInventory
{
  Inventory.Icon "IGREA0"
  Inventory.PickupSound "misc/p_pkup"
  Inventory.UseSound "misc/p_pkup"
  Inventory.Amount 1
  Inventory.MaxAmount 1
  Inventory.InterHubAmount 1
  Inventory.PickupMessage "Picked up a Firestorm Grenade!"
  -INVENTORY.AUTOACTIVATE
  +INVENTORY.INVBAR
  +INVENTORY.HUBPOWER
  States
  {
  
  Spawn:
	IGRE C 5 Bright
	IGRE D 5 Bright
	Loop
  Pickup:
	IGRE A 0 A_Print("\cgFirestorm Grenade unsealed!")
	Stop
  Use:
	IGRE A 0 A_FireProjectile("PsyduckFirestormGrenadeParticle1",0,1,3,12,0)
	Stop
  Drop:
	IGRE A -1
	Stop
  }
}

ACTOR PsyduckFirestormGrenadeParticle1 : PsyduckParticleShotgunParticle
{
  Radius 4
  Height 6
  Speed 25
  Scale 0.5
  FastSpeed 25
  Damage 25
  DamageType PsyduckGrenadeDamage
  Gravity 0.25
  BounceType "Doom"
  Projectile
  +RANDOMIZE
  +BOUNCEONWALLS
  +BOUNCEONFLOORS
  +BOUNCEONCEILINGS
  +FORCEXYBILLBOARD
  -NOGRAVITY
  +DEHEXPLOSION
  +GRENADETRAIL
  -RIPPER
  +BRIGHT
  RenderStyle Add
  Alpha 1
  SeeSound "imp/attack"
  DeathSound "imp/shotx"
  States
  {
  Spawn:
    IGRE AB 8
	IGRE AB 12 
	IGRE AB 12
	IGRE AB 12
    Goto Death
  Death:
    SGRE AAA 0 A_SpawnProjectile("PsyduckFirestormGrenadeParticle2",random(-20, 20),1,random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
	SGRE BBB 0 A_SpawnProjectile("PsyduckFirestormGrenadeParticle2",random(-20, 20),1,random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
	SGRE AAA 0 A_SpawnProjectile("PsyduckFirestormGrenadeParticle2",random(-20, 20),1,random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
	SGRE BBB 0 A_SpawnProjectile("PsyduckFirestormGrenadeParticle2",random(-20, 20),1,random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
	SGRE AAA 0 A_SpawnProjectile("PsyduckFirestormGrenadeParticle2",random(-20, 20),1,random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
	SGRE BBB 0 A_SpawnProjectile("PsyduckFirestormGrenadeParticle2",random(-20, 20),1,random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
    IGRP CDE 6 Bright
    Stop
  }
}

ACTOR PsyduckFirestormGrenadeParticle2 : PsyduckParticleShotgunParticle
{
  Radius 3
  Height 4
  Speed 30
  Scale 0.5
  FastSpeed 35
  Damage 25
  DamageType PsyduckGrenadeDamage
  Gravity 0.20
  -RIPPER
  SeeSound "imp/attack"
  DeathSound "imp/shotx"
  States
  {
  Spawn:
    SGRE AB 8
	SGRE AB 10 
	SGRE AB 12 
	SGRE AB 8
	SGRE AB 10 
	SGRE AB 12 
    Goto Death
  Death:
    IGRP C 0 A_SpawnProjectile("PsyduckFirestormGrenadeExplosionBoom",random(-20, 20),1,random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
	IGRP C 0 A_SpawnProjectile("PsyduckFirestormGrenadeExplosionBoom",random(-20, 20),1,random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
	IGRP C 0 A_SpawnProjectile("PsyduckFirestormGrenadeExplosionBoom",random(-20, 20),1,random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
	IGRP C 0 A_SpawnProjectile("PsyduckFirestormGrenadeExplosionBoom",random(-20, 20),1,random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
	IGRP C 0 A_SpawnProjectile("PsyduckFirestormGrenadeExplosionBoom",random(-20, 20),1,random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
    IGRP CDE 6 Bright
    Stop
  }
}

ACTOR PsyduckFirestormGrenadeParticleSmall : PsyduckParticleShotgunParticleSmall
{
  Radius 4
  Height 6
  Scale 0.4
  Speed 40
  Damage 3
  DamageType PsyduckGrenadeDamage
  +BOUNCEONWALLS
  +BOUNCEONFLOORS
  +BOUNCEONCEILINGS
  +RIPPER

	States
	{
 	Spawn:
		IGRP AB 6 Bright
		IGRP AB 8 Bright
		IGRP AB 10 Bright
		Goto Death
	Death:
		IGRP CDE 4 Bright
		Stop
	}
}

ACTOR PsyduckFirestormGrenadeExplosionBoom : PsyduckExplosionBoom
{

Scale 1.9
Speed 0
Renderstyle Add
Alpha 1.5
+BRIGHT

States
  {
  Spawn:
    Goto Death
  Death:
    BAL2 C 0 A_Explode(75,300,False)
	BAL2 C 0 A_Quake(7,60,0,500)
    BAL2 CCCCCC 1 A_SpawnProjectile("PsyduckFirestormGrenadeParticleSmall",random(-20, 20),1,random(-30, 30),0,0)
	BAL2 CCCCCC 1 A_SpawnProjectile("PsyduckFirestormGrenadeParticleSmall",random(-20, 20),1,random(-30, 30),0,0)
	BAL2 CCCCCC 1 A_SpawnProjectile("PsyduckFirestormGrenadeParticleSmall",random(-20, 20),1,random(-30, 30),0,0)
	BAL2 DE 25
    Stop
  }

}

ACTOR PsyduckLightningGrenade : CustomInventory
{
  Inventory.Icon "LGREA0"
  Inventory.PickupSound "misc/p_pkup"
  Inventory.UseSound "misc/p_pkup"
  Inventory.Amount 1
  Inventory.MaxAmount 12
  Inventory.InterHubAmount 12
  Inventory.PickupMessage "Picked up a Lightning Grenade!"
  -INVENTORY.AUTOACTIVATE
  +INVENTORY.INVBAR
  +INVENTORY.HUBPOWER
  States
  {
  
  Spawn:
	LGRE A 5 Bright
	LGRE B 5 Bright
	Loop
  Pickup:
	LGRE A 0 A_Print("")
	Stop
  Use:
	LGRE A 0 A_FireProjectile("PsyduckLightningGrenadeParticle",0,1,3,12,0)
	Stop
  Drop:
	LGRE A -1
	Stop
  }
}

ACTOR PsyduckLightningGrenadeParticle : PsyduckParticleShotgunParticle
{
  Radius 4
  Height 6
  Speed 20
  Scale 0.4
  FastSpeed 25
  Damage 15
  DamageType PsyduckGrenadeDamage
  Gravity 0.25
  BounceType "Doom"
  Projectile
  +RANDOMIZE
  +BOUNCEONWALLS
  +BOUNCEONFLOORS
  +BOUNCEONCEILINGS
  +FORCEXYBILLBOARD
  -NOGRAVITY
  +DEHEXPLOSION
  +GRENADETRAIL
  +RIPPER
  +BRIGHT
  RenderStyle Add
  Alpha 1
  SeeSound "imp/attack"
  DeathSound "imp/shotx"
  States
  {
  Spawn:
    LGRE AB 8
	LGRE AB 10 
	LGRE AB 12 
	LGRE AB 8
	LGRE AB 10 
	LGRE AB 12 
    Goto Death
  Death:
    LGRP C 0 A_SpawnProjectile("PsyduckLightningGrenadeExplosionBoom",random(-20, 20),1,random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
    LGRP CDE 6 Bright
    Stop
  }
}

ACTOR PsyduckLightningGrenadeParticleSmall : PsyduckParticleShotgunParticleSmall
{
  Scale 0.3
  Speed 35
  Damage 2
  DamageType PsyduckGrenadeDamage
  +BOUNCEONWALLS
  +BOUNCEONFLOORS
  +BOUNCEONCEILINGS
  +FRIENDLY
  -RIPPER

	States
	{
 	Spawn:
		LGRP AB 6 Bright
		LGRP AB 8 Bright
		LGRP AB 10 Bright
		Goto Death
	Death:
		LGRP CDE 4 Bright
		Stop
	}
}

ACTOR PsyduckLightningGrenadeExplosionBoom : PsyduckExplosionBoom
{

Scale 1.7
Speed 0
Renderstyle Add
Alpha 1.5
+BRIGHT

States
  {
  Spawn:
    Goto Death
  Death:
    LGEX A 0 A_Explode(125,200,False)
	LGEX A 0 A_Quake(4,60,0,500)
    LGEX AAAAAAAAAAAA 1 A_SpawnProjectile("PsyduckLightningGrenadeParticleSmall",random(-20, 20),1,random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
	LGEX AAAAAAAAAAAA 1 A_SpawnProjectile("PsyduckLightningGrenadeParticleSmall",random(-20, 20),1,random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
	LGEX AAAAAAAAAAAA 1 A_SpawnProjectile("PsyduckLightningGrenadeParticleSmall",random(-20, 20),1,random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
	LGEX BC 20
    Stop
  }

}

ACTOR PsyduckSelfDetonator : CustomInventory
{

  Inventory.Icon "SDETC0"
  Inventory.PickupSound "misc/p_pkup"
  Inventory.UseSound "misc/p_pkup"
  Inventory.MaxAmount 2
  Inventory.InterHubAmount 2
  Inventory.PickupMessage "Picked up a self detonator!"
  -INVENTORY.AUTOACTIVATE
  +INVENTORY.INVBAR
  +INVENTORY.HUBPOWER
  States
  {
  Spawn:
    SDET C -1
    Stop
  Pickup:
	SDET C 0 A_Print("\cj+1 Self Detonator")
	Stop
  Use:
	SDET C 0 ACS_NamedExecute("PsyduckDetonatorActivator")
	Stop
  Drop:
	SDET C -1
	Stop
  }
}

ACTOR PsyduckSelfDetonator_Activated : CustomInventory
{

  Inventory.Icon "SDETC0"
  Inventory.Amount 1
  Inventory.MaxAmount 1
  Inventory.InterHubAmount 1
  -INVENTORY.AUTOACTIVATE
  -INVENTORY.INVBAR
  +INVENTORY.HUBPOWER
  +INVENTORY.UNDROPPABLE
  States
  {
  Spawn:
	SDET C -1
	Stop
  Use:
	SDET C 0 A_Print("You shouldn't see this print!")
	Stop
  Pickup:
	SDET C 0 A_Print("")
	Stop
  Drop:
	SDET C -1
	Stop
  }
}

ACTOR PsyduckAcidCloudsGrenade : CustomInventory
{

  Inventory.Icon "AGREA0"
  Inventory.PickupSound "misc/p_pkup"
  Inventory.UseSound "misc/p_pkup"
  Inventory.Amount 1
  Inventory.MaxAmount 4
  Inventory.InterHubAmount 4
  Inventory.PickupMessage "Picked up an acid clouds grenade!"
  -INVENTORY.AUTOACTIVATE
  +INVENTORY.INVBAR
  +INVENTORY.HUBPOWER
  States
  {
  
  Spawn:
	AGRE A 5 Bright
	AGRE B 5 Bright
	Loop
  Pickup:
	AGRE A 0 A_Print("")
	Stop
  Use:
	AGRE A 0 A_FireProjectile("PsyduckAcidCloudsGrenadeParticle",0,1,3,12,0)
	Stop
  Drop:
	AGRE A -1
	Stop
  }

}

ACTOR PsyduckAcidCloudsGrenadeParticle : PsyduckParticleShotgunParticle
{
  Radius 4
  Height 6
  Speed 16
  Scale 0.3
  FastSpeed 15
  Damage 10
  DamageType PsyduckGrenadeDamage
  Gravity 0.25
  BounceType "Doom"
  Projectile
  +RANDOMIZE
  +BOUNCEONWALLS
  +BOUNCEONFLOORS
  +BOUNCEONCEILINGS
  +FORCEXYBILLBOARD
  -NOGRAVITY
  +DEHEXPLOSION
  +GRENADETRAIL
  +RIPPER
  +BRIGHT
  RenderStyle Add
  Alpha 1
  SeeSound "imp/attack"
  DeathSound "imp/shotx"
  States
  {
  Spawn:
    AGRE AB 8
	AGRE AB 10 
	AGRE AB 12 
	AGRE AB 8
	AGRE AB 18 
    Goto Death
  Death:
    AGRE C 0 A_SpawnProjectile("PsyduckAcidCloudsGrenadeExplosionBoom",random(-20, 20),1,random(-20, 20),0,0)
    AGRE CDE 6 Bright
    Stop
  }
}

ACTOR PsyduckAcidCloudsGrenadeExplosionBoom : PsyduckExplosionBoom
{

Scale 1.9
Speed 0
Renderstyle Add
Alpha 1
+BRIGHT

States
  {
  Spawn:
    Goto Death
  Death:
    AGRE C 0 A_Explode(25,200,False)
	AGRE C 0 A_Quake(4,60,0,500)
    AGRE DDDDDDDDDDDD 1 A_SpawnProjectile("PsyduckAcidCloudsGrenadeParticleSmall",random(-20, 20),random(0,1),random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
	AGRE DDDDDDDDDDDD 1 A_SpawnProjectile("PsyduckAcidCloudsGrenadeParticleSmall",random(-20, 20),random(0,1),random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
	AGRE DDDDDDDDDDDD 1 A_SpawnProjectile("PsyduckAcidCloudsGrenadeParticleSmall",random(-20, 20),random(0,1),random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
	AGRE DDDDDDDDDDDD 1 A_SpawnProjectile("PsyduckAcidCloudsGrenadeParticleSmall",random(-20, 20),random(0,1),random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
	AGRE DDDDDDDDDDDD 1 A_SpawnProjectile("PsyduckAcidCloudsGrenadeParticleSmall",random(-20, 20),random(0,1),random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
	AGRE DDDDDDDDDDDD 1 A_SpawnProjectile("PsyduckAcidCloudsGrenadeParticleSmall",random(-20, 20),random(0,1),random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
	AGRE IIIIIIIIIIII 1 A_SpawnProjectile("PsyduckAcidCloudsGrenadeParticleSmall",random(-20, 20),random(0,1),random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
	AGRE IIIIIIIIIIII 1 A_SpawnProjectile("PsyduckAcidCloudsGrenadeParticleSmall",random(-20, 20),random(0,1),random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
	AGRE IIIIIIIIIIII 1 A_SpawnProjectile("PsyduckAcidCloudsGrenadeParticleSmall",random(-20, 20),random(0,1),random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
	AGRE IIIIIIIIIIII 1 A_SpawnProjectile("PsyduckAcidCloudsGrenadeParticleSmall",random(-20, 20),random(0,1),random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
	AGRE IIIIIIIIIIII 1 A_SpawnProjectile("PsyduckAcidCloudsGrenadeParticleSmall",random(-20, 20),random(0,1),random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
	AGRE IIIIIIIIIIII 1 A_SpawnProjectile("PsyduckAcidCloudsGrenadeParticleSmall",random(-20, 20),random(0,1),random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
	AGRE IFG 12
	AGRE IFG 12
    Stop
  }

}

ACTOR PsyduckAcidCloudsGrenadeParticleSmall : PsyduckParticleShotgunParticle
{
  Radius 4
  Height 6
  Speed 14
  Scale 0.4
  FastSpeed 15
  Damage 2
  DamageType PsyduckGrenadeDamage
  Gravity 0.25
  BounceType "Doom"
  Projectile
  +RANDOMIZE
  +BOUNCEONWALLS
  +BOUNCEONFLOORS
  +BOUNCEONCEILINGS
  +FORCEXYBILLBOARD
  -NOGRAVITY
  +DEHEXPLOSION
  +GRENADETRAIL
  +RIPPER
  +BRIGHT
  +INVULNERABLE
  RenderStyle Add
  Alpha 1
  SeeSound "imp/attack"
  DeathSound "imp/shotx"
  States
  {
  Spawn:
    BAL7 AB 8
	BAL7 AB 10 
	BAL7 AB 12
	BAL7 A 0 A_Jump(175,"XDeath")
    Goto Death
  Death:
    AGRE C 0 A_SpawnItem("PsyduckAcidCloudsGrenadeCloud1")
	AGRE IFIF 12
	AGRE IFIF 12
	AGRE GFGF 12
	AGRE GFGF 12
	AGRE GFGF 12
    AGRE IGH 6 Bright
    Stop
  XDeath:
    AGRE C 0 A_SpawnItem("PsyduckAcidCloudsGrenadeCloud2")
	AGRE IFIF 12
	AGRE IFIF 12
	AGRE GFGF 12
	AGRE GFGF 12
	AGRE GFGF 12
    AGRE IGH 6 Bright
    Stop
  }
}

ACTOR PsyduckAcidCloudsGrenadeCloud1 : PsyduckExplosionBoom
{

Radius 5
Scale 2
Speed 0
Damage 1
DamageType PsyduckGrenadeDamage
Projectile
Renderstyle Add
Alpha 0.4
+INVULNERABLE
+BRIGHT

States
  {
  Spawn:
    AGRE CDCD 12
	AGRE CDCD 12
	AGRE CDCD 12
	AGRE CDCD 12
	AGRE CDCD 12
    Goto Death
  Death:
	AGRE CCDDEE 12
    Stop
  }

}

ACTOR PsyduckAcidCloudsGrenadeCloud2 : PsyduckExplosionBoom
{

Radius 5
Scale 2
Speed 0
Damage 2
DamageType PsyduckGrenadeDamage
Projectile
Renderstyle Add
Alpha 0.3
+INVULNERABLE
+BRIGHT

States
  {
  Spawn:
    AGRE IFGIFG 11
	AGRE IFGIFG 11
	AGRE IFGIFG 11
	AGRE IFGIFG 11
	AGRE IFGIFG 11
    Goto Death
  Death:
	AGRE FFGGHH 12
    Stop
  }

}

ACTOR PsyduckFloppaCubeSpawner : CustomInventory
{

  Inventory.Icon "GOSHA0"
  Inventory.PickupSound "misc/p_pkup"
  Inventory.UseSound "misc/p_pkup"
  Inventory.MaxAmount 1
  Inventory.InterHubAmount 1
  Inventory.PickupMessage "Picked up a Floppa cube!"
  -INVENTORY.AUTOACTIVATE
  +INVENTORY.INVBAR
  +INVENTORY.HUBPOWER
  
  States
  {
  Spawn:
	GOSH A -1
	Stop
  Use:
	SPAK A 0 A_FireProjectile("PsyduckFloppaCubeProjectile",0,1,3,0,0)
	Stop
  Drop:
	SPAK A -1
	Stop
  }
}

ACTOR PsyduckFloppaCubeProjectile : PsyduckParticleShotgunParticle
{
  Radius 4
  Height 6
  Speed 20
  Scale 1.2
  FastSpeed 25
  Damage 15
  DamageType PsyduckGrenadeDamage
  Gravity 0.25
  BounceType "Doom"
  Projectile
  +RANDOMIZE
  +BOUNCEONWALLS
  +BOUNCEONFLOORS
  +BOUNCEONCEILINGS
  +FORCEXYBILLBOARD
  -NOGRAVITY
  +DEHEXPLOSION
  +GRENADETRAIL
  -RIPPER
  +INVULNERABLE
  +BRIGHT
  RenderStyle Add
  Alpha 1.5
  SeeSound "imp/attack"
  DeathSound "imp/shotx"
  States
  {
  Spawn:
	GOSH A 40
    Goto Death
  Death:
    FLAL A 0 A_PlaySound("gosha/spawn")
	FLAL A 0 A_SpawnItem("PsyduckFloppaCube",10)
    FLAL ABC 12 Bright
    Stop
  }
}

ACTOR PsyduckFloppaCube
{

  Health 666
  Radius 31
  Height 56
  Mass 400
  Speed 37
  Painchance 0
  SeeSound "gosha/karr"
  +FLOAT
  +NOGRAVITY
  -PUSHABLE
  +THRUACTORS
  +FRIENDLY
  +CANPASS
  +NORADIUSDMG
  +NOPAIN
  -INVULNERABLE
  +LOOKALLAROUND
  +FORCEXYBILLBOARD

  States
  {
  Spawn:
	Goto See
  See:
	FLOP ABCDEFGH 7 A_Chase
	FLOP A 0 A_DamageSelf(24)
	FLOP ABCDEFGH 7 A_Chase
	FLOP A 0 A_Jump(90,"BothFlopping1")
	FLOP A 0 A_Jump(100,"BothFlopping2")
	FLOP A 0 A_Jump(110,"LeftFlopping")
	FLOP A 0 A_Jump(130,"RightFlopping")
	FLOP A 0 A_Jump(150,"Karr1")
	Loop
  See2:
	FLOP HGFEDCBA 7 A_Chase
	FLOP A 0 A_DamageSelf(24)
	FLOP HGFEDCBA 7 A_Chase
	FLOP A 0 A_Jump(100,"BothFlopping1")
	FLOP A 0 A_Jump(90,"BothFlopping2")
	FLOP A 0 A_Jump(110,"LeftFlopping")
	FLOP A 0 A_Jump(150,"Karr2")
	Loop
  Karr1:
	FLOP A 0 A_PlaySound("gosha/karr")
	Goto See
  Karr2:
	FLOP A 0 A_PlaySound("gosha/karr")
	Goto See2
  Missile:
	FLOP ABCDEFGH 7 A_SpawnItem("PsyduckFloppaCubeMissiles")
	Goto See
  Missile2:
	FLOP HGFEDCBA 7 A_SpawnItem("PsyduckFloppaCubeMissiles")
	Goto See2
  LeftFlopping:
	FLOP H 0 A_PlaySound("gosha/karr")
	FLOP H 7
	LLOP H 4
	FLOP H 5
	FLOP G 7
	LLOP G 4
	FLOP G 5
	FLOP F 7
	FLOP E 7
	LLOP E 4
	FLOP E 5
	FLOP D 7
	FLOP C 7
	FLOP B 7
	LLOP B 4
	FLOP B 5
	FLOP A 7
	LLOP A 4
	FLOP A 5 
	FLOP A 0 A_Jump(105,"Missile2")
	Goto See2
  RightFlopping:
	FLOP A 0 A_PlaySound("gosha/karr")
	FLOP A 7
	RLOP A 4
	FLOP A 5
	FLOP B 7
	RLOP B 4
	FLOP B 5
	FLOP C 7
	RLOP C 4
	FLOP C 5
	FLOP D 7
	FLOP E 7
	RLOP E 4
	FLOP E 5
	FLOP F 7
	FLOP G 7
	FLOP H 7
	RLOP H 4
	FLOP H 5
	FLOP A 0 A_Jump(105,"Missile")
	Goto See
  BothFlopping1:
	FLOP A 0 A_PlaySound("gosha/karr")
	FLOP A 7
	BLOP A 4
	FLOP A 4
	BLOP A 4
	FLOP A 5
	FLOP BCDE 2
	FLOP E 0 A_PlaySound("gosha/karr")
	FLOP E 4
	BLOP E 4
	FLOP E 4
	BLOP E 4
	FLOP FGH 3
	FLOP A 0 A_Jump(125,"Missile")
	Goto See
  BothFlopping2:
	FLOP A 0 A_PlaySound("gosha/karr")
	FLOP A 7
	BLOP A 4
	FLOP A 4
	BLOP A 4
	FLOP A 5
	FLOP HGFE 2
	FLOP E 0 A_PlaySound("gosha/karr")
	FLOP E 4
	BLOP E 4
	FLOP E 4
	BLOP E 4
	FLOP DCB 3
	FLOP A 0 A_Jump(125,"Missile2")
	Goto See2
  Death:
	FLOP A 10
	FLAL A 10
	FLAL BC 10
	Stop
  XDeath:
	FLOP A 10
	FLAL A 10
	FLAL BC 10
	Stop
  Raise:
	FLAL BC 10
	FLAL A 10
	FLOP A 10
	Goto See
  }
}

ACTOR PsyduckFloppaCubeMissiles : PsyduckExplosionBoom
{

Scale 1.7
Speed 0
Renderstyle Add
Alpha 1.5
+BRIGHT

States
  {
  Spawn:
    Goto MissileSpawn_ShardAndBall
  MissileSpawn_ShardAndBall:
    TNT1 A 0 A_Jump(100,"MissileSpawn_ParticleShotgun")
	TNT1 A 0 A_Jump(93,"MissileSpawn_LightningGrenade")
	TNT1 A 0 A_Jump(3,"MissileSpawn_AcidClouds")
	TNT1 AAAAAAAAAAAA 1 A_SpawnProjectile("PsyduckShard",random(-20, 20),1,random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
	TNT1 AAAAA 1 A_SpawnProjectile("PsyduckBall",random(-20, 20),1,random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
    Stop
  MissileSpawn_ParticleShotgun:
	TNT1 AAAAAAAAAAAA 1 A_SpawnProjectile("PsyduckParticleShotgunParticle",random(-20, 20),1,random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
    Stop
  MissileSpawn_LightningGrenade:
	TNT1 AAA 1 A_SpawnProjectile("PsyduckLightningGrenadeParticle",45,1,random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
    Stop
  MissileSpawn_AcidClouds:
	TNT1 A 1 A_SpawnProjectile("PsyduckAcidCloudsGrenadeParticle",45,1,random(-180, 20),CMF_AIMDIRECTION,random(-20,20))
    Stop
  Death:
	TNT1 A 0
	Stop
  }

}

/////---------------/////-DARK PSYDUCK-/////---------------/////---------------/////

ACTOR DarkPsyduckOptional : CustomInventory
{

Inventory.Icon "DSMFA0"
  Inventory.PickupSound "misc/p_pkup"
  Inventory.UseSound "misc/p_pkup"
  Inventory.Amount 1
  Inventory.MaxAmount 1
  Inventory.InterHubAmount 1
  Inventory.PickupMessage ""
  +INVENTORY.AUTOACTIVATE
  +INVENTORY.INVBAR
  +INVENTORY.HUBPOWER
  States
  {
  Spawn:
	DSMF A 5
	DSMF B 5
	Loop
  Pickup:
	DSMF A 0 A_Print("")
	Stop
  Use:
	DSMF A 0 A_JumpIf(GetCVar("psyduck_items")==1, "Use2")
	DSMF A 0 A_Print("")
	Stop
  Use2:
	DSMF A 0 A_JumpIf(GetCVar("dark_psyduck_at_start")==1, "GiveDarkPsyduck")
	DSMF A 0 A_Print("")
	Stop
  GiveDarkPsyduck:
	DSMF A 0 A_GiveInventory("DarkPsyduckMorpher")
	Stop
  Drop:
	DSMF A -1
	Stop
  }
}

ACTOR DarkPsyduckMorpher : CustomInventory
{
  Inventory.Icon "DSMFA0"
  Inventory.PickupSound "misc/p_pkup"
  Inventory.UseSound "misc/p_pkup"
  Inventory.Amount 1
  Inventory.MaxAmount 1
  Inventory.InterHubAmount 1
  Inventory.PickupMessage "..."
  -INVENTORY.AUTOACTIVATE
  +INVENTORY.INVBAR
  +INVENTORY.HUBPOWER
  States
  {
  Spawn:
	DSMF A 5 Bright
	DSMF B 5 Bright
	Loop
  Pickup:
	DSMF A 0 A_Print("")
	Stop
  Use:
	DSMF A 0 A_Print("\cuLet the \cgrage \cuinside \cgit \cuguide you.")
	DSMF A 0 ACS_NamedExecute("DSMS")
	Stop
  Drop:
	DSMF A -1
	Stop
  }
}

ACTOR DarkPSYDUCK : DoomPlayer
{
  Speed 1.6
  Health 666
  WoundHealth 0
  Player.MaxHealth 666
  Radius 12
  Height 30
  Mass 50
  DamageFactor "PsyduckGrenadeDamage", 0.0
  PainChance 250
  PainSound "darkpsyduck/hurt"
  +DONTTHRUST
  +NORADIUSDMG
  +FORCEXYBILLBOARD
  -PICKUP
  -BUDDHA
  -NODAMAGE
  -INVULNERABLE
  Player.DisplayName "DARKPSYDUCK"
  Player.CrouchSprite "DSYC"
  Player.SoundClass "DARKPSYDUCK"
  Player.StartItem "DarkPsyduckFist"
  Player.StartItem "DarkPsyduckEnergy" 50
  Player.StartItem "DarkPsyduckEnergySmall" 50
  Player.WeaponSlot 1, DarkPsyduckFist
  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 666
  Player.Viewbob 0.4
  Player.Viewheight 25
  
  States
  {
  Spawn:
	DSYD A 0
	Goto PickUpItems
  PickUpItems:
	DYSD A 0 A_ChangeFlag("PICKUP",false)
	Goto SpawnReal
  Spawnreal:
	DSYD A 0 A_ChangeFlag("BUDDHA", false)
	DSYD A 0 A_ChangeFlag("INVULNERABLE", false)
	DKYD AAB 7
	DKYD AAB 8
	DSYD A 0 A_JumpIf(GetCVar("psyduck_speech_density")==1, "DarkPsyduckSounds_Density_1")
	DSYD A 0 A_JumpIf(GetCVar("psyduck_speech_density")==2, "DarkPsyduckSounds_Density_2")
	DSYD A 0 A_JumpIf(GetCVar("psyduck_speech_density")==3, "DarkPsyduckSounds_Density_3")
	Loop
  See:
	DSYD A 0 A_ChangeFlag("PICKUP", false)
	DSYD A 0 A_JumpIfHealthLower(250,"Wound1")
	DKYD ABC 2
	DSYD A 0 ACS_NamedExecute("DSAR",0)
	DSYD A 0 ACS_NamedExecute("PsyduckFootstepsPlayer",0)
	DKYD ABC 2
	DSYD A 0 ACS_NamedExecute("PsyduckFootstepsPlayer",0)
	DKYD ABC 2
	DSYD A 0 ACS_NamedExecute("PsyduckFootstepsPlayer",0)
	DKYD ABC 2 
	DSYD A 0 ACS_NamedExecute("PsyduckFootstepsPlayer",0)
	DSYD A 0 A_JumpIf(GetCVar("psyduck_speech_density")==1, "DarkPsyduckSounds_Density_1")
	DSYD A 0 A_JumpIf(GetCVar("psyduck_speech_density")==2, "DarkPsyduckSounds_Density_2")
	DSYD A 0 A_JumpIf(GetCVar("psyduck_speech_density")==3, "DarkPsyduckSounds_Density_3")
	Goto See
  DarkPsyduckSounds_Density_1:				//Rarely - Sounds
	DSYD A 0 A_Jump(26,"DarkShoutingSounds_EXECUTED")
	DSYD A 0 A_Jump(12,"DarkRunningSounds_EXECUTED")
	Goto See
  DarkPsyduckSounds_Density_2:				//Normal - Sounds
	DSYD A 0 A_Jump(100,"DarkShoutingSounds_EXECUTED")
	DSYD A 0 A_Jump(67,"DarkRunningSounds_EXECUTED")
	Goto See
  DarkPsyduckSounds_Density_3:				//Frequently - Sounds
	DSYD A 0 A_Jump(151,"DarkShoutingSounds_EXECUTED")
	DSYD A 0 A_Jump(101,"DarkRunningSounds_EXECUTED")
	Goto See
  DarkShoutingSounds_EXECUTED:
    DSYP A 0 A_StopSound(4)
	DSYD A 0 A_StopSound(6)
	DSYD A 0 A_StartSound("darkpsyduck/shouting",5)
	Goto See
  Recovering:
	DSYD A 0 A_ChangeFlag("PICKUP", false)
	DSYD A 0 ACS_NamedExecute("DSAR",0)
	Goto Spawnreal
  Missile:
	DSYP A 0 A_ChangeFlag("BUDDHA", false)
	DSYP A 0 A_ChangeFlag("PICKUP", false)
	DSYP A 0 A_JumpIfHealthLower(250,"Wound1")
    DSYP A 4 A_StartSound("darkpsyduck/attacking",1,0,1.5)
	DSYP B 3
    Goto Spawnreal
  Melee:
	DSYP A 0 A_ChangeFlag("BUDDHA", false)
	DSYP A 0 A_ChangeFlag("PICKUP", false)
	DSYP A 0 A_JumpIfHealthLower(250,"Wound1")
    DSYP A 4 A_StartSound("darkpsyduck/attacking",1,0,1.5)
	DSYP B 3
    Goto Missile
  Pain:
	DSYD E 0 A_StopSound(2)
    DSYD E 4
	DSYD E 0 A_ChangeFlag("BUDDHA", false)
	DSYD E 0 A_ChangeFlag("INVULNERABLE", false)
	DSYD E 0 A_ChangeFlag("NOPAIN", true)
	DSYD E 0 A_DamageSelf(45)
	DSYD E 0 A_ChangeFlag("NOPAIN", false)
	DSYD E 0 A_StartSound("darkpsyduck/hurt")
    DSYD E 4 A_Pain
    Goto SpawnReal
  Death:
	DSYD E 5
	DSYX A 10
    DSYX B 10 A_PlayerScream
    DSYX C 10 A_NoBlocking
    DSYX D 10
	DSYX E 10
	DSYX D 30
	DSYX E -1
    Stop
  XDeath:
	DSYY A 5
    DSYY A 5 A_XScream
    DSYY B 5 A_NoBlocking
    DSYY B -1
    Stop
  }
}

//	DSYD Q 0 A_TakeInventory("PsyduckEnergy",525)
//	DSYD Q 0 A_TakeInventory("PsyduckEnergySmall",75)
//	DSYD Q 0 A_TakeInventory("PsyduckParticleShotgun",45)
//	DSYD Q 0 A_TakeInventory("PsyduckLightningGrenade",12)
//	DSYD Q 0 A_TakeInventory("PsyduckFirestormGrenadeSealed",1)
//	DSYD Q 0 A_TakeInventory("PsyduckFirestormGrenadeKey",1)
//	DSYD Q 0 A_TakeInventory("PsyduckFirestormGrenade",1)
//	DSYD Q 0 A_TakeInventory("PsyduckMinipack",1)
//	DSYD Q 0 A_TakeInventory("PsyduckMinipackActivator",1)
//	DSYD Q 0 A_TakeInventory("PsyduckAcidCloudsGrenade",4)
//	DSYD Q 0 A_TakeInventory("PsyduckSelfDetonator",2)
//		For becoming Dark Psyduck.		//

ACTOR DarkPsyduckEnergy : Ammo
{
  Scale 0.3
  Radius 4
  Height 4
  Inventory.Amount 100
  Inventory.MaxAmount 425
  Ammo.BackpackAmount 100
  Ammo.BackpackMaxAmount 725
  Inventory.Icon "BAL2A0"
  Inventory.PickupSound "pickup/shell"
  States
  {
  Spawn:
	Goto Death
  Death:
	BAL2 A 4
	Stop
  }
}

ACTOR DarkPsyduckEnergySmall : Ammo
{
  Scale 0.2
  Radius 4
  Height 4
  Inventory.Amount 75
  Inventory.MaxAmount 150
  Ammo.BackpackAmount 50
  Ammo.BackpackMaxAmount 300
  Inventory.Icon "DAL3F0"
  Inventory.PickupSound "pickup/shell"
  States
  {
  Spawn:
	Goto Death
  Death:
	BAL3 E 4
	Stop
  }
}

ACTOR DarkPsyduckBall
{
  Radius 4
  Height 6
  Speed 50
  Scale 0.9
  Fastspeed 50
  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 7
    Goto Death
  Death:
	BAL2 C 0 A_Explode(5,100)
    BAL2 CDE 0 A_SpawnProjectile("DarkPsyduckShardSmall",random(-20, 20),1,random(-20, 20),0,0)
    BAL2 CDE 6 Bright
    Stop
  }
}

ACTOR DarkPsyduckShard : PsyduckBall
{
  Scale 0.3
  Speed 80
  Damage 1
  DamageType PsyduckGrenadeDamage
  RenderStyle Normal
  +BOUNCEONWALLS
  +BOUNCEONFLOORS
  +BOUNCEONCEILINGS
  -RIPPER
  States
  {
  Spawn:
		DAL3 AB 6 Bright
		DAL3 AB 8 Bright
		DAL3 AB 10 Bright
		Goto Death1
	Death:
		DAL3 A 0 A_Explode(25,100,0,0,0,0,0,0,"PsyduckGrenadeDamage")
		DAL3 A 0 A_Quake(3,20,0,300)
		DAL3 AA 0 A_SpawnProjectile("DarkPsyduckShardSmallSlow",random(-50, 50),1,random(-50, 50),0,0)
		DAL3 ABCDE 4 Bright
		Stop
	Death1:
		DAL3 ABCDE 4 Bright
		Stop
  }
}

ACTOR DarkPsyduckShardSmall : PsyduckShard
{
  Scale 0.2
  Speed 60
  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 DarkPsyduckShardSmallSlow : PsyduckShardSmall
{
  Scale 0.2
  Speed 20
  Damage 1
  DamageType PsyduckGrenadeDamage
  States
  {
  Spawn:
		IGRP AB 6 Bright
		IGRP AB 8 Bright
		IGRP AB 10 Bright
		Goto Death
  Death:
		IGRP ABCDE 4 Bright
		Stop
	}
}

ACTOR DarkPsyduckExplosionBall : PsyduckBall
{
Scale 1.9

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("DarkPsyduckShardSmall",random(-20, 20),1,random(-20, 20),0,0)
    BAL2 CDE 6 Bright
    Stop
  }
}

ACTOR DarkPsyduckExplosionBoom : PsyduckBall
{

Scale 3
Speed 0
Renderstyle Add
Alpha 1.5
+BRIGHT

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

}

ACTOR DarkPsyduckFist : Weapon
{
  Weapon.SelectionOrder 3700
  Weapon.Kickback 200
  Weapon.AmmoUse 2
  Weapon.AmmoGive 50
  Weapon.AmmoType "DarkPsyduckEnergySmall"
  Weapon.AmmoUse2 7
  Weapon.AmmoGive2 5
  Weapon.AmmoType2 "DarkPsyduckEnergy"
  Weapon.BobSpeed 1.9
  Weapon.BobStyle Smooth
  Inventory.Icon "DSYDJ2J8"
  +WEAPON.MELEEWEAPON
  +WEAPON.NO_AUTO_SWITCH
  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
  Fire:
	TNT1 A 1
    TNT1 A 2 A_CustomPunch(9)
	TNT1 A 0 A_FireProjectile("DarkPsyduckShard",random(-2, 2),1,random(-2, 2),5,0)
	TNT1 A 0 A_GiveInventory("DarkPsyduckEnergy",6)
    TNT1 A 0 A_JumpIf(CountInv("DarkPsyduckEnergySmall") <= 5, "Fire_Safety_Give")
	TNT1 A 1
    TNT1 A 1 A_ReFire
    Goto Ready
  Fire_Safety_Give:
	TNT1 A 0 A_GiveInventory("DarkPsyduckEnergySmall",12)
	Goto Ready
  AltFire:
	TNT1 A 3
	TNT1 A 0 A_DamageSelf(11)
	TNT1 A 0 A_GiveInventory("DarkPsyduckEnergySmall",12)
    TNT1 A 1 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 1 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 1 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),2)
	TNT1 A 0 A_StartSound("psyduck/hurt",3,CHANF_OVERLAP)
	TNT1 A 1 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),1)
	TNT1 A 1 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),3)
	TNT1 A 1 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 0 A_StartSound("psyduck/hurt",3,CHANF_OVERLAP)
	TNT1 A 1 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 1 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),2)
	TNT1 A 1 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),1)
	TNT1 A 0 A_StartSound("psyduck/hurt",3,CHANF_OVERLAP)
	TNT1 A 1 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),3)
	TNT1 A 1 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 1 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 1 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),2)
	TNT1 A 1 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),1)
	TNT1 A 1 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),3)
	TNT1 A 2 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 2 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 2 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),2)
	TNT1 A 2 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),1)
	TNT1 A 2 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),3)
	TNT1 A 2 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 2 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 2 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),2)
	TNT1 A 2 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),1)
	TNT1 A 2 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),3)
	TNT1 A 2 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 2 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),0)
	TNT1 A 2 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),2)
	TNT1 A 2 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),1)
	TNT1 A 2 A_FireProjectile("DarkPsyduckBall",random(-17, 17),1,3,random(-12, 12),3)
	TNT1 A 0 A_GiveInventory("DarkPsyduckEnergy",25)
    TNT1 A 2
    TNT1 A 2
    TNT1 A 3 A_ReFire
	Goto Ready
  }
}