//===========================================================================
//
// Flemoidus
//
//===========================================================================

// Flemoidus Commonus ------------------------------------------------------------

// This corrects a long-standing issue in chex.wad (and chex3.wad) of the pain
// and death Flemoid states not being properly lit. It really does just make the
// game look nicer.--Acts 19 quiz
ACTOR FixedFlemoidusCommonusTLQ : FlemoidusCommonusTLQ replaces FlemoidusCommonusTLQ
{
	States
	{
	Pain:
		POSS G 3 BRIGHT
		POSS G 3 BRIGHT A_Pain
		Goto See
	Death:
		POSS H 5 BRIGHT
		POSS I 5 BRIGHT A_Scream
		POSS J 5 BRIGHT A_NoBlocking
		POSS K 5 BRIGHT
		POSS L -1
		Stop
	XDeath:
		POSS M 5 BRIGHT
		POSS N 5 BRIGHT A_XScream
		POSS O 5 BRIGHT A_NoBlocking
		POSS P 5 BRIGHT
		POSS QRST 5
		POSS U -1
		Stop
	Raise:
		POSS K 5 BRIGHT
		POSS JIH 5 BRIGHT
		Goto See
	}
}

// Flemoidus Bipedicus ------------------------------------------------------------

ACTOR FixedFlemoidusBipedicusTLQ : FlemoidusBipedicusTLQ replaces FlemoidusBipedicusTLQ
{
	States
	{
	Pain:
		SPOS G 3 BRIGHT
		SPOS G 3 BRIGHT A_Pain
		Goto See
	Death:
		SPOS H 5 BRIGHT
		SPOS I 5 BRIGHT A_Scream
		SPOS J 5 BRIGHT A_NoBlocking
		SPOS K 5 BRIGHT
		SPOS L -1
		Stop
	XDeath:
		SPOS M 5 BRIGHT
		SPOS N 5 BRIGHT A_XScream
		SPOS O 5 BRIGHT A_NoBlocking
		SPOS PQRST 5 BRIGHT
		SPOS U -1
		Stop
	Raise:
		SPOS L 5
		SPOS KJIH 5 BRIGHT
		Goto See
	}
}

// Flemoidus Loricatus ------------------------------------------------------------

ACTOR FixedFlemoidusLoricatus : FlemoidusLoricatus replaces FlemoidusLoricatus
{
	States
	{
	Pain:
		TROO H 2 BRIGHT
		TROO H 2 BRIGHT A_Pain
		Goto See
	Death:
		TROO I 8 BRIGHT
		TROO J 8 BRIGHT A_Scream
		TROO K 6 BRIGHT
		TROO L 6 BRIGHT A_NoBlocking
		TROO M -1
		Stop
	XDeath:
		TROO N 5 BRIGHT
		TROO O 5 BRIGHT A_XScream
		TROO P 5 BRIGHT
		TROO Q 5 BRIGHT A_NoBlocking
		TROO RST 5 BRIGHT
		TROO U -1
		Stop
	Raise:
		TROO M 8
		TROO LKJI 8 BRIGHT
		Goto See
	}
}

// Flemoidus Cycloptis ------------------------------------------------------------

ACTOR FixedFlemoidusCycloptis : FlemoidusCycloptis replaces FlemoidusCycloptis
{
	States
	{
	Pain:
		SARG H 2 BRIGHT
		SARG H 2 BRIGHT A_Pain
		Goto See
	Death:
		SARG I 8 BRIGHT
		SARG J 8 BRIGHT A_Scream
		SARG K 4 BRIGHT
		SARG L 4 BRIGHT A_NoBlocking
		SARG M 4 BRIGHT
		SARG N -1
		Stop
	Raise:
		SARG N 5
		SARG MLKJI 5 BRIGHT
		Goto See
	}
}

// Flemoidus Teneris ------------------------------------------------------------

ACTOR FixedFlemoidusTeneris : FlemoidusTeneris replaces FlemoidusTeneris
{
	States
	{
	Pain:
		LRVA F 2 BRIGHT
		LRVA F 2 BRIGHT A_Pain
		Goto See
	Death:
		LRVA G 8 BRIGHT
		LRVA H 8 BRIGHT A_Scream
		LRVA I 4 BRIGHT
		LRVA J 4 BRIGHT A_NoBlocking
		LRVA K 4 BRIGHT
		LRVA L -1
		Stop
	Raise:
		LRVA L 5
		LRVA KJIHG 5 BRIGHT
		Goto See
	}
}

// Flemoidus Quadrumpus ------------------------------------------------------------

ACTOR FixedFlemoidusQuadrumpus : FlemoidusQuadrumpus replaces FlemoidusQuadrumpus
{

	States
	{
	Pain:
		QUAD H 2 BRIGHT
		QUAD H 2 BRIGHT A_Pain
		Goto See
	Death:
		QUAD I 8 BRIGHT
		QUAD J 8 BRIGHT A_Scream
		QUAD K 6 BRIGHT
		QUAD L 6 BRIGHT A_NoBlocking
		QUAD M -1
		Stop
	XDeath:
		QUAD N 5 BRIGHT
		QUAD O 5 BRIGHT A_XScream
		QUAD P 5 BRIGHT
		QUAD Q 5 BRIGHT A_NoBlocking
		QUAD RST 5 BRIGHT
		QUAD U -1
		Stop
	Raise:
		QUAD M 8
		QUAD LKJI 8 BRIGHT
		Goto See
	}
}

// Flemoidus Navigiumus ------------------------------------------------------------

ACTOR FixedFlemoidusNavigiumus : FlemoidusNavigiumus replaces FlemoidusNavigiumus
{
	States
	{
	Pain:
		HEAD E 3 BRIGHT
		HEAD E 3 BRIGHT A_Pain
		HEAD F 6 BRIGHT
		Goto See
	Death:
		HEAD G 8 BRIGHT
		HEAD H 8 BRIGHT A_Scream
		HEAD I 8 BRIGHT
		HEAD J 8 BRIGHT
		HEAD K 8 BRIGHT A_NoBlocking
		HEAD L -1 A_SetFloorClip
		Stop
	Raise:
		HEAD L 8 A_UnSetFloorClip
		HEAD KJIHG 8 BRIGHT
		Goto See
	}
}

// Flemoidus Stridicus ------------------------------------------------------------

ACTOR FixedFlemoidusStridicus : FlemoidusStridicus replaces FlemoidusStridicus
{
	States
	{
	Pain:
		STTT H 2 BRIGHT
		STTT H 2 BRIGHT A_Pain
		Goto See
	Death:
		STTT I 8 BRIGHT
		STTT J 8 BRIGHT A_Scream
		STTT K 4 BRIGHT
		STTT L 4 BRIGHT A_NoBlocking
		STTT M 4 BRIGHT
		STTT N -1
		Stop
	Raise:
		STTT N 5
		STTT MLKJI 5 BRIGHT
		Goto See
	}
}

// Flemoidus Minumis ------------------------------------------------------------

ACTOR FixedFlemoidusMinumis : FlemoidusMinumis replaces FlemoidusMinumis
{
	States
	{
	Pain:
		SKUL E 3 BRIGHT
		SKUL E 3 BRIGHT A_Pain
		Goto See
	Death:
		SKUL F 6 BRIGHT 
		SKUL G 6 BRIGHT A_Scream
		SKUL H 6 BRIGHT 
		SKUL I 6 BRIGHT A_NoBlocking
		SKUL J 6 BRIGHT
		SKUL K 6 BRIGHT
		Stop
	}
}

// Slime Pillar ------------------------------------------------------------

ACTOR SlimePillar75 : SlimePillar Replaces SlimePillar
{
	//$Category "Flemoids"
	
	//[75] 	Recent versions of gzdoom/zdoom (2.8.0+) don't
	// 		spawn this actor because Arch marked it "Game Doom"
	//		instead of "Game Chex"
  Game Chex 
  
  Mass 0x7FFFFFFF
  states
  {
  Death:
    PIL1 EFGHIJK 4 BRIGHT
    TNT1 A 0// NULL is not a valid value for 'no sprite'. Use TNT1.--Acts 19 quiz
    stop
  }
}

// Flemoidus Abominus ------------------------------------------------------------

// [Acts 19 quiz] Fixes a pre-existing bug from CQ3 with the Flembomination's
// firing sequence.
ACTOR FixedFlemoidusAbominus : FlemoidusAbominus replaces FlemoidusAbominus
{
	States
	{
	Missile:
		SPID F 20 A_FaceTarget 
		SPID G 8 A_CustomComboAttack("NavigiumusBall", 32, random[headattack](1,6)*10, "", "flem")
 		SPID H 8 A_CustomComboAttack("NavigiumusBall", 32, random[headattack](1,6)*10, "", "flem")
		SPID H 1 A_SpidRefire
		Goto Missile
	Pain:
		SPID I 3 BRIGHT // Also add in the missing BRIGHT states.--Acts 19 quiz
		SPID I 3 BRIGHT A_Pain
		Goto See
	Death:
		SPID J 10 BRIGHT A_Scream
		SPID K 5 BRIGHT A_NoBlocking
		SPID LMNOPQR 5 BRIGHT
		SPID S 15
		SPID S -1 A_BossDeath    
		Stop
	}
}

// Cyber Maximus ------------------------------------------------------------

actor FixedCyberMaximus : CyberMaximus replaces CyberMaximus
{
  states
  {
  Death:
    CMAX H 10 Bright
    CMAX I 10 Bright A_Scream
    CMAX J 10 Bright
    CMAX K 10 Bright A_NoBlocking
    CMAX L 10 Bright
    CMAX M 30 BRIGHT
    CMAX N 0 A_BossDeath
    TNT1 A -1// Use TNT1, not NULL.--Acts 19 quiz
    stop
  }
}

//===========================================================================
//
// Flemegaus
//
//===========================================================================

// Flemegaus Commonus ------------------------------------------------------------

ACTOR FixedFlemegausCommonus : FlemegausCommonus replaces FlemegausCommonus
{
	States
	{
	Pain:
		FMCO G 3 BRIGHT
		FMCO G 3 BRIGHT A_Pain
		Goto See
	Death:
		FMCO H 5 BRIGHT
		FMCO I 5 BRIGHT A_Scream
		FMCO J 5 BRIGHT A_NoBlocking
		FMCO K 5 BRIGHT
		FMCO L -1
		Stop
	XDeath:
		FMCO M 5 BRIGHT
		FMCO N 5 BRIGHT A_XScream
		FMCO O 5 BRIGHT A_NoBlocking
		FMCO P 5 BRIGHT
		FMCO QRST 5
		FMCO U -1
		Stop
	Raise:
		FMCO K 5 BRIGHT
		FMCO JIH 5 BRIGHT
		Goto See
	}
}

// Flemegaus Bipedicus ------------------------------------------------------------

ACTOR FixedFlemegausBipedicus : FlemegausBipedicus replaces FlemegausBipedicus
{
	States
	{
	Pain:
		FMTM G 3 BRIGHT
		FMTM G 3 BRIGHT A_Pain
		Goto See
	Death:
		FMTM H 5 BRIGHT
		FMTM I 5 BRIGHT A_Scream
		FMTM J 5 BRIGHT A_NoBlocking
		FMTM K 5 BRIGHT
		FMTM L -1
		Stop
	XDeath:
		FMTM M 5 BRIGHT
		FMTM N 5 BRIGHT A_XScream
		FMTM O 5 BRIGHT A_NoBlocking
		FMTM PQRST 5 BRIGHT
		FMTM U -1
		Stop
	Raise:
		FMTM L 5
		FMTM KJIH 5 BRIGHT
		Goto See
	}
}

// Flemegaus Loricatus ------------------------------------------------------------

ACTOR FixedFlemegausLoricatus : FlemegausLoricatus replaces FlemegausLoricatus
{
	States
	{
	Melee:
	Missile:
		FMTN EF 1 A_FaceTarget
		FMTN G 2 A_CustomMissile("FlemRocket", 32)
		Goto See
	Pain:
		FMTN H 2 BRIGHT
		FMTN H 2 BRIGHT A_Pain
		Goto See
	Death:
		FMTN I 8 BRIGHT
		FMTN J 8 BRIGHT A_Scream
		FMTN K 6 BRIGHT
		FMTN L 6 BRIGHT A_NoBlocking
		FMTN M -1
		Stop
	XDeath:
		FMTN N 5 BRIGHT
		FMTN O 5 BRIGHT A_XScream
		FMTN P 5 BRIGHT
		FMTN Q 5 BRIGHT A_NoBlocking
		FMTN RST 5 BRIGHT
		FMTN U -1
		Stop
	Raise:
		FMTN M 8
		FMTN LKJI 8 BRIGHT
		Goto See
	}
}

// Flemegaus Cycloptis ------------------------------------------------------------

// [75] there was a typo in this monster's obiturary
// o% instead of %o, thanks to Acts19Quiz for pointing this out.
ACTOR FixedFlemegausCycloptis : FlemegausCycloptis replaces FlemegausCycloptis
{
  OBITUARY "%o was flemmed by a Cycloptis."
  HITOBITUARY "%o got gooed by a Cycloptis."
  states
  {
  Pain:
	  FMCY H 3 BRIGHT A_Pain
	  Goto See
  Death:
// It looks like arch129 forgot the I frame, but maybe it's intentional. I'm
// leaving it as-is for now.--Acts 19 quiz
  //FMCY I 6 BRIGHT
	  FMCY J 6 BRIGHT A_Scream
	  FMCY KL 6 BRIGHT
	  FMCY M 6 BRIGHT A_NoBlocking
	  TNT1 A -1// Use TNT1, not NULL.--Acts 19 quiz
	  Stop
  Raise:
          FMCY MLKJI 5 BRIGHT
          Goto See
  }
}

// Flemegaus Teneris ------------------------------------------------------------

ACTOR FixedFlemegausTeneris : FlemegausTeneris replaces FlemegausTeneris
{
	States
	{
	Pain:
		FMTQ H 2 BRIGHT
		FMTQ H 2 BRIGHT A_Pain
		Goto See
	Death:
		FMTQ I 8 BRIGHT
		FMTQ J 8 BRIGHT A_Scream
		FMTQ K 4 BRIGHT
		FMTQ L 4 BRIGHT A_NoBlocking
		FMTQ M 4 BRIGHT
		FMTQ N -1
		Stop
	Raise:
		FMTQ N 5
		FMTQ MLKJI 5 BRIGHT
		Goto See
	}
}

// Flemegaus Quadrumpus ------------------------------------------------------------

ACTOR FixedFlemegausQuadrumpus : FlemegausQuadrumpus replaces FlemegausQuadrumpus
{
	States
	{
	Pain:
		FMQR H 2 BRIGHT
		FMQR H 2 BRIGHT A_Pain
		Goto See
	Death:
		FMQR I 8 BRIGHT
		FMQR J 8 BRIGHT A_Scream
		FMQR K 6 BRIGHT
		FMQR L 6 BRIGHT A_NoBlocking
		FMQR M -1
		Stop
	XDeath:
		FMQR N 5 BRIGHT
		FMQR O 5 BRIGHT A_XScream
		FMQR P 5 BRIGHT
		FMQR Q 5 BRIGHT A_NoBlocking
		FMQR RST 5 BRIGHT
		FMQR U -1
		Stop
	Raise:
		FMQR M 8
		FMQR LKJI 8 BRIGHT
		Goto See
	}
}

//===========================================================================
//
// Zorchers
//
//===========================================================================

// PropulsorMissile ---------------------------------------------------------

actor FixedFlemRocket : FlemRocket replaces FlemRocket
{
  States
  {
  Death:
    TNT1 A 0 A_SetDamageType("Flem")
    MISL B 8 bright A_Explode
    MISL C 6 bright
    MISL D 4 bright
    stop
  }
}

//===========================================================================
//
// Other
//
//===========================================================================

// High Jump Boots --------------------------------------------------------------

// [75] The original duration was so long that it tripped undefined behavior
// in the engine and caused the high jump boots to deactivate nearly instantly on pickup
// instead of staying active for a very long time.
//
// Ironically making the number a smaller one that fits in an integer (but still very large)
// fixed the problem.
actor HighJumpBootsFix : PowerupGiver replaces HighJumpBoots 12929 
{
 inventory.pickupmessage "You've equipped the fixed High Jump boots!"
 inventory.maxamount 0
 inventory.usesound "pickups/slowmo"
 powerup.type "HighJump"
 powerup.duration 0x7FFFFFFF
 translation "128:143=144:151"
 +AUTOACTIVATE
 +INVENTORY.FANCYPICKUPSOUND
   states
 {
 Spawn:
   JBOT A 4
   loop
 }
}
