// The actual Chex Quest 3 flemkeys. Have to add these, or else there'll be unknown actors or something like that.
actor BlueFlemKey : BlueSkull 40
{
    Game Chex
    inventory.pickupmessage "$GOTBLUEFLEM"
}

actor YellowFlemKey : YellowSkull 39
{
    Game Chex
    inventory.pickupmessage "$GOTYELLOWFLEM"
}

actor RedFlemKey : RedSkull 38
{
    Game Chex
    inventory.pickupmessage "$GOTREDFLEM"
}

// Now for the replacers.
// Doom
actor RedCard2 : CustomInventory replaces RedCard
{
    inventory.pickupmessage "$GOTREDCARD" // "Picked up a red keycard."
    //inventory.icon "STKEYS2"
    inventory.pickupsound "misc/k_pkup"
    +NOTDMATCH
    States
    {
      Spawn:
        RKEY A 10
        RKEY B 10 bright
        loop

      Pickup:
        TNT1 A 0 ACS_ExecuteAlways(902,0,0)
        TNT1 A 1 A_GiveInventory("RedCard")
        stop
    }
}

actor YellowCard2 : CustomInventory replaces YellowCard
{
    inventory.pickupmessage "$GOTYELWCARD" // "Picked up a yellow keycard."
    //inventory.icon "STKEYS1"
    inventory.pickupsound "misc/k_pkup"
    +NOTDMATCH
    States
    {
      Spawn:
        YKEY A 10
        YKEY B 10 bright
        loop

      Pickup:
        TNT1 A 0 ACS_ExecuteAlways(902,0,1)
        TNT1 A 1 A_GiveInventory("YellowCard")
        stop
    }
}

actor BlueCard2 : CustomInventory replaces BlueCard
{
    inventory.pickupmessage "$GOTBLUECARD" // "Picked up a blue keycard."
    //inventory.icon "STKEYS0"
    inventory.pickupsound "misc/k_pkup"
    +NOTDMATCH
    States
    {
      Spawn:
        BKEY A 10
        BKEY B 10 bright
        loop

      Pickup:
        TNT1 A 0 ACS_ExecuteAlways(902,0,2)
        TNT1 A 1 A_GiveInventory("BlueCard")
        stop
    }
}

actor RedSkull: DoomKey 38
{
    Game Doom
    SpawnID 89
    Inventory.PickupMessage "$GOTREDSKUL"
    Inventory.Icon "STKEYS5"

    States
    {
      Spawn:
       RSKU A 0
       TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(215, 6) != 1, "SpawnKey")
       goto Spawn2

      SpawnKey:
        RSKU A 0 A_SpawnItemEx("RedSkull2")
        stop

      Spawn2:
        RSKU A 10
        RSKU B 10 Bright
        loop
    }
}

actor RedSkull2: CustomInventory
{
    inventory.pickupmessage "$GOTREDSKUL" // "Picked up a red skull key."
    //inventory.icon "STKEYS5"
    inventory.pickupsound "misc/k_pkup"
    +NOTDMATCH
    -DROPPED

    States
    {
      Spawn:
        RSKU A 10
        RSKU B 10 bright
        loop

      Pickup:
        TNT1 A 0 ACS_ExecuteAlways(902,0,3)
        TNT1 A 1 A_GiveInventory("RedSkull")
        stop
    }
}

actor YellowSkull2: CustomInventory replaces YellowSkull
{
    inventory.pickupmessage "$GOTYELWSKUL" // "Picked up a yellow skull key."
    //inventory.icon "STKEYS4"
    inventory.pickupsound "misc/k_pkup"
    +NOTDMATCH
    States
    {
      Spawn:
        YSKU A 10
        YSKU B 10 bright
        loop

      Pickup:
        TNT1 A 0 ACS_ExecuteAlways(902,0,4)
        TNT1 A 1 A_GiveInventory("YellowSkull")
        stop
    }
}

actor BlueSkull: DoomKey 40
{
    Game Doom
    SpawnID 90
    Inventory.PickupMessage "$GOTBLUESKUL"
    Inventory.Icon "STKEYS3"
    States
    {
      Spawn:
       BSKU A 0
       TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(215, 6) != 1, "SpawnKey")
       goto Super::Spawn

      SpawnKey:
        BSKU A 0 A_SpawnItemEx("BlueSkull2")
        stop

      Spawn2:
        BSKU A 10
        BSKU B 10 Bright
        loop
    }
}

actor BlueSkull2: CustomInventory
{
    inventory.pickupmessage "$GOTBLUESKUL" // "Picked up a blue skull key."
    //inventory.icon "STKEYS3"
    inventory.pickupsound "misc/k_pkup"
    +NOTDMATCH
    States
    {
      Spawn:
        BSKU A 10
        BSKU B 10 bright
        loop

      Pickup:
        TNT1 A 0 ACS_ExecuteAlways(902,0,5)
        TNT1 A 1 A_GiveInventory("BlueSkull")
        stop
    }
}

// Heretic
actor KeyBlue2 : CustomInventory replaces KeyBlue
{
    inventory.pickupmessage "$TXT_GOTBLUEKEY"
    //Inventory.Icon "BKEYICON"
    inventory.pickupsound "misc/k_pkup"
    +NOTDMATCH
    States
    {
      Spawn:
        BKYY ABCDEFGHIJ 3 Bright
        loop

      Pickup:
        TNT1 A 0 ACS_ExecuteAlways(902,0,6)
        TNT1 A 1 A_GiveInventory("KeyBlue")
        stop
    }
}

actor KeyGreen2 : CustomInventory replaces KeyGreen
{
    inventory.pickupmessage "$TXT_GOTGREENKEY"
    //Inventory.Icon "GKEYICON"
    inventory.pickupsound "misc/k_pkup"
    +NOTDMATCH
    States
    {
      Spawn:
        AKYY ABCDEFGHIJ 3 Bright
        loop

      Pickup:
        TNT1 A 0 ACS_ExecuteAlways(902,0,7)
        TNT1 A 1 A_GiveInventory("KeyGreen")
        stop
    }
}

actor KeyYellow2 : CustomInventory replaces KeyYellow
{
    inventory.pickupmessage "$TXT_GOTYELLOWKEY"
    //Inventory.Icon "YKEYICON"
    inventory.pickupsound "misc/k_pkup"
    +NOTDMATCH
    States
    {
      Spawn:
        CKYY ABCDEFGHI 3 Bright
        loop

      Pickup:
        TNT1 A 0 ACS_ExecuteAlways(902,0,8)
        TNT1 A 1 A_GiveInventory("KeyYellow")
        stop
    }
}

// Chex Quest
actor ChexRedCard2 : CustomInventory replaces ChexRedCard
{
    inventory.pickupmessage "$GOTCREDKEY"
    //inventory.icon "STKEYS2"
    inventory.pickupsound "misc/k_pkup"
    +NOTDMATCH
    States
    {
      Spawn:
        RKEY A 10
        RKEY B 10 bright
        loop

      Pickup:
        TNT1 A 0 ACS_ExecuteAlways(902,0,9)
        TNT1 A 1 A_GiveInventory("ChexRedCard")
        stop
    }
}

actor ChexYellowCard2 : CustomInventory replaces ChexYellowCard
{
    inventory.pickupmessage "$GOTCYELLOWKEY"
    //inventory.icon "STKEYS1"
    inventory.pickupsound "misc/k_pkup"
    +NOTDMATCH
    States
    {
      Spawn:
        YKEY A 10
        YKEY B 10 bright
        loop

      Pickup:
        TNT1 A 0 ACS_ExecuteAlways(902,0,10)
        TNT1 A 1 A_GiveInventory("ChexYellowCard")
        stop
    }
}

actor ChexBlueCard2 : CustomInventory replaces ChexBlueCard
{
    inventory.pickupmessage "$GOTCBLUEKEY"
    //inventory.icon "STKEYS0"
    inventory.pickupsound "misc/k_pkup"
    +NOTDMATCH
    States
    {
      Spawn:
        BKEY A 10
        BKEY B 10 bright
        loop

      Pickup:
        TNT1 A 0 ACS_ExecuteAlways(902,0,11)
        TNT1 A 1 A_GiveInventory("ChexBlueCard")
        stop
    }
}

actor RedFlemKey2 : CustomInventory replaces RedFlemKey
{
    inventory.pickupmessage "$GOTREDFLEM"
    //inventory.icon "STKEYS5"
    inventory.pickupsound "misc/k_pkup"
    +NOTDMATCH
    States
    {
      Spawn:
        RSKU A 10
        RSKU B 10 bright
        loop

      Pickup:
        TNT1 A 0 ACS_ExecuteAlways(902,0,12)
        TNT1 A 1 A_GiveInventory("RedFlemKey")
        stop
    }
}

actor YellowFlemKey2 : CustomInventory replaces YellowFlemKey
{
    inventory.pickupmessage "$GOTYELLOWFLEM"
    //inventory.icon "STKEYS4"
    inventory.pickupsound "misc/k_pkup"
    +NOTDMATCH
    States
    {
      Spawn:
        YSKU A 10
        YSKU B 10 bright
        loop

      Pickup:
        TNT1 A 0 ACS_ExecuteAlways(902,0,13)
        TNT1 A 1 A_GiveInventory("YellowFlemKey")
        stop
    }
}

actor BlueFlemKey2 : CustomInventory replaces BlueFlemKey
{
    inventory.pickupmessage "$GOTBLUEFLEM"
    //inventory.icon "STKEYS3"
    inventory.pickupsound "misc/k_pkup"
    +NOTDMATCH
    States
    {
      Spawn:
        BSKU A 10
        BSKU B 10 bright
        loop

      Pickup:
        TNT1 A 0 ACS_ExecuteAlways(902,0,14)
        TNT1 A 1 A_GiveInventory("BlueFlemKey")
        stop
    }
}

// HeXen
actor HexenSharedKey: CustomInventory
{
    Radius 8
    Height 20

    Inventory.PickupSound "misc/k_pkup"
}

actor KeyAxe2: HexenSharedKey replaces KeyAxe
{
    inventory.pickupmessage "$TXT_KEY_AXE"
    //inventory.icon "KEYSLOT3"

    +NOTDMATCH
    States
    {
      Spawn:
        KEY3 A -1
        Stop

      Pickup:
        TNT1 A 0 ACS_ExecuteAlways(902,0,15)
        TNT1 A 1 A_GiveInventory("KeyAxe")
        stop
    }
}

actor KeyCastle2: HexenSharedKey replaces KeyCastle
{
    inventory.pickupmessage "$TXT_KEY_CASTLE"
    //inventory.icon "KEYSLOTB"

    +NOTDMATCH
    States
    {
      Spawn:
        KEYB A -1
        Stop

      Pickup:
        TNT1 A 0 ACS_ExecuteAlways(902,0,16)
        TNT1 A 1 A_GiveInventory("KeyCastle")
        stop
    }
}

actor KeyCave2: HexenSharedKey replaces KeyCave
{
    inventory.pickupmessage "$TXT_KEY_CAVE"
    //inventory.icon "KEYSLOT2"

    +NOTDMATCH
    States
    {
      Spawn:
        KEY2 A -1
        Stop

      Pickup:
        TNT1 A 0 ACS_ExecuteAlways(902,0,17)
        TNT1 A 1 A_GiveInventory("KeyCave")
        stop
    }
}

actor KeyDungeon2: HexenSharedKey replaces KeyDungeon
{
    inventory.pickupmessage "$TXT_KEY_DUNGEON"
    //inventory.icon "KEYSLOT6"
    +NOTDMATCH
    States
    {
      Spawn:
        KEY6 A -1
        Stop

      Pickup:
        TNT1 A 0 ACS_ExecuteAlways(902,0,18)
        TNT1 A 1 A_GiveInventory("KeyDungeon")
        stop
    }
}

actor KeyEmerald2: HexenSharedKey replaces KeyEmerald
{
    inventory.pickupmessage "$TXT_KEY_EMERALD"
    //inventory.icon "KEYSLOT5"

    +NOTDMATCH
    States
    {
      Spawn:
        KEY5 A -1
        Stop

      Pickup:
        TNT1 A 0 ACS_ExecuteAlways(902,0,19)
        TNT1 A 1 A_GiveInventory("KeyEmerald")
        stop
    }
}

actor KeyFire2: HexenSharedKey replaces KeyFire
{
    inventory.pickupmessage "$TXT_KEY_FIRE"
    //inventory.icon "KEYSLOT4"

    +NOTDMATCH
    States
    {
      Spawn:
        KEY4 A -1
        Stop

      Pickup:
        TNT1 A 0 ACS_ExecuteAlways(902,0,20)
        TNT1 A 1 A_GiveInventory("KeyFire")
        stop
    }
}

actor KeyHorn2: HexenSharedKey replaces KeyHorn
{
    inventory.pickupmessage "$TXT_KEY_HORN"
    //inventory.icon "KEYSLOT9"

    +NOTDMATCH
    States
    {
      Spawn:
        KEY9 A -1
        Stop

      Pickup:
        TNT1 A 0 ACS_ExecuteAlways(902,0,21)
        TNT1 A 1 A_GiveInventory("KeyHorn")
        stop
    }
}

actor KeyRusted2: HexenSharedKey replaces KeyRusted
{
    inventory.pickupmessage "$TXT_KEY_RUSTED"
    //inventory.icon "KEYSLOT8"

    +NOTDMATCH
    States
    {
      Spawn:
        KEY8 A -1
        Stop

      Pickup:
        TNT1 A 0 ACS_ExecuteAlways(902,0,22)
        TNT1 A 1 A_GiveInventory("KeyRusted")
        stop
    }
}

actor KeySilver2: HexenSharedKey replaces KeySilver
{
    inventory.pickupmessage "$TXT_KEY_SILVER"
    //inventory.icon "KEYSLOT7"

    +NOTDMATCH
    States
    {
      Spawn:
        KEY7 A -1
        Stop

      Pickup:
        TNT1 A 0 ACS_ExecuteAlways(902,0,23)
        TNT1 A 1 A_GiveInventory("KeySilver")
        stop
    }
}

actor KeySteel2: HexenSharedKey replaces KeySteel
{
    inventory.pickupmessage "$TXT_KEY_STEEL"
    //inventory.icon "KEYSLOT1"

    +NOTDMATCH
    States
    {
      Spawn:
        KEY1 A -1
        Stop

      Pickup:
        TNT1 A 0 ACS_ExecuteAlways(902,0,24)
        TNT1 A 1 A_GiveInventory("KeySteel")
        stop
    }
}

actor KeySwamp2: HexenSharedKey replaces KeySwamp
{
    inventory.pickupmessage "$TXT_KEY_SWAMP"
    //inventory.icon "KEYSLOTA"

    +NOTDMATCH
    States
    {
      Spawn:
        KEYA A -1
        Stop

      Pickup:
        TNT1 A 0 ACS_ExecuteAlways(902,0,25)
        TNT1 A 1 A_GiveInventory("KeySwamp")
        stop
    }
}
