#REKNUX port by Logan8r
#Altered for chaos sorta
Object MT_REKNUCKLES
MapThingNum = 2033
SpawnState = S_REKNUXBOSS_STND1
SpawnHealth = 15
SeeState = S_REKNUXBOSS_LOOK
SeeSound = sfx_None
ReactionTime = 32
AttackSound = sfx_None
PainState = S_REKNUXBOSS_OUCH
PainChance = S_NULL
PainSound = sfx_None
MeleeState = S_NULL
MissileState = S_NULL
DeathState = S_REKNUXBOSS_END1
DeathSound = sfx_knxdie
XDeathState = S_NULL
Speed = 3
Radius = 16*FRACUNIT
Height = 56*FRACUNIT
Mass = 100
Damage = 8
ActiveSound = sfx_None
RaiseState = S_REKNUXBOSS_OUCHALT
Flags = MF_SPECIAL|MF_SHOOTABLE|MF_BOSS


State S_REKNUXBOSS_SPWN
SpriteName = KNRE
SpriteFrame = A
Duration = 1
Next = S_REKNUXBOSS_STND1
Action A_SetObjectFlags
Var1 = MF_SPECIAL|MF_BOSS|MF_PAIN

# Look at him, he's taunting you!
State S_REKNUXBOSS_STND1
SpriteName = KNRE
SpriteFrame = A
Duration = 10
Next = S_REKNUXBOSS_STND2
Action A_SetObjectFlags
Var1 = MF_SPECIAL|MF_BOSS|MF_PAIN
Var2 = 0

State S_REKNUXBOSS_STND2
SpriteName = KNRE
SpriteFrame = C
Duration = 7
Next = S_REKNUXBOSS_STND3
Action A_Look
Var1 = 1
Var2 = 0

State S_REKNUXBOSS_STND3
SpriteName = KNRE
SpriteFrame = D
Duration = 7
Next = S_REKNUXBOSS_STND2
Action A_Look
Var1 = 1
Var2 = 0

# "!" You've been spotted! Will he spindash or choose something else?
State S_REKNUXBOSS_LOOK
SpriteName = KNRE
SpriteFrame = A
Duration = 1
Next S_REKNUXBOSS_LOOKBRUH
Action A_FaceTarget
Var1 = 0
Var2 = 0

#Repeat frame to clear all repeats so pinches don't end after 1 cycle if they were used and stopped previously.
State S_REKNUXBOSS_LOOKBRUH
SpriteName = KNRE
SpriteFrame = A
Duration = 0
Next S_REKNUXBOSS_LOOK1
Action A_Repeat
Var1 = 2
Var2 = S_REKNUXBOSS_LOOK

State S_REKNUXBOSS_LOOK1
SpriteName = KNRE
SpriteFrame = A
Duration = 35
Next S_REKNUXBOSS_LOOK2
Action A_SetObjectFlags
Var1 = MF_SPECIAL|MF_SHOOTABLE|MF_BOSS
Var2 = 0

State S_REKNUXBOSS_LOOK2
SpriteName = KNRE
SpriteFrame = C
Duration = 17
Next = S_REKNUXBOSS_LOOK3
Action = A_SetObjectFlags
Var1 = MF_SPECIAL|MF_BOSS|MF_PAIN
Var2 = 0

State S_REKNUXBOSS_LOOK3
SpriteName = KNRE
SpriteFrame = D
Duration = 17
Next = S_REKNUXBOSS_LOOK1
Action = A_RandomState
Var1 = S_REKNUXBOSS_JUMP1
Var2 = S_REKNUXBOSS_LOOK4

#If he chooses another attack, will he glide or jump at the player?
State S_REKNUXBOSS_LOOK4
SpriteName = KNRE
SpriteFrame = A
Duration = 1
Next = S_REKNUXBOSS_LOOK3
Action = A_RandomState
Var1 = S_REKNUXBOSS_GLIDE1
Var2 = S_REKNUXSPIN1

#Ok REKNUX, time to spindash!
State S_REKNUXSPIN1
SpriteName = KSRE
SpriteFrame = A
Duration = 2
Next = S_REKNUXSPIN2
Action = A_PlaySound
Var1 = sfx_spndsh
Var2 = 0

State S_REKNUXSPIN2
SpriteName = KSRE
SpriteFrame = B
Duration = 2
Next = S_REKNUXSPIN3
Action = A_FaceTarget
Var1 = 0
Var2 = 0

State S_REKNUXSPIN3
SpriteName = KSRE
SpriteFrame = C
Duration = 2
Next = S_REKNUXSPIN4
Action = A_FaceTarget
Var1 = 0
Var2 = 0

State S_REKNUXSPIN4
SpriteName = KSRE
SpriteFrame = D
Duration = 2
Next = S_REKNUXSPIN5
Action = A_FaceTarget
Var1 = 0
Var2 = 0

State S_REKNUXSPIN5
SpriteName = KSRE
SpriteFrame = A
Duration = 2
Next = S_REKNUXSPIN6
Action = A_FaceTarget
Var1 = 0
Var2 = 0

State S_REKNUXSPIN6
SpriteName = KSRE
SpriteFrame = B
Duration = 2
Next = S_REKNUXSPIN7
Action = A_FaceTarget
Var1 = 0
Var2 = 0

State S_REKNUXSPIN7
SpriteName = KSRE
SpriteFrame = C
Duration = 2
Next = S_REKNUXSPIN8
Action = A_FaceTarget
Var1 = 0
Var2 = 0

State S_REKNUXSPIN8
SpriteName = KSRE
SpriteFrame = D
Duration = 2
Next = S_REKNUXDASH1
Action = A_FaceTarget
Var1 = 0
Var2 = 0

#Go Knuckles, Go!
State S_REKNUXDASH1
SpriteName = KNRE
SpriteFrame = E
Duration = 3
Next = S_REKNUXDASH2
Action = A_PlaySound
Var1 = sfx_zoom
Var2 = 0

State S_REKNUXDASH2
SpriteName = KNRE
SpriteFrame = F
Duration = 3
Next = S_REKNUXDASH3
Action = A_Thrust
Var1 = 60
Var2 = 0

State S_REKNUXDASH3
SpriteName = KNRE
SpriteFrame = G
Duration = 3
Next = S_REKNUXDASH4
Action A_SetObjectFlags
Var1 = MF_SPECIAL|MF_SHOOTABLE|MF_BOSS
Var2 = 0

State S_REKNUXDASH4
SpriteName = KNRE
SpriteFrame = H
Duration = 3
Next = S_REKNUXDASH5

State S_REKNUXDASH5
SpriteName = KNRE
SpriteFrame = E
Duration = 3
Next = S_REKNUXDASH6

State S_REKNUXDASH6
SpriteName = KNRE
SpriteFrame = F
Duration = 3
Next = S_REKNUXDASH7

State S_REKNUXDASH7
SpriteName = KNRE
SpriteFrame = G
Duration = 3
Next = S_REKNUXDASH8

State S_REKNUXDASH8
SpriteName = KNRE
SpriteFrame = H
Duration = 3
Next = S_REKNUXDASH9

State S_REKNUXDASH9
SpriteName = KNRE
SpriteFrame = E
Duration = 3
Next = S_REKNUXDASH10

State S_REKNUXDASH10
SpriteName = KNRE
SpriteFrame = F
Duration = 3
Next = S_REKNUXDASH11

State S_REKNUXDASH11
SpriteName = KNRE
SpriteFrame = G
Duration = 3
Next = S_REKNUXDASH12
Action A_FaceTarget
Var1 = 0
Var2 = 0

State S_REKNUXDASH12
SpriteName = KNRE
SpriteFrame = H
Duration = 1
Next = S_REKNUXBOSS_STND1
Action A_ForceStop
Var1 = 0
Var2 = 0

#Duo-op!
State S_REKNUXBOSS_JUMP1
SpriteName = KNRE
SpriteFrame = A
Duration = 0
Next = S_REKNUXBOSS_JUMP2
Action A_FaceTarget
Var1 = 0
Var2 = 0

State S_REKNUXBOSS_JUMP2
Spritename = KNRE
SpriteFrame = E
Duration = 1
Next = S_REKNUXBOSS_JUMP3
Action A_BunnyHop
Var1 = 10
Var2 = 14

State S_REKNUXBOSS_JUMP3
SpriteName = KNRE
SpriteFrame = F
Duration = 3
Next = S_REKNUXBOSS_JUMP4
Action A_PlaySound
Var1 = sfx_Jump
Var2 = 0

State S_REKNUXBOSS_JUMP4
SpriteName = KNRE
SpriteFrame = G
Duration = 3
Next = S_REKNUXBOSS_JUMP5

State S_REKNUXBOSS_JUMP5
SpriteName = KNRE
SpriteFrame = H
Duration = 4
Next = S_REKNUXBOSS_JUMP6

State S_REKNUXBOSS_JUMP6
SpriteName = KNRE
SpriteFrame = E
Duration = 4
Next = S_REKNUXBOSS_JUMP7

State S_REKNUXBOSS_JUMP7
SpriteName = KNRE
SpriteFrame = F
Duration = 4
Next = S_REKNUXBOSS_JUMP8
Action A_SetObjectFlags
Var1 = MF_SPECIAL|MF_SHOOTABLE|MF_BOSS
Var2 = 0

State S_REKNUXBOSS_JUMP8
SpriteName = KNRE
SpriteFrame = G
Duration = 4
Next = S_REKNUXBOSS_JUMP9

State S_REKNUXBOSS_JUMP9
SpriteName = KNRE
SpriteFrame = H
Duration = 4
Next = S_REKNUXBOSS_JUMP10

State S_REKNUXBOSS_JUMP10
SpriteName = KNRE
SpriteFrame = E
Duration = 4
Next = S_REKNUXBOSS_JUMP11

State S_REKNUXBOSS_JUMP11
SpriteName = KNRE
SpriteFrame = F
Duration = 4
Next S_REKNUXBOSS_JUMP12

State S_REKNUXBOSS_JUMP12
SpriteName = KNRE
SpriteFrame = G
Duration = 3
Next S_REKNUXBOSS_JUMP13

State S_REKNUXBOSS_JUMP13
SpriteName = KNRE
SpriteFrame = H
Duration = 3
Next S_REKNUXBOSS_JUMP14
Action A_FaceTarget
Var1 = 0
Var2 = 0

State S_REKNUXBOSS_JUMP14
SpriteName = KNRE
SpriteFrame = A
Duration = 2
Next = S_REKNUXBOSS_STND1
Action = A_ForceStop
Var1 = 0
Var2 = 0

#Look out from above! Knuckles used Glide!
State S_REKNUXBOSS_GLIDE1
SpriteName = KNRE
SpriteFrame = A
Duration = 0
Next = S_REKNUXBOSS_GLIDE2
Action A_SetObjectFlags
Var1 = MF_NOGRAVITY
Var2 = 2

State S_REKNUXBOSS_GLIDE2
SpriteName = KNRE
SpriteFrame = E
Duration = 2
Next = S_REKNUXBOSS_GLIDE3
Action A_BunnyHop
Var1 = 10
Var2 = 0

State S_REKNUXBOSS_GLIDE3
SpriteName = KNRE
SpriteFrame = F
Duration = 2
Next = S_REKNUXBOSS_GLIDE4
Action A_PlaySound
Var1 = sfx_jump
Var2 = 0

State S_REKNUXBOSS_GLIDE4
SpriteName = KNRE
SpriteFrame = G
Duration = 2
Next = S_REKNUXBOSS_GLIDE5

State S_REKNUXBOSS_GLIDE5
SpriteName = KNRE
SpriteFrame = H
Duration = 2
Next = S_REKNUXBOSS_GLIDE
Action A_SetObjectFlags
Var1 = MF_PAIN
Var2 = 2

State S_REKNUXBOSS_GLIDE
SpriteName = KNRE
SpriteFrame = I
Duration = 0
Next = S_REKNUXBOSS_GLIDE6
Action A_ForceStop
Var1 = 0
Var2 = 0

State S_REKNUXBOSS_GLIDE6
SpriteName = KNRE
SpriteFrame = I
Duration = 10
Next = S_REKNUXBOSS_GLIDE7
Action A_Thrust
Var1 = 15
Var2 = 0

State S_REKNUXBOSS_GLIDE7
SpriteName = KNRE
SpriteFrame = J
Duration = 2
Next = S_REKNUXBOSS_GLIDE8
Action A_ZThrust
Var1 = -1
Var2 = 0|0

State S_REKNUXBOSS_GLIDE8
SpriteName = KNRE
SpriteFrame = I
Duration = 2
Next = S_REKNUXBOSS_GLIDE9
Action None
Var1 = 0
Var2 = 0

State S_REKNUXBOSS_GLIDE9
SpriteName = KNRE
SpriteFrame = J
Duration = 2
Next = S_REKNUXBOSS_GLIDE10
Action None
Var1 = 15
Var2 = 0

State S_REKNUXBOSS_GLIDE10
SpriteName = KNRE
SpriteFrame = I
Duration = 2
Next = S_REKNUXBOSS_GLIDE11
Action None
Var1 = 0
Var2 = 0

State S_REKNUXBOSS_GLIDE11
SpriteName = KNRE
SpriteFrame = J
Duration = 2
Next = S_REKNUXBOSS_GLIDE12
Action None
Var1 = 15
Var2 = 0

State S_REKNUXBOSS_GLIDE12
SpriteName = KNRE
SpriteFrame = I
Duration = 2
Next = S_REKNUXBOSS_GLIDE13
Action None
Var1 = 0
Var2 = 0

State S_REKNUXBOSS_GLIDE13
SpriteName = KNRE
SpriteFrame = L
Duration = 0
Next = S_REKNUXBOSS_GLIDE14
Action A_FaceTarget
Var1 = 0
Var2 = 0

State S_REKNUXBOSS_GLIDE14
SpriteName = KNRE
SpriteFrame = L
Duration = 0
Next = S_REKNUXBOSS_GLIDE15
Action A_SetObjectFlags
Var1 = MF_SPECIAL|MF_SHOOTABLE|MF_BOSS
Var2 = 0

State S_REKNUXBOSS_GLIDE15
SpriteName = KNRE
SpriteFrame = L
Duration = 7
Next = S_REKNUXBOSS_GLIDE17
Action None
Var1 = 0
Var2 = 0

State S_REKNUXBOSS_GLIDE17
SpriteName = KNRE
SpriteFrame = M
Duration = 7
Next = S_REKNUXBOSS_GLIDE15
Action None
Var1 = 0
Var2 = 0

State S_REKNUXBOSS_GLIDE16
SpriteName = KNRE
SpriteFrame = L
Duration = 0
Next = S_REKNUXBOSS_STND1
Action A_ForceStop
Var1 = 0
Var2 = 0

#Knuckles: Oh no!
State S_REKNUXBOSS_OUCH
SpriteName = KNRE
SpriteFrame = K
Duration = 0
Next = S_REKNUXBOSS_OW
Action A_ForceStop
Var1 = 0
Var2 = 0

State S_REKNUXBOSS_OW
SpriteName = KNRE
SpriteFrame = K
Duration = 1
Next = S_REKNUXBOSS_OW1
Action A_FaceTarget
Var1 = 0
Var2 = 0

State S_REKNUXBOSS_OW1
SpriteName = KNRE
SpriteFrame = K
Duration = 1
Next = S_REKNUXBOSS_OW2
Action A_SetObjectFlags
Var1 = MF_SHOOTABLE
Var2 = 1

State S_REKNUXBOSS_OW2
SpriteName = KNRE
SpriteFrame = K
Duration = 1
Next = S_REKNUXBOSS_OW3
Action A_PlaySound
Var1 = sfx_altdi1
Var2 = 0

State S_REKNUXBOSS_OW3
SpriteName = KNRE
SpriteFrame = K
Duration = 11
Next = S_REKNUXBOSS_OW4
Action A_BunnyHop
Var1 = 5
Var2 = -10

State S_REKNUXBOSS_OW4
SpriteName = KNRE
SpriteFrame = K
Duration = 15
Next = S_REKNUXBOSS_OW5
Action A_CheckHealth
Var1 = 7
Var2 = S_REKNUXBOSS_OUCHALT

State S_REKNUXBOSS_OW5
SpriteName = KNRE
SpriteFrame = K
Duration = 1
Next = S_REKNUXBOSS_STND1
Action A_SetObjectFlags
Var1 = MF_SHOOTABLE
Var2 = 2

#Knuckles is ded
State S_REKNUXBOSS_END
SpriteName = KNRE
SpriteFrame = K
Duration = 0
Next = S_REKNUXBOSS_END1
Action A_ForceStop
Var1 = 0
Var2 = 0

State S_REKNUXBOSS_END1
SpriteName = KNRE
SpriteFrame = K
Duration = 0
Next = S_REKNUXBOSS_END2
Action A_SetObjectFlags
Var1 = MF_SPECIAL
Var2 = 0

State S_REKNUXBOSS_END2
SpriteName = KNRE
SpriteFrame = K
Duration = 1
Next = S_REKNUXBOSS_END3
Action A_PlaySound
Var1 = sfx_altdi1
Var2 = 0

State S_REKNUXBOSS_END3
SpriteName = KNRE
SpriteFrame = K
Duration = 11
Next = S_REKNUXBOSS_END4
Action A_BunnyHop
Var1 = 5
Var2 = -10

State S_REKNUXBOSS_END4
SpriteName = KNRE
SpriteFrame = K
Duration = 14
Next = S_REKNUXBOSS_END5

State S_REKNUXBOSS_END5
SpriteName = KNRE
SpriteFrame = B
Duration = 1
Next = S_REENDING1
Action None
Var1 = 0
Var2 = 0

State S_REENDING1
SpriteName = KNRE
SpriteFrame = B
Duration = 140
Next = S_REENDING2
Action A_ForceWin
Var1 = 0
Var2 = 0

State S_REENDING2
SpriteName = KNRE
SpriteFrame = B|FF_TRANS10
Duration = 5
Next = S_REENDING3

State S_REENDING3
SpriteName = KNRE
SpriteFrame = B|FF_TRANS20
Duration = 5
Next = S_REENDING4

State S_REENDING4
SpriteName = KNRE
SpriteFrame = B|FF_TRANS30
Duration = 5
Next = S_REENDING5

State S_REENDING5
SpriteName = KNRE
SpriteFrame = B|FF_TRANS40
Duration = 4
Next = S_REENDING6

State S_REENDING6
SpriteName = KNRE
SpriteFrame = B|FF_TRANS50
Duration = 4
Next = S_REENDING7

State S_REENDING7
SpriteName = KNRE
SpriteFrame = B|FF_TRANS60
Duration = 4
Next = S_REENDING8

State S_REENDING8
SpriteName = KNRE
SpriteFrame = B|FF_TRANS70
Duration = 3
Next = S_REENDING9

State S_REENDING9
SpriteName = KNRE
SpriteFrame = B|FF_TRANS80
Duration = 3
Next = S_REENDING10

State S_REENDING10
SpriteName = KNRE
SpriteFrame = B|FF_TRANS90
Duration = 3
Next = S_NULL

State S_REKNUXBOSS_OUCHALT
SpriteName = KNRE
SpriteFrame = K
Duration = 9999
Next = S_REKNUXBOSS_OUCHALT
Action A_FaceTarget
Var1 = 0
Var2 = 0

State S_REKNUXBOSS_WAITFALL1
SpriteName = KNRE
SpriteFrame = L
Duration = 5
Next = S_REKNUXBOSS_WAITFALL2

State S_REKNUXBOSS_WAITFALL2
SpriteName = KNRE
SpriteFrame = M
Duration = 5
Next = S_REKNUXBOSS_WAITFALL1

State S_REKNUXBOSS_BTOSS1
SpriteName = KNRE
SpriteFrame = U
Duration = 5
Next = S_REKNUXBOSS_BTOSS2
Action A_FaceTarget

State S_REKNUXBOSS_BTOSS2
SpriteName = KNRE
SpriteFrame = V
Duration = 2
Next = S_REKNUXBOSS_BTOSS3
Action = A_BrakLobShot
VAR1 = MT_FBOMB
VAR2 = 16+(1<<16)

State S_REKNUXBOSS_BTOSS3
SpriteName = KNRE
SpriteFrame = W
Duration = 18
Next = S_REKNUXBOSS_BTOSS4
Action A_FaceTarget

State S_REKNUXBOSS_BTOSS4
SpriteName = KNRE
SpriteFrame = U
Duration = 0
Next = S_REKNUXBOSS_WAITFALL1
Action A_Repeat
VAR1 = 5
VAR2 = S_REKNUXBOSS_BTOSS1

State S_REKNUXBOSS_BIGSLAMRISE
SpriteName = KNRE
SpriteFrame = S
Duration = 1
Next = S_REKNUXBOSS_BIGSLAMRISEPREP

State S_REKNUXBOSS_BIGSLAMRISEPREP
SpriteName = KNRE
SpriteFrame = X
Duration = -1
Next = S_REKNUXBOSS_BIGSLAMRISEPREP

State S_REKNUXBOSS_BIGSLAMFALL
SpriteName = KNRE
SpriteFrame = Y
Duration = -1
Next = S_REKNUXBOSS_BIGSLAMFALL

State S_REKNUXBOSS_BIGSLAMLAND
SpriteName = KNRE
SpriteFrame = Z
Duration = 1
Next = S_REKNUXBOSS_BIGSLAMLANDWAIT

State S_REKNUXBOSS_BIGSLAMLANDWAIT
SpriteName = KNRE
SpriteFrame = Z
Duration = 34
Next = S_REKNUXBOSS_WAITFALL1

State S_REKNUXBOSS_KNUCKLESRUSHF
SpriteName = KNRE
SpriteFrame = O
Duration = 0
Next = S_REKNUXBOSS_KNUCKLESRUSH
Action A_FaceTarget

State S_REKNUXBOSS_KNUCKLESRUSH
SpriteName = KNRE
SpriteFrame = FF_ANIMATE|O
Duration = 40
Next = S_REKNUXBOSS_KNUCKLESRUSHR
VAR1 = 3
VAR2 = 2

State S_REKNUXBOSS_KNUCKLESRUSHR
SpriteName = KNRE
SpriteFrame = O
Duration = 0
Next = S_REKNUXBOSS_KNUCKLESRUSHX
Action A_Repeat
VAR1 = 4
VAR2 = S_REKNUXBOSS_KNUCKLESRUSHF

State S_REKNUXBOSS_KNUCKLESRUSHX
SpriteName = KNRE
SpriteFrame = L
Duration = 1
Next = S_REKNUXBOSS_WAITFALL1

State S_REKNUXBOSS_KNUCKLESRUSHB
SpriteName = KNRE
SpriteFrame = S
Duration = -1
Next = S_REKNUXBOSS_KNUCKLESRUSHB

State S_REKNUXBOSS_PINCHWARN1
SpriteName = KSRE
SpriteFrame = E
Duration = 3
Next = S_REKNUXBOSS_PINCHWARN2
Action = A_PlaySound
Var1 = sfx_supert


State S_REKNUXBOSS_PINCHWARN2
SpriteName = KSRE
SpriteFrame = F
Duration = 2
Next = S_REKNUXBOSS_PINCHWARN3

State S_REKNUXBOSS_PINCHWARN3
SpriteName = KSRE
SpriteFrame = G
Duration = 5
Next = S_REKNUXBOSS_PINCHWARN4

State S_REKNUXBOSS_PINCHWARN4
SpriteName = KSRE
SpriteFrame = H
Duration = 15
Next = S_REKNUXBOSS_PINCHWARN5

State S_REKNUXBOSS_PINCHWARN5
SpriteName = KSRE
SpriteFrame = H
Duration = 1
Next = S_REKNUXBOSS_PINCHWARN5

State S_REKNUXBOSS_TIRED
SpriteName = KNRE
SpriteFrame = T
Duration = 35
Next = S_REKNUXBOSS_SPWN
