//////////////////////////////////////////////////// Spawners


//////////////////////////////////////////////////// EMPTY

ACTOR ArtiEmptyFlask : CustomInventory
{
  +FLOATBOB
  +COUNTITEM
  +INVENTORY.INVBAR
  +INVENTORY.PICKUPFLASH
  +INVENTORY.FANCYPICKUPSOUND
  Inventory.MaxAmount 999
  Inventory.Icon "ARTIFLA0"
  Inventory.PickupSound "misc/p_pkup"
  Inventory.PickupMessage "EMPTY FLASK"
  Tag "Empty Flask"
  //+KEEPDEPLETED
  States
  {
  Spawn:
    FLA0 A -1
    Stop
  Use:
    TNT1 A 0 A_Print ("this is a empty flask, use reagents to fill this.")
    Fail
  }
}

//////////////////////////////////////////////////// GREEN poison cloud

ACTOR ArtiGreenFlask : ArtiEmptyFlask
{
  Inventory.MaxAmount 25
  Inventory.Icon "ARTIFLA1"
  Inventory.PickupMessage "GREEN FLASK"
  Tag "Green Flask"
  States
  {
  Spawn:
    FLA1 A -1
    Stop
  Use:
    TNT1 A 0 A_SpawnItemEx ("NewPoisonBag", 16.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 32, 0)
	TNT1 A 0 A_SpawnItemEx ("NewPoisonCloud", 0.0, 0.0, 28.0, 0.0, 0.0, 0.0, 0.0, 32, 0)
    Stop
  }
}

ACTOR NewPoisonBag
{
  Radius 5
  Height 5
  +NOBLOCKMAP
  +NOGRAVITY
  States
  {
  Spawn:
    PSBG A 18 Bright
    PSBG B 4 Bright
    PSBG C 3
    PSBG C 1 //A_PoisonBagInit
    Stop
  }
}

Actor NewPoisonCloud
{
	Radius 20
	Height 30
	Mass 0x7fffffff
	+NOBLOCKMAP
	+NOGRAVITY
	+DROPOFF
	+NODAMAGETHRUST
	+DONTSPLASH
	+FOILINVUL
	+CANBLAST
	+BLOODLESSIMPACT
	+FLOATBOB
	//+MISSILE
	+RIPPER
	+BLOODLESSIMPACT
	PoisonDamage 1000000
	RenderStyle Translucent
	Alpha 0.6
	DeathSound "PoisonShroomDeath"
	DamageType PoisonCloud
	States
	{
	Spawn:
		TNT1 A 25
		PSBG D 1
		PSBG D 1 A_Scream
		PSBG  DEEEFFFGGGHHHIIIEEEFFFGGGHHHIIIEEEFFFGGGHHHIIIEEEFFFGGGHHHIII 2 A_Explode (4+2*(acs_executewithresult(599,9)), 40, 1)
		PSBG  EEEFFFGGGHHHIIIEEEFFFGGGHHHIIIEEEFFFGGGHHHIIIEEEFFFGGGHHHIII 2 A_Explode (4+2*(acs_executewithresult(599,9)), 40, 1)
		PSBG  EEEFFFGGGHHHIIIEEEFFFGGGHHHIIIEEEFFFGGGHHHIIIEEEFFFGGGHHHIII 2 A_Explode (4+2*(acs_executewithresult(599,9)), 40, 1)
		PSBG  EEEFFFGGGHHHIIIEEEFFFGGGHHHIIIEEEFFFGGGHHHIIIEEEFFFGGGHHHIII 2 A_Explode (4+2*(acs_executewithresult(599,9)), 40, 1)
		PSBG  EEEFFFGGGHHHIIIEEEFFFGGGHHHIIIEEEFFFGGGHHHIIIEEEFFFGGGHHHIII 2 A_Explode (4+2*(acs_executewithresult(599,9)), 40, 1)
		PSBG  EEEFFFGGGHHHIIIEEEFFFGGGHHHIIIEEEFFFGGGHHHIII 2 A_Explode (4+2*(acs_executewithresult(599,9)), 40, 1)
		Goto Death
	Death:
    	PSBG HG 7
    	PSBG FD 6
    	Stop
	}
}
//////////////////////////////////////////////////// RED explosive timebomb

ACTOR ArtiRedFlask : ArtiEmptyFlask
{
  Inventory.Icon "ARTIFLA2"
  Inventory.MaxAmount 25
  Inventory.PickupMessage "RED FLASK"
  Tag "Red Flask"
  States
  {
  Spawn:
    FLA2 A -1
    Stop
  Use:
    TNT1 A 0 A_SpawnItemEx ("zActivatedTimeBomb", 16.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 32, 0)
	TNT1 A 0 A_SpawnItemEx ("zActivatedTimeBombBoom", 16.0, 0.0, 40.0, 0.0, 0.0, 0.0, 0.0, 32, 0)
    Stop
  }
}

actor zActivatedTimeBomb : ActivatedTimeBomb replaces ActivatedTimeBomb
{
   DamageType "Fire"
   +NOGRAVITY
   +FOILINVUL
   RenderStyle Add
   Alpha 0.4
   DeathSound "FlechetteExplode"
	States
	{
   Spawn:
     FBMB ABCD 10
     FBMB E 6 A_Scream
	 //XPL1 A 0 A_SetTranslucent(0.4, 1)
     //XPL1 A 4 BRIGHT A_Explode (128+2*(acs_executewithresult(599,9)), 128, 1)
     //XPL1 BCDEF 4 BRIGHT
     Stop
	}
}

actor zActivatedTimeBombBoom
{
   DamageType "Fire"
   +NOGRAVITY
   Projectile
   +RIPPER
   +BLOODLESSIMPACT
   +PAINLESS
   +FOILINVUL
   RenderStyle Add
   DeathSound "FlechetteExplode"
   States
   {
	Spawn:
     TNT1 AAAA 10
     TNT1 A 6 A_Scream
	 XPL1 A 0 A_SetTranslucent(1, 1)
	 XPL1 A 0 A_ChangeFlag("Painless", 0)
	 XPL1 A 0 Bright A_AlertMonsters
     XPL1 A 4 BRIGHT A_Explode (128+2*(acs_executewithresult(599,9)), 128, 1)
     XPL1 BCDEF 4 BRIGHT
     Stop
	}
}

//////////////////////////////////////////////////// YELLOW grenade bomb

ACTOR ArtiYellowFlask : ArtiEmptyFlask
{
  Inventory.Icon "ARTIFLA3"
  Inventory.MaxAmount 25
  Inventory.PickupMessage "YELLOW FLASK"
  Tag "Yellow Flask"
  States
  {
  Spawn:
    FLA3 A -1
    Stop
	Use:
    TNT1 A 0 A_FireCustomMissile ("YellowBomb", 0, 0, 0, 5)
    Stop
  }
}

ACTOR YellowBomb : ThrowingBomb
{
	Speed 28
	States
	{
	Death:
	CFCF Q 0 Bright A_AlertMonsters
	CFCF Q 0 Bright A_SetTranslucent(1,1)
	CFCF Q 1 Bright A_NoGravity
	CFCF QQQ 1 Bright A_SpawnItemEx("FlailPuffParticleFXSpawner")
    CFCF R 0 Bright A_Scream
	CFCF RRR 1 Bright A_SpawnItemEx("FlailPuffParticleFXSpawner")
    CFCF S 0 Bright A_Explode (128+2*(acs_executewithresult(599,9)), 128, 1)
	CFCF SSSS 1 Bright A_SpawnItemEx("FlailPuffParticleFXSpawner")
    CFCF T 3 Bright
    CFCF U 4 Bright
    CFCF W 3 Bright
    CFCF X 4 Bright
    CFCF Z 3 Bright
    Stop
	}
}

//////////////////////////////////////////////////// BLUE ice cloud

ACTOR ArtiBlueFlask : ArtiEmptyFlask
{
  Inventory.Icon "ARTIFLA4"
  Inventory.MaxAmount 25
  Inventory.PickupMessage "BLUE FLASK"
  Tag "Blue Flask"
  States
  {
  Spawn:
    FLA4 A -1
    Stop
  Use:
    TNT1 A 0 A_SpawnItemEx ("IceBag", 16.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 32, 0)
	TNT1 A 0 A_SpawnItemEx ("IceCloud", 0.0, 0.0, 28.0, 0.0, 0.0, 0.0, 0.0, 32, 0)
    Stop
  }
}

ACTOR IceBag
{
  Radius 5
  Height 5
  +NOBLOCKMAP
  +NOGRAVITY

  States
  {
  Spawn:
    FLA4 A 18 Bright
    FLA4 B 4 Bright
    FLA4 C 3
    FLA4 C 1 //A_SpawnItemEx ("IceCloud", 0.0, 0.0, 28.0, 0.0, 0.0, 0.0, 0.0, 32, 0)
    Stop
  }
}

ACTOR IceCloud
{
  Radius 20
  Height 30
  Mass 1000
  +NOBLOCKMAP
  +NOGRAVITY
  +DROPOFF
  +NODAMAGETHRUST
  +DONTSPLASH
  +FOILINVUL
  +CANBLAST
  +BLOODLESSIMPACT
  +WINDTHRUST
  +NOTELEPORT
  +MISSILE
  +NOEXPLODEFLOOR
  +RIPPER
  +FORCEXYBILLBOARD
  RenderStyle Translucent
  Alpha 0.8
  DeathSound "PoisonShroomDeath"
  DamageType Ice
  reactiontime 60

  States
  {
  Spawn:
	TNT1 A 25
    FLA4 D 1
    FLA4 D 1 A_Scream
    Goto Rain
  Rain:
    FLA4 D 0 A_Countdown
    FLA4 D 0 A_JumpIf ((z - floorz < 48.0),"Up") //Too close to the floor
    FLA4 DE 2
    FLA4 E 2 A_SpawnItemEx ("IceDrop", 0.0, 0.0, 0.0, random(0,2), random(0,2), 0.0, random(0,255), 32, 128)
    FLA4 EF 2
    FLA4 F 2 A_SpawnItemEx ("IceDrop", 0.0, 0.0, 0.0, random(0,2), random(0,2), 0.0, random(0,255), 32, 96)
    FLA4 FG 2
    FLA4 G 2 A_SpawnItemEx ("IceDrop", 0.0, 0.0, 0.0, random(0,2), random(0,2), 0.0, random(0,255), 32, 64)
    FLA4 GH 2
    FLA4 H 2 A_SpawnItemEx ("IceDrop", 0.0, 0.0, 0.0, random(0,2), random(0,2), 0.0, random(0,255), 32, 32)
    FLA4 HI 2
    FLA4 I 2 A_SpawnItemEx ("IceDrop", 0.0, 0.0, 0.0, random(0,2), random(0,2), 0.0, random(0,255), 32, 0)
    FLA4 I 2 A_SpawnItemEx ("IceDrop", 0.0, 0.0, 0.0, random(0,2), random(0,2), 0.0, random(0,255), 32, 64)
    FLA4 I 1 A_JumpIf ((ceilingz - z > 80.0),"Up") //Too far from the ceiling
    FLA4 I 0 ThrustThingZ(0, 1, 1, 1) //Slowdown
    Goto Rain
  Up:
    FLA4 D 0 A_JumpIf ((ceilingz - z < 8.0),"Rain")
    FLA4 D 1 ThrustThingZ(0, 2, 0, 0)
    Goto Rain
  Death:
    FLA4 HG 7
    FLA4 FD 6
    Stop
  }
}

ACTOR IceDrop : FrostMissile
{
  gravity 0.25
  DamageType "Ice"
  -NOGRAVITY
  -ACTIVATEIMPACT
  -ACTIVATEPCROSS
  Renderstyle Add
  Damage (3+(3*(acs_executewithresult(599,9))))
  States
  {
  Spawn:
    IDRP ABC 3 Bright
    Loop
  }
}

//////////////////////////////////////////////////// WHITE solid cloud

ACTOR ArtiWhiteFlask : ArtiEmptyFlask
{
  Inventory.Icon "ARTIFLA5"
  Inventory.MaxAmount 25
  Inventory.PickupMessage "WHITE FLASK"
  Tag "White Flask"
  States
  {
  Spawn:
    FLA5 A -1
    Stop
  Use:
    TNT1 A 0 A_SpawnItemEx ("WhiteBag", 16.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 32, 0)
	TNT1 A 0 A_SpawnItemEx ("WhiteCloud", 0.0, 8.0, 28.0, 0.0, 0.0, 0.0, 0.0, 32, 0)
	TNT1 A 0 A_SpawnItemEx ("WhiteCloud", 8.0, 0.0, 28.0, 0.0, 0.0, 0.0, 0.0, 32, 0)
	TNT1 A 0 A_SpawnItemEx ("WhiteCloud", 0.0,-8.0, 28.0, 0.0, 0.0, 0.0, 0.0, 32, 0)
    Stop
  }
}

ACTOR WhiteBag
{
  Radius 5
  Height 5
  +NOBLOCKMAP
  +NOGRAVITY

  States
  {
  Spawn:
    FLA5 A 18 Bright
    FLA5 B 4 Bright
    FLA5 C 3
    //FLA5 C 0 A_SpawnItemEx ("WhiteCloud", 0.0, 8.0, 28.0, 0.0, 0.0, 0.0, 0.0, 32, 0)
    //FLA5 C 0 A_SpawnItemEx ("WhiteCloud", 8.0, 0.0, 28.0, 0.0, 0.0, 0.0, 0.0, 32, 0)
    FLA5 C 1// A_SpawnItemEx ("WhiteCloud", 0.0,-8.0, 28.0, 0.0, 0.0, 0.0, 0.0, 32, 0)
    Stop
  }
}

ACTOR WhiteCloud
{
  Radius 32
  Height 32
  Mass 1000
  scale 1.25
  +NOGRAVITY
  +DROPOFF
  +RIPPER
  +MISSILE
  +NODAMAGETHRUST
  +DONTSPLASH
  +FOILINVUL
  +CANBLAST
  +BLOODLESSIMPACT
  +WINDTHRUST
  +NOTELEPORT
  +FORCEXYBILLBOARD
  RenderStyle Translucent
  Alpha 0.4
  DeathSound "PoisonShroomDeath"

  States
  {
  Spawn:
	TNT1 A 25
    FLA5 D 1
    FLA5 D 1 A_Scream
    FLA5 DEEEFFFGGGHHHII 2
    FLA5 I 2 A_SetTranslucent (0.4, 0)
    FLA5 I 1
    FLA5 DEEEFFFGGGHHHII 2
    FLA5 I 2 A_SetTranslucent (0.5, 0)
    FLA5 I 1
    FLA5 DEEEFFFGGGHHHII 2
    FLA5 I 2 A_SetTranslucent (0.6, 0)
    FLA5 I 1
    FLA5 DEEEFFFGGGHHHII 2
    FLA5 I 2 A_SetTranslucent (0.7, 0)
    FLA5 I 1
    FLA5 DEEEFFFGGGHHHII 2
    FLA5 I 2 A_SetTranslucent (0.8, 0)
    FLA5 I 1
    FLA5 DEEEFFFGGGHHHII 2
    FLA5 I 2 A_SetTranslucent (0.9, 0)
    FLA5 I 1
    FLA5 DEEEFFFGGGHHHII 2
    FLA5 I 2 A_SetTranslucent (1.0, 0)
    FLA5 I 0 A_SetSolid
    FLA5 I 0 A_Jump (256,"SolidA","SolidB","SolidC","SolidD") //Random Frame
    Goto SolidA
  SolidA:
    FLA5 I 200
    Goto Death
  SolidB:
    FLA5 H 200
    Goto Death
  SolidC:
    FLA5 G 200
    Goto Death
  SolidD:
    FLA5 F 200
    Goto Death
  Death:
    FLA5 HG 7 A_Explode(320+2*(acs_executewithresult(599,9)),32)
    FLA5 FD 6
    Stop
  }
}

//////////////////////////////////////////////////// BLACK knight archer summon

ACTOR ArtiBlackFlask : ArtiEmptyFlask
{
  Inventory.Icon "ARTIFLA6"
  Inventory.MaxAmount 25
  Inventory.PickupMessage "BLACK FLASK"
  Tag "Black Flask"
  States
  {
  Spawn:
    FLA6 A -1
    Stop
  Use:
    TNT1 A 0 A_SpawnItemEx ("BlackBag", 16.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 32, 0)
	TNT1 A 0 A_SpawnItemEx ("BlackCloud", 0.0, 0.0, 28.0, 0.0, 0.0, 0.0, 0.0, 32, 0)
    Stop
  }
}

ACTOR BlackBag
{
  Radius 5
  Height 5
  +NOBLOCKMAP
  +NOGRAVITY

  States
  {
  Spawn:
    FLA6 A 18 Bright
    FLA6 B 4 Bright
    FLA6 C 3
    FLA6 C 1 //A_SpawnItemEx ("BlackCloud", 0.0, 0.0, 28.0, 0.0, 0.0, 0.0, 0.0, 32, 0)
    Stop
  }
}

ACTOR BlackCloud
{
  Radius 32
  Height 32
  Mass 1000
  scale 1.25
  +NOGRAVITY
  +DROPOFF
  +RIPPER
  +MISSILE
  +NODAMAGETHRUST
  +DONTSPLASH
  +FOILINVUL
  +CANBLAST
  +BLOODLESSIMPACT
  +NOTELEPORT
  +FORCEXYBILLBOARD
  RenderStyle Translucent
  Alpha 0.75
  DeathSound "PoisonShroomDeath"
  reactiontime 2

  States
  {
  Spawn:
	TNT1 A 25
    FLA6 D 1
    FLA6 D 1 A_Scream
    Goto Cast
  Cast:
    FLA6 D 0 A_Countdown
    FLA6 DEEEFFF 2
    FLA6 G 2 A_SpawnItemEx ("KnightArcher", 0.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0, 0)
    FLA6 GGHHHII 2
    FLA6 I 2
    FLA6 I 1
    Goto Cast
  Death:
    FLA6 HG 7
    FLA6 FD 6
    Stop
  }
}

actor KnightArcher
{
    Health 300
    Radius 20
    Height 56
    Speed 13
    PainChance 32
	Mass 100
    MONSTER
    +FRIENDLY
	+NEVERFAST
	+NODROPOFF
	+QUICKTORETALIATE
	-COUNTKILL
	+NOBLOCKMONST
	Species "Player"
    +THRUSPECIES
	MinMissileChance 10
	SeeSound "archer/sight"
    AttackSound "archer/attack"
    PainSound "archer/pain"
    DeathSound "archer/death"
    ActiveSound "archer/growl"
    Obituary "%o was pierced by a Knight Archer."
    States
    {
    Spawn:
		KNTA A 0
		KNTA A 0 ACS_ExecuteAlways(913,0,250,50,0)
	Idle:
        KNTA AB 10 A_Look
        Loop
    See:
        KNTA A 1
		KNTA A 2 A_FastChase
		KNTA B 3 A_FastChase
		KNTA C 1
		KNTA C 2 A_FastChase
		KNTA D 3 A_FastChase
        Loop
	Missile:
		KNTA E 0 A_Jump(96,"Missile2")
        KNTA E 3 A_PlaySound("archer/draw")
        KNTA E 4 A_FaceTarget
        KNTA F 5 bright A_CustomMissile("ArcherArrow",32,5)
		KNTA E 5
		KNTA E 0 A_JumpIfCloser(500, "TooClose")
        Goto See
	Missile2:
        KNTA E 3 A_PlaySound("archer/draw")
        KNTA E 4 A_FaceTarget
        KNTA G 5 bright A_CustomMissile("ArcherArrow2",32,5)
		KNTA E 5
		KNTA E 0 A_JumpIfCloser(500, "TooClose")
        Goto See
	TooClose:
		KNTA A 0 A_ChangeFlag("FRIGHTENED", 1)
		KNTA A 1
		KNTA A 2 A_Chase("","",CHF_FASTCHASE)
		KNTA B 3 A_Chase("","",CHF_FASTCHASE)
		KNTA C 1
		KNTA C 2 A_Chase("","",CHF_FASTCHASE)
		KNTA D 3 A_Chase("","",CHF_FASTCHASE)
		KNTA A 1
		KNTA A 2 A_Chase("","",CHF_FASTCHASE)
		KNTA B 3 A_Chase("","",CHF_FASTCHASE)
		KNTA C 1
		KNTA C 2 A_Chase("","",CHF_FASTCHASE)
		KNTA D 3 A_Chase("","",CHF_FASTCHASE)
		KNTA A 0 A_ChangeFlag("FRIGHTENED", 0)
		Goto See
    Pain:
		KNTA H 0
    	KNTA H 3 A_ChangeFlag("FRIGHTENED", 0)
        KNTA H 3 A_Pain
    	Goto See
    Death:
        KNTA I 5 A_Scream
        KNTA J 5 A_NoBlocking
        KNTA KLMN 5
        KNTA N -1
        Stop
    XDeath:
        KNTA O 5 A_PlaySound("archer/gib")
        KNTA P 5 A_NoBlocking
        KNTA QRSTUVWX 5
        KNTA X -1
        Stop
    }
}

actor ArcherArrow
{
   Radius 5
   Height 12
   Speed 40
   Damage (random(20,40)+(acs_executewithresult(599,17)*4))
   PROJECTILE
   +NOGRAVITY
   Species "Player"
   +THRUSPECIES
   renderstyle add
   alpha 0.8
   scale 0.5
   DamageType "PlayerDamage"
   SeeSound "archer/attack"
   DeathSound "archer/hit"
   States
   {
   Spawn:
      VEKF A 1 bright A_SpawnItem("ArcherArrowTrail")
      Loop
   Death:
      VEKF FGHI 3 bright
	Stop
   }
}


actor ArcherArrowTrail
{
	+NOCLIP
	+NOBLOCKMAP
	+NOGRAVITY
	+CLIENTSIDEONLY
	renderstyle add
	alpha 0.5
	States
	{
		Spawn:
		VEKF AABCDE 3 A_FadeOut(0.1)
		loop
	}
}

actor ArcherArrow2 : ArcherArrow
{
   Speed 45
   Damage (random(40,80)+(acs_executewithresult(599,17)*8))
   DamageType "PlayerDamage"
   SeeSound "archer/attackboss"
   States
   {
   Spawn:
      VEKG A 1 bright A_SpawnItem("ArcherArrowTrail2")
      Loop
   Death:
      VEKG FGHI 3 bright
	Stop
   }
}

actor ArcherArrowTrail2 : ArcherArrowTrail
{
	+CLIENTSIDEONLY
	States
	{
		Spawn:
		VEKG AABCDE 3 A_FadeOut(0.1)
		loop
	}
}

//////////////////////////////////////////////////// PURPLE morphing cloud

ACTOR ArtiPurpleFlask : ArtiEmptyFlask
{
  Inventory.Icon "ARTIFLA7"
  Inventory.MaxAmount 25
  Inventory.PickupMessage "PURPLE FLASK"
  Tag "Purple Flask"
  States
  {
  Spawn:
    FLA7 A -1
    Stop
  Use:
	TNT1 A 0 A_SpawnItemEx ("PurpleCloud", 0.0, 0.0, 28.0, 0.0, 0.0, 0.0, 0.0, 32, 0)
    TNT1 A 0 A_SpawnItemEx ("PurpleBag", 16.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 32, 0)
    Stop
  }
}

ACTOR PurpleBag
{
  Radius 5
  Height 5
  +NOBLOCKMAP
  +NOGRAVITY

  States
  {
  Spawn:
    FLA7 A 18 Bright
    FLA7 B 4 Bright
    FLA7 C 3
    FLA7 C 1 //A_SpawnItemEx ("PurpleCloud", 0.0, 0.0, 28.0, 0.0, 0.0, 0.0, 0.0, 32, 0)
    Stop
  }
}

ACTOR PurpleCloud
{
  Radius 32
  Height 32
  Mass 1000
  scale 1.25
  +NOGRAVITY
  +MISSILE
  +RIPPER
  +DROPOFF
  +NODAMAGETHRUST
  +DONTSPLASH
  +FOILINVUL
  +CANBLAST
  +BLOODLESSIMPACT
  +NOTELEPORT
  +FORCEXYBILLBOARD
  RenderStyle Translucent
  Alpha 0.6
  DeathSound "PoisonShroomDeath"
  reactiontime 30

  States
  {
  Spawn:
	TNT1 A 25
    FLA7 D 1
    FLA7 D 1 A_Scream
    Goto Cast
  Cast:
    FLA7 D 0 A_Countdown
    FLA7 DEE 2
    FLA7 EF 2 A_CustomMissile ("PurpleShot", 8.0, 4.0, random(0,359), 6, (5 - random(0,10)))
    FLA7 FFG 2
    FLA7 GG 2 A_CustomMissile ("PurpleShot", 8.0, 4.0, random(0,359), 6, (5 - random(0,10)))
    FLA7 HHH 2
    FLA7 II 2 A_CustomMissile ("PurpleShot", 8.0, 4.0, random(0,359), 6, (5 - random(0,10)))
    FLA7 I 2
    FLA7 I 1 A_CustomMissile ("PurpleShot", 8.0, 4.0, random(0,359), 6, (5 - random(0,10)))
    Goto Cast
  Death:
    FLA7 HG 7
    FLA7 FD 6
    Stop
  }
}

actor PurpleShot// : PorkFX
{
  Speed 8
  Height 14
  Radius 10
  Damage (3+(acs_executewithresult(599,9))/2)
  Projectile
  RenderStyle Add
  DeathSound "SerpentFXHit"
  reactiontime 3

  States
  {
  Spawn:
    FL7P A 0 A_Countdown
    FL7P A 3 Bright A_PlaySoundEx("SerpentFXContinuous", "Body", 1)
    FL7P BAB 3 Bright
    Goto Spawn
  Death:
    FL7P C 4 Bright A_StopSoundEx("Body")
    FL7P DE 4 Bright
    Stop
  }
}

//////////////////////////////////////////////////// AQUA seeking killer water o_O

ACTOR ArtiAquaFlask : ArtiEmptyFlask
{
  Inventory.Icon "ARTIFLA8"
  Inventory.MaxAmount 25
  Inventory.PickupMessage "AQUA FLASK"
  Tag "Aqua Flask"
  States
  {
  Spawn:
    FLA8 A -1
    Stop
  Use:
    TNT1 A 0 A_FireCustomMissile ("AquaBomb", 0, 0, 0, 5)
    Stop
  }
}

ACTOR AquaBomb : ThrowingBomb
{
  Speed 28
  +EXPLODEONWATER
  States
  {
  Spawn:
    FTH8 A 4 A_CheckThrowBomb
    FTH8 BCDE 3 A_CheckThrowBomb
    FTH8 F 3 A_CheckThrowBomb2
    Loop
    FTH8 G 6 A_CheckThrowBomb
    FTH8 F 4 A_CheckThrowBomb
    FTH8 H 6 A_CheckThrowBomb
    FTH8 F 4 A_CheckThrowBomb
    FTH8 G 6 A_CheckThrowBomb
    FTH8 F 3 A_CheckThrowBomb
    Wait
  Death:
	CFCF Q 0 Bright A_AlertMonsters
	CFCF Q 0 Bright A_SetTranslucent(1,1)
	CFCF Q 1 Bright A_NoGravity
	CFCF QQQ 1 Bright A_SpawnItemEx("FlailPuffParticleFXSpawner")
    CFCF R 0 Bright A_Scream
	CFCF RRR 1 Bright A_SpawnItemEx("FlailPuffParticleFXSpawner")
	CFCF S 0 Bright A_SpawnItemEx ("WaterSeeker", 0.0, 0.0, 0.0, 12.0, 0.0, 0.0,   0.0, 32, 0) //
    CFCF S 0 Bright A_SpawnItemEx ("WaterSeeker", 0.0, 0.0, 0.0, 12.0, 0.0, 0.0,  16.0, 32, 0)
    CFCF S 0 Bright A_SpawnItemEx ("WaterSeeker", 0.0, 0.0, 0.0, 12.0, 0.0, 0.0,  32.0, 32, 0) //
    CFCF S 0 Bright A_SpawnItemEx ("WaterSeeker", 0.0, 0.0, 0.0, 12.0, 0.0, 0.0,  48.0, 32, 0)
    CFCF S 0 Bright A_SpawnItemEx ("WaterSeeker", 0.0, 0.0, 0.0, 12.0, 0.0, 0.0,  64.0, 32, 0) //
    CFCF S 0 Bright A_SpawnItemEx ("WaterSeeker", 0.0, 0.0, 0.0, 12.0, 0.0, 0.0,  80.0, 32, 0)
    CFCF S 0 Bright A_SpawnItemEx ("WaterSeeker", 0.0, 0.0, 0.0, 12.0, 0.0, 0.0,  96.0, 32, 0) //
    CFCF S 0 Bright A_SpawnItemEx ("WaterSeeker", 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 112.0, 32, 0)
    CFCF S 0 Bright A_SpawnItemEx ("WaterSeeker", 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 128.0, 32, 0) //
    CFCF S 0 Bright A_SpawnItemEx ("WaterSeeker", 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 144.0, 32, 0)
    CFCF S 0 Bright A_SpawnItemEx ("WaterSeeker", 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 160.0, 32, 0) //
    CFCF S 0 Bright A_SpawnItemEx ("WaterSeeker", 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 176.0, 32, 0)
    CFCF S 0 Bright A_SpawnItemEx ("WaterSeeker", 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 192.0, 32, 0) //
    CFCF S 0 Bright A_SpawnItemEx ("WaterSeeker", 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 208.0, 32, 0)
    CFCF S 0 Bright A_SpawnItemEx ("WaterSeeker", 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 224.0, 32, 0) //
    CFCF S 0 Bright A_SpawnItemEx ("WaterSeeker", 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 240.0, 32, 0)
    CFCF S 0 Bright A_Explode (128+2*(acs_executewithresult(599,9)), 128, 1)
	CFCF SSSS 1 Bright A_SpawnItemEx("FlailPuffParticleFXSpawner")
    CFCF T 3 Bright
    CFCF U 4 Bright
    CFCF W 3 Bright
    CFCF X 4 Bright
    CFCF Z 3 Bright
    Stop
  }
}

ACTOR WaterSeeker
{
  +LOOKALLAROUND
  +CANTLEAVEFLOORPIC
  +DONTBLAST
  +DONTSPLASH
  +NODAMAGETHRUST
  +FOILINVUL
  +FRIENDLY
  -COUNTKILL
  height 8
  radius 8
  speed 24
  meleedamage 2
  meleerange 32
  renderstyle translucent
  alpha 0.5
  reactiontime 45

  states
  {
  Spawn:
    WSSP A 0
    WSSP A 1 A_Countdown
    WSSP BCDEFG 1 A_Chase ("Attack", 0, 0)
    loop
  Attack:
    WSSP A 1 A_MeleeAttack
    Goto Spawn
  Death:
    TNT1 A 1
    stop
  }
}

//////////////////////////////////////////////////// MAROON shootable explosive

ACTOR ArtiMaroonFlask : ArtiEmptyFlask
{
  Inventory.Icon "ARTIFLA9"
  Inventory.MaxAmount 25
  Inventory.PickupMessage "MAROON FLASK"
  Tag "Maroon Flask"
  States
  {
  Spawn:
    FLA9 A -1
    Stop
  Use:
    TNT1 A 0 A_SpawnItemEx ("MaroonBomb", 40.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 32, 0)
    Stop
  }
}

ACTOR MaroonBomb
{
  Health 5
  Radius 8
  Height 12
  DamageType "Fire"
  Damage (128+(acs_executewithresult(599,9)))
  +CANPASS
  +SLIDESONWALLS
  +DONTBLAST
  +MISSILE
  +NOGRAVITY
  +MTHRUSPECIES
  DeathSound "FlechetteExplode"
  Obituary "%o went boom."
  States
  {
  Spawn:
    FLA9 B -1
    Stop
  Death:
	CFCF Q 0 Bright A_AlertMonsters
	CFCF Q 0 Bright A_SetTranslucent(1,1)
	CFCF Q 1 Bright A_NoGravity
	CFCF QQQ 1 Bright A_SpawnItemEx("FlailPuffParticleFXSpawner")
    CFCF R 0 Bright A_Scream
	CFCF RRR 1 Bright A_SpawnItemEx("FlailPuffParticleFXSpawner")
    CFCF S 0 Bright A_Explode (128+(acs_executewithresult(599,9)), 128, 1)
	CFCF SSSS 1 Bright A_SpawnItemEx("FlailPuffParticleFXSpawner")
    CFCF T 3 Bright
    CFCF U 4 Bright
    CFCF W 3 Bright
    CFCF X 4 Bright
    CFCF Z 3 Bright
    Stop
  }
}

//////////////////////////////////////////////////// TAN a catalyst potion (couldn't figure out anything D:)

ACTOR ArtiTanFlask : ArtiEmptyFlask
{
  Inventory.Icon "ARTIFL10"
  Inventory.MaxAmount 25
  Inventory.PickupMessage "TAN FLASK"
  Tag "Tan Flask"
  States
  {
  Spawn:
    FL10 A -1
    Stop
  Use:
    TNT1 A 0 A_FireCustomMissile ("TanBomb", 0, 0, 0, 5)
    Stop
  }
}

ACTOR TanBomb : ThrowingBomb
{
  Speed 28
  BounceCount 1
  States
  {
  Spawn:
    FT10 A 4 A_CheckThrowBomb
    FT10 BCDE 3 A_CheckThrowBomb
    FT10 F 3 A_CheckThrowBomb2
    Loop
    FT10 G 6 A_CheckThrowBomb
    FT10 F 4 A_CheckThrowBomb
    FT10 H 6 A_CheckThrowBomb
    FT10 F 4 A_CheckThrowBomb
    FT10 G 6 A_CheckThrowBomb
    FT10 F 3 A_CheckThrowBomb
    Wait
  Death:
	TNT1 A 0 Bright A_AlertMonsters
	TNT1 A 0 A_CustomMissile("GlassShard7",0,0,random(0,359),6,random(0,359))
	TNT1 AAA 0 A_CustomMissile("GlassShard6",0,0,random(0,359),6,random(0,359))
	TNT1 AAA 0 A_CustomMissile("GlassShard5",0,0,random(0,359),6,random(0,359))
	TNT1 AAA 0 A_CustomMissile("GlassShard4",0,0,random(0,359),6,random(0,359))
	TNT1 AAA 0 A_CustomMissile("GlassShard3",0,0,random(0,359),6,random(0,359))
	TNT1 AAA 0 A_CustomMissile("GlassShard2",0,0,random(0,359),6,random(0,359))
	TNT1 AAAA 0 A_CustomMissile("GlassShard1",0,0,random(0,359),6,random(0,359))
    Stop
  }
}

ACTOR SlugShard
{
	radius 3
	height 6
	Alpha		1
	Mass		0  
	BounceFactor 0.55
	+missile
	+doombounce
	+FLOORCLIP
	+DONTSPLASH
	+NOTELEPORT
	-SOLID
	+CLIENTSIDEONLY
	Gravity 1
	Health 3
	Scale 0.3
	Speed .2
	RenderStyle Translucent
	States
	{
	Spawn:
		SHRD NLMNLMNLMNLMNLMNLMLMNLMNLMNLMNLMNLMNLM 2
		goto Death
	Death:
	    SHRD NLMNLMNLMN 1 A_FadeOut(0.1)
		NULL A 0
		Stop
	}
}

ACTOR GlassShard1
{
   Radius 5
   Height 5
   Damage (4+(acs_executewithresult(599,9)))
   Obituary "%k flung glass into %o's face."
   SeeSound "flechette/caltink"
   Speed 11
   Scale 0.4
   Alpha 0.95
   RenderStyle Translucent
   +MISSILE
   +DOOMBOUNCE
   +THRUGHOST
   States
   {
   Spawn:
	  GLAS A 0 A_PlaySound("godcan/silence")
      GLAS A 0 A_Gravity
      GLAS AA 5
      goto Spawn+1
   Death:
      GLAS AAAAAA 5 A_FadeOut(0.05)
      GLAS A 2 A_SpawnItem("GlassShard1Attack")
      Stop
   }
}

ACTOR GlassShard1Attack
{
   Radius 5
   Height 5
   Health 3
   Damage (8+(2*(acs_executewithresult(599,9))))
   Obituary "%k snared %o and left %h for dead."
   SeeSound "flechette/caltink"
   DeathSound "flechette/calbreak"
   Speed 0
   Scale 0.4
   Alpha 0.55
   RenderStyle Translucent
   +FIXMAPTHINGPOS
   +NOEXTREMEDEATH
   +DOOMBOUNCE
   +NORADIUSDMG
   +NOBLOOD
   //+SHOOTABLE
   +WINDTHRUST
   //+THRUSPECIES
   //+NOTELEFRAG
   +MISSILE
   States
   {
   Spawn:
      //GLAS A 0 A_Gravity
      GLAS AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 5 A_Gravity
	  Goto TimeUp
   Death:
      GLAS A 0
      GLAS A 5 A_Explode(4,3,1,0)
      GLAS A 0 A_SpawnDebris("SlugShard")
      Stop
   TimeUp:
      GLAS AAAAAAAAAAA 1 A_FadeOut(0.05)
	  Stop
   }
}

ACTOR GlassShard2
{
   Radius 5
   Height 5
   Damage (4+(acs_executewithresult(599,9)))
   Obituary "%k flung glass into %o's face."
   SeeSound "flechette/caltink"
   Speed 10
   Scale 0.4
   Alpha 0.95
   RenderStyle Translucent
   +MISSILE
   +DOOMBOUNCE
   +THRUGHOST
   States
   {
   Spawn:
	  GLAS A 0 A_PlaySound("godcan/silence")
      GLAS B 0 A_Gravity
      GLAS BB 5
      goto Spawn+1
   Death:
      GLAS BBBBBB 5 A_FadeOut(0.05)
      GLAS B 2 A_SpawnItem("GlassShard2Attack")
      Stop
   }
}

ACTOR GlassShard2Attack
{
   Radius 5
   Height 5
   Health 3
   Damage (8+(2*(acs_executewithresult(599,9))))
   Obituary "%k snared %o and left %h for dead."
   SeeSound "flechette/caltink"
   DeathSound "flechette/calbreak"
   Speed 0
   Scale 0.4
   Alpha 0.55
   RenderStyle Translucent
   +FIXMAPTHINGPOS
   +NOEXTREMEDEATH
   +DOOMBOUNCE
   +NORADIUSDMG
   +NOBLOOD
   //+SHOOTABLE
   +WINDTHRUST
   //+THRUSPECIES
   //+NOTELEFRAG
   +MISSILE
   States
   {
   Spawn:
      //GLAS B 0 A_Gravity
      GLAS BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 5 A_Gravity
	  Goto TimeUp
   Death:
      GLAS B 0
      GLAS B 5 A_Explode(4,3,1,0)
      GLAS B 0 A_SpawnDebris("SlugShard")
      Stop
   TimeUp:
      GLAS BBBBBBBBBBB 1 A_FadeOut(0.05)
	  Stop
   }
}

ACTOR GlassShard3
{
   Radius 5
   Height 5
   Damage (4+(acs_executewithresult(599,9)))
   Obituary "%k flung glass into %o's face."
   SeeSound "flechette/caltink"
   Speed 11
   Scale 0.4
   Alpha 0.95
   RenderStyle Translucent
   +MISSILE
   +DOOMBOUNCE
   +THRUGHOST
   States
   {
   Spawn:
	  GLAS C 0 A_PlaySound("godcan/silence")
      GLAS C 0 A_Gravity
      GLAS CC 5
      goto Spawn+1
   Death:
      GLAS CCCCCC 5 A_FadeOut(0.05)
      GLAS C 2 A_SpawnItem("GlassShard3Attack")
      Stop
   }
}

ACTOR GlassShard3Attack
{
   Radius 5
   Height 5
   Health 3
   Damage (8+(2*(acs_executewithresult(599,9))))
   Obituary "%k snared %o and left %h for dead."
   SeeSound "flechette/caltink"
   DeathSound "flechette/calbreak"
   Speed 0
   Scale 0.4
   Alpha 0.55
   RenderStyle Translucent
   +FIXMAPTHINGPOS
   +NOEXTREMEDEATH
   +DOOMBOUNCE
   +NORADIUSDMG
   +NOBLOOD
   //+SHOOTABLE
   +WINDTHRUST
   //+THRUSPECIES
   //+NOTELEFRAG
   +MISSILE
   States
   {
   Spawn:
      //GLAS C 0 A_Gravity
      GLAS CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 5 A_Gravity
	  Goto TimeUp
   Death:
      GLAS C 0
      GLAS C 5 A_Explode(4,3,1,0)
      GLAS C 0 A_SpawnDebris("SlugShard")
      Stop
   TimeUp:
      GLAS CCCCCCCCCCC 1 A_FadeOut(0.05)
	  Stop
   }
}

ACTOR GlassShard4
{
   Radius 5
   Height 5
   Damage (4+(acs_executewithresult(599,9)))
   Obituary "%k flung glass into %o's face."
   SeeSound "flechette/caltink"
   Speed 10
   Scale 0.4
   Alpha 0.95
   RenderStyle Translucent
   +MISSILE
   +DOOMBOUNCE
   +THRUGHOST
   States
   {
   Spawn:
	  GLAS D 0 A_PlaySound("godcan/silence")
      GLAS D 0 A_Gravity
      GLAS DD 5
      goto Spawn+1
   Death:
      GLAS DDDDDD 5 A_FadeOut(0.05)
      GLAS D 2 A_SpawnItem("GlassShard4Attack")
      Stop
   }
}

ACTOR GlassShard4Attack
{
   Radius 5
   Height 5
   Health 3
   Damage (8+(2*(acs_executewithresult(599,9))))
   Obituary "%k snared %o and left %h for dead."
   SeeSound "flechette/caltink"
   DeathSound "flechette/calbreak"
   Speed 0
   Scale 0.4
   Alpha 0.55
   RenderStyle Translucent
   +FIXMAPTHINGPOS
   +NOEXTREMEDEATH
   +DOOMBOUNCE
   +NORADIUSDMG
   +NOBLOOD
   //+SHOOTABLE
   +WINDTHRUST
   //+THRUSPECIES
   //+NOTELEFRAG
   +MISSILE
   States
   {
   Spawn:
      //GLAS D 0 A_Gravity
      GLAS DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 5 A_Gravity
	  Goto TimeUp
   Death:
      GLAS D 0
      GLAS D 5 A_Explode(4,3,1,0)
      GLAS D 0 A_SpawnDebris("SlugShard")
      Stop
   TimeUp:
      GLAS DDDDDDDDDDD 1 A_FadeOut(0.05)
	  Stop
   }
}

ACTOR GlassShard5
{
   Radius 5
   Height 5
   Damage (2*(acs_executewithresult(599,9)))
   Obituary "%k flung glass into %o's face."
   SeeSound "flechette/caltink"
   Speed 11
   Scale 0.4
   Alpha 0.95
   RenderStyle Translucent
   +MISSILE
   +DOOMBOUNCE
   +THRUGHOST
   States
   {
   Spawn:
	  GLAS E 0 A_PlaySound("godcan/silence")
      GLAS E 0 A_Gravity
      GLAS EE 5
      goto Spawn+1
   Death:
      GLAS EEEEEE 5 A_FadeOut(0.05)
      GLAS E 2 A_SpawnItem("GlassShard5Attack")
      Stop
   }
}

ACTOR GlassShard5Attack
{
   Radius 5
   Height 5
   Health 3
   Damage (8+(2*(acs_executewithresult(599,9))))
   Obituary "%k snared %o and left %h for dead."
   SeeSound "flechette/caltink"
   DeathSound "flechette/calbreak"
   Speed 0
   Scale 0.4
   Alpha 0.55
   RenderStyle Translucent
   +FIXMAPTHINGPOS
   +NOEXTREMEDEATH
   +DOOMBOUNCE
   +NORADIUSDMG
   +NOBLOOD
   //+SHOOTABLE
   +WINDTHRUST
   //+THRUSPECIES
   //+NOTELEFRAG
   +MISSILE
   States
   {
   Spawn:
      //GLAS E 0 A_Gravity
      GLAS EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 5 A_Gravity
	  Goto TimeUp
   Death:
      GLAS E 0
      GLAS E 5 A_Explode(4,3,1,0)
      GLAS E 0 A_SpawnDebris("SlugShard")
      Stop
   TimeUp:
      GLAS EEEEEEEEEEE 1 A_FadeOut(0.05)
	  Stop
   }
}

ACTOR GlassShard6
{
   Radius 5
   Height 5
   Damage (4+(acs_executewithresult(599,9)))
   Obituary "%k flung glass into %o's face."
   SeeSound "flechette/caltink"
   Speed 10
   Scale 0.4
   Alpha 0.95
   RenderStyle Translucent
   +MISSILE
   +DOOMBOUNCE
   +THRUGHOST
   States
   {
   Spawn:
	  GLAS F 0 A_PlaySound("godcan/silence")
      GLAS F 0 A_Gravity
      GLAS FF 5
      goto Spawn+1
   Death:
      GLAS FFFFFF 5 A_FadeOut(0.05)
      GLAS F 2 A_SpawnItem("GlassShard6Attack")
      Stop
   }
}

ACTOR GlassShard6Attack
{
   Radius 5
   Height 5
   Health 3
   Damage (8+(2*(acs_executewithresult(599,9))))
   Obituary "%k snared %o and left %h for dead."
   SeeSound "flechette/caltink"
   DeathSound "flechette/calbreak"
   Speed 0
   Scale 0.4
   Alpha 0.55
   RenderStyle Translucent
   +FIXMAPTHINGPOS
   +NOEXTREMEDEATH
   +DOOMBOUNCE
   +NORADIUSDMG
   +NOBLOOD
   //+SHOOTABLE
   +WINDTHRUST
   //+THRUSPECIES
   //+NOTELEFRAG
   +MISSILE
   States
   {
   Spawn:
      //GLAS F 0 A_Gravity
      GLAS FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 5 A_Gravity
	  Goto TimeUp
   Death:
      GLAS F 0
      GLAS F 5 A_Explode(4,3,1,0)
      GLAS F 0 A_SpawnDebris("SlugShard")
      Stop
   TimeUp:
      GLAS FFFFFFFFFFF 1 A_FadeOut(0.05)
	  Stop
   }
}

ACTOR GlassShard7
{
   Radius 5
   Height 5
   Damage (4+(acs_executewithresult(599,9)))
   Obituary "%k flung glass into %o's face."
   SeeSound "flechette/caltink"
   Speed 9
   Scale 0.4
   Alpha 0.95
   RenderStyle Translucent
   +MISSILE
   +DOOMBOUNCE
   +THRUGHOST
   States
   {
   Spawn:
	  GLAS G 0 A_PlaySound("godcan/silence")
      GLAS G 0 A_Gravity
      GLAS GG 5
      goto Spawn+1
   Death:
      GLAS GGGGGG 5 A_FadeOut(0.05)
      GLAS G 2 A_SpawnItem("GlassShard7Attack")
      Stop
   }
}

ACTOR GlassShard7Attack
{
   Radius 5
   Height 5
   Health 3
   Damage (8+(2*(acs_executewithresult(599,9))))
   Obituary "%k snared %o and left %h for dead."
   SeeSound "flechette/caltink"
   DeathSound "flechette/calbreak"
   Speed 0
   Scale 0.4
   Alpha 0.55
   RenderStyle Translucent
   +FIXMAPTHINGPOS
   +NOEXTREMEDEATH
   +DOOMBOUNCE
   +NORADIUSDMG
   +NOBLOOD
   //+SHOOTABLE
   +WINDTHRUST
   //+THRUSPECIES
   //+NOTELEFRAG
   +MISSILE
   States
   {
   Spawn:
      //GLAS G 0 A_Gravity
      GLAS GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG 5 A_Gravity
	  Goto TimeUp
   Death:
      GLAS G 0
      GLAS G 5 A_Explode(5,3,1,0)
      GLAS G 0 A_SpawnDebris("SlugShard")
      Stop
   TimeUp:
      GLAS GGGGGGGGGGG 1 A_FadeOut(0.05)
	  Stop
   }
}

//////////////////////////////////////////////////// ORANGE spreading fire ball explosion throwing bomb

ACTOR ArtiOrangeFlask : ArtiEmptyFlask
{
  Inventory.Icon "ARTIFL11"
  Inventory.MaxAmount 25
  Inventory.PickupMessage "ORANGE FLASK"
  Tag "Orange Flask"
  States
  {
  Spawn:
    FL11 A -1
    Stop
  Use:
    TNT1 A 0 A_FireCustomMissile ("OrangeBomb", 0, 0, 0, 5)
    Stop
  }
}

ACTOR OrangeBomb : ThrowingBomb
{
  Speed 28
  States
  {
  Spawn:
    FT11 A 4 A_CheckThrowBomb
    FT11 BCDE 3 A_CheckThrowBomb
    FT11 F 3 A_CheckThrowBomb2
    Loop
    FT11 G 6 A_CheckThrowBomb
    FT11 F 4 A_CheckThrowBomb
    FT11 H 6 A_CheckThrowBomb
    FT11 F 4 A_CheckThrowBomb
    FT11 G 6 A_CheckThrowBomb
    FT11 F 3 A_CheckThrowBomb
    Wait
  Death:
	CFCF Q 0 Bright A_AlertMonsters
	CFCF Q 0 Bright A_SetTranslucent(1,1)
	CFCF Q 1 Bright A_NoGravity
	CFCF QQQ 1 Bright A_SpawnItemEx("FlailPuffParticleFXSpawner")
    CFCF R 0 Bright A_Scream
	CFCF RRR 1 Bright A_SpawnItemEx("FlailPuffParticleFXSpawner")
	CFCF S 0 Bright A_SpawnItemEx ("zFireball", 0.0, 0.0, 0.0, 8.0, 0.0, 12.0,   0.0, 32, 0) //
    CFCF S 0 Bright A_SpawnItemEx ("zFireball", 0.0, 0.0, 0.0, 8.0, 0.0, 12.0,  16.0, 32, 0)
    CFCF S 0 Bright A_SpawnItemEx ("zFireball", 0.0, 0.0, 0.0, 8.0, 0.0, 12.0,  32.0, 32, 0) //
    CFCF S 0 Bright A_SpawnItemEx ("zFireball", 0.0, 0.0, 0.0, 8.0, 0.0, 12.0,  48.0, 32, 0)
    CFCF S 0 Bright A_SpawnItemEx ("zFireball", 0.0, 0.0, 0.0, 8.0, 0.0, 12.0,  64.0, 32, 0) //
    CFCF S 0 Bright A_SpawnItemEx ("zFireball", 0.0, 0.0, 0.0, 8.0, 0.0, 12.0,  80.0, 32, 0)
    CFCF S 0 Bright A_SpawnItemEx ("zFireball", 0.0, 0.0, 0.0, 8.0, 0.0, 12.0,  96.0, 32, 0) //
    CFCF S 0 Bright A_SpawnItemEx ("zFireball", 0.0, 0.0, 0.0, 8.0, 0.0, 12.0, 112.0, 32, 0)
    CFCF S 0 Bright A_SpawnItemEx ("zFireball", 0.0, 0.0, 0.0, 8.0, 0.0, 12.0, 128.0, 32, 0) //
    CFCF S 0 Bright A_SpawnItemEx ("zFireball", 0.0, 0.0, 0.0, 8.0, 0.0, 12.0, 144.0, 32, 0)
    CFCF S 0 Bright A_SpawnItemEx ("zFireball", 0.0, 0.0, 0.0, 8.0, 0.0, 12.0, 160.0, 32, 0) //
    CFCF S 0 Bright A_SpawnItemEx ("zFireball", 0.0, 0.0, 0.0, 8.0, 0.0, 12.0, 176.0, 32, 0)
    CFCF S 0 Bright A_SpawnItemEx ("zFireball", 0.0, 0.0, 0.0, 8.0, 0.0, 12.0, 192.0, 32, 0) //
    CFCF S 0 Bright A_SpawnItemEx ("zFireball", 0.0, 0.0, 0.0, 8.0, 0.0, 12.0, 208.0, 32, 0)
    CFCF S 0 Bright A_SpawnItemEx ("zFireball", 0.0, 0.0, 0.0, 8.0, 0.0, 12.0, 224.0, 32, 0) //
    CFCF S 0 Bright A_SpawnItemEx ("zFireball", 0.0, 0.0, 0.0, 8.0, 0.0, 12.0, 240.0, 32, 0)
    CFCF S 0 Bright A_Explode (128+2*(acs_executewithresult(599,9)), 128, 1)
	CFCF SSSS 1 Bright A_SpawnItemEx("FlailPuffParticleFXSpawner")
    CFCF T 3 Bright
    CFCF U 4 Bright
    CFCF W 3 Bright
    CFCF X 4 Bright
    CFCF Z 3 Bright
    Stop
  }
}

ACTOR zFireball : FireBall
{
  Speed 24
  Damage (10+(acs_executewithresult(599,9)))
  DamageType "Fire"
  -NOGRAVITY
  Gravity 0.75
  RenderStyle Add
}

//Vial = 20%, Penta = 25%, Hexa = 33%, Round = 50%
/////////////////////////////////////////////////////////////Blue Crystal Potions

actor BluePotionHexagon : CustomInventory
{
  +FLOATBOB
  Inventory.Amount 10
  Inventory.PickupSound "pickup/health"
  Inventory.PickupMessage "Large Crystal Potion" // "QUARTZ FLASK"
  States
  {
  Spawn:
    AHPT ABC 4
    Loop
  Pickup:
    TNT1 A 0 A_JumpIfHealthLower(ACS_ExecuteWithResult(553,0,0,0),"Pickedup")
    Fail
  Pickedup:
    TNT1 A 0 ACS_ExecuteAlways(554,0,ACS_ExecuteWithResult(553,0,0,0)/6,0,0)//Heal 1/6 of total health//A_GiveInventory("NewHealth",ACS_ExecuteWithResult(553,1,0,0))//HealThing(100)//ACS_ExecuteWithResult(553,1,0,0))
    stop
  }
}

actor BluePotionPentagon : CustomInventory
{
  +FLOATBOB
  Inventory.Amount 10
  Inventory.PickupSound "pickup/health"
  Inventory.PickupMessage "Crystal Potion" // "QUARTZ FLASK"
  States
  {
  Spawn:
    APPT ABC 4
    Loop
  Pickup:
    TNT1 A 0 A_JumpIfHealthLower(ACS_ExecuteWithResult(553,0,0,0),"Pickedup")
    Fail
  Pickedup:
    TNT1 A 0 ACS_ExecuteAlways(554,0,ACS_ExecuteWithResult(553,0,0,0)/8,0,0)//Heal 1/6 of total health//A_GiveInventory("NewHealth",ACS_ExecuteWithResult(553,1,0,0))//HealThing(100)//ACS_ExecuteWithResult(553,1,0,0))
    stop
  }
}

actor BluePotionRound : CustomInventory
{
  +FLOATBOB
  Inventory.Amount 10
  Inventory.PickupSound "pickup/health"
  Inventory.PickupMessage "Supreme Crystal Potion" // "QUARTZ FLASK"
  States
  {
  Spawn:
    ARPT ABC 4
    Loop
  Pickup:
    TNT1 A 0 A_JumpIfHealthLower(ACS_ExecuteWithResult(553,0,0,0),"Pickedup")
    Fail
  Pickedup:
    TNT1 A 0 ACS_ExecuteAlways(554,0,ACS_ExecuteWithResult(553,0,0,0)/4,0,0)//Heal 1/6 of total health//A_GiveInventory("NewHealth",ACS_ExecuteWithResult(553,1,0,0))//HealThing(100)//ACS_ExecuteWithResult(553,1,0,0))
    stop
  }
}

actor BluePotionVial : CustomInventory
{
  +FLOATBOB
  Inventory.Amount 10
  Inventory.PickupSound "pickup/health"
  Inventory.PickupMessage "Minor Crystal Potion"
  States
  {
  Spawn:
    AVPT ABC 4
    Loop
  Pickup:
    TNT1 A 0 A_JumpIfHealthLower(ACS_ExecuteWithResult(553,0,0,0),"Pickedup")
    Fail
  Pickedup:
    TNT1 A 0 ACS_ExecuteAlways(554,0,ACS_ExecuteWithResult(553,0,0,0)/20,0,0)//Heal 1/6 of total health//A_GiveInventory("NewHealth",ACS_ExecuteWithResult(553,1,0,0))//HealThing(100)//ACS_ExecuteWithResult(553,1,0,0))
    stop
  }
}

/////////////////////////////////////////////////////////////Purple Carriable Potions
actor PurplePotionHexagon : CustomInventory
{
  +INVENTORY.INVBAR
  Inventory.MaxAmount 25
  +COUNTITEM
  +FLOATBOB
  +INVENTORY.PICKUPFLASH
  +INVENTORY.FANCYPICKUPSOUND
  Inventory.Icon "PHPTZ0"
  Inventory.PickupSound "misc/p_pkup"
  Inventory.PickupMessage "Large Health Potion"
  Tag "Large Health Potion"
  //+KEEPDEPLETED
  States
  {
  Spawn:
    PHPT ABC 4
    Loop
  Use:
    TNT1 A 0 A_JumpIfHealthLower(ACS_ExecuteWithResult(553,0,0,0),"Pickedup")
    Fail
  Pickedup:
	TNT1 A 0 A_PlaySound("pickup/Health", 3)
    TNT1 A 0 ACS_ExecuteAlways(554,0,ACS_ExecuteWithResult(553,0,0,0)/3,0,0)//Heal 1/6 of total health//A_GiveInventory("NewHealth",ACS_ExecuteWithResult(553,1,0,0))//HealThing(100)//ACS_ExecuteWithResult(553,1,0,0))
    stop
  }
}

actor PurplePotionPentagon : CustomInventory
{
  +INVENTORY.INVBAR
  Inventory.MaxAmount 25
  +COUNTITEM
  +FLOATBOB
  +INVENTORY.PICKUPFLASH
  +INVENTORY.FANCYPICKUPSOUND
  Inventory.Icon "PPPTZ0"
  Inventory.PickupSound "misc/p_pkup"
  Inventory.PickupMessage "Health Potion"
  Tag "Health Potion"
  //+KEEPDEPLETED
  States
  {
  Spawn:
    PPPT ABC 4
    Loop
  Use:
    TNT1 A 0 A_JumpIfHealthLower(ACS_ExecuteWithResult(553,0,0,0),"Pickedup")
    Fail
  Pickedup:
  TNT1 A 0 A_PlaySound("pickup/Health", 3)
    TNT1 A 0 ACS_ExecuteAlways(554,0,ACS_ExecuteWithResult(553,0,0,0)/4,0,0)//Heal 1/6 of total health//A_GiveInventory("NewHealth",ACS_ExecuteWithResult(553,1,0,0))//HealThing(100)//ACS_ExecuteWithResult(553,1,0,0))
    stop
  }
}

actor PurplePotionRound : CustomInventory
{
  +INVENTORY.INVBAR
  Inventory.MaxAmount 25
  +COUNTITEM
  +FLOATBOB
  +INVENTORY.PICKUPFLASH
  +INVENTORY.FANCYPICKUPSOUND
  Inventory.Icon "PRPTZ0"
  Inventory.PickupSound "misc/p_pkup"
  Inventory.PickupMessage "Supreme Health Potion"
  Tag "Supreme Health Potion"
  //+KEEPDEPLETED
  States
  {
  Spawn:
    PRPT ABC 4
    Loop
  Use:
    TNT1 A 0 A_JumpIfHealthLower(ACS_ExecuteWithResult(553,0,0,0),"Pickedup")
    Fail
  Pickedup:
  TNT1 A 0 A_PlaySound("pickup/Health", 3)
    TNT1 A 0 ACS_ExecuteAlways(554,0,ACS_ExecuteWithResult(553,0,0,0)/2,0,0)//Heal 1/6 of total health//A_GiveInventory("NewHealth",ACS_ExecuteWithResult(553,1,0,0))//HealThing(100)//ACS_ExecuteWithResult(553,1,0,0))
    stop
  }
}

actor PurplePotionVial : CustomInventory
{
  +INVENTORY.INVBAR
  Inventory.MaxAmount 25
  +COUNTITEM
  +FLOATBOB
  +INVENTORY.PICKUPFLASH
  +INVENTORY.FANCYPICKUPSOUND
  Inventory.Icon "PVPTZ0"
  Inventory.PickupSound "misc/p_pkup"
  Inventory.PickupMessage "Minor Health Potion"
  Tag "Minor Health Potion"
  //+KEEPDEPLETED
  States
  {
  Spawn:
    PVPT ABC 4
    Loop
  Use:
    TNT1 A 0 A_JumpIfHealthLower(ACS_ExecuteWithResult(553,0,0,0),"Pickedup")
    Fail
  Pickedup:
  TNT1 A 0 A_PlaySound("pickup/Health", 3)
    TNT1 A 0 ACS_ExecuteAlways(554,0,ACS_ExecuteWithResult(553,0,0,0)/10,0,0)//Heal 1/6 of total health//A_GiveInventory("NewHealth",ACS_ExecuteWithResult(553,1,0,0))//HealThing(100)//ACS_ExecuteWithResult(553,1,0,0))
    stop
  }
}
