N@Hover Craft Controller I@W A S D R ConstHov ConstThr ConstThrLR HovS ThrS ThrC EnC ColC O@HovSet ThrFront ThrFront2 ThrBack ThrBack2 ThrRight ThrLeft ThrLF ThrRF ThrLR ThrRR Col En HovMove = LRMove = HovDir = LRDir = UseEn = UseCol = ThrSpeed2 = 0 AHov = AThr = 1 UseRes = 0 ThrSpeed = ConstThr ThrSpeed > 5 -> ThrSpeed2 = ThrSpeed - 5; ~HovS & $HovS -> GHovS = HovS; ~ThrS & $ThrS -> GThrS = ThrS; ~ThrC & $ThrC -> GThrC = ThrC; ~ColC & $ColC -> GColC = ColC; ~EnC & $EnC -> GEnC = EnC; !GEnC | !GColC -> !GEnC & UseRes -> AThr = ThrLF = ThrRF = ThrLR = ThrRR = ThrFront = ThrBack = ThrFront2 = ThrBack2 = 0, AHov = HovSet = HovLF = HovRF = HovLR = HovRR = 0; !GCol & UseRes -> AThr = ThrLF = ThrRF = ThrLR = ThrRR = ThrFront = ThrBack = ThrFront2 = ThrBack2 = 0; ; GEnC > 0 | GColC > 0 -> GEnC > 0 & !AHov -> AHov = HovSet = 1; GEnC > 0 & GColC > 0 & !AThr -> AThr = 1; ; R & W -> HovMove = 1, HovLF = HovRF = HovLR = HovRR = 0; R & !W -> LRMove = 1, ThrLF = ThrRF = ThrLR = ThrRR = ThrFront = ThrBack = ThrFront2 = ThrBack2 = 0; A & HovMove -> HovDir = 1; D & HovMove -> HovDir = -1; A & LRMove -> LRDir = -1; D & LRMove -> LRDir = 1; HovMove & AHov & HovDir == 1 -> HovLF = HovRF = HovLR = HovRR = ConstHov, UseEn += 2; HovMove & AHov & HovDir == -1 -> HovLF = HovRF = HovLR = HovRR = -ConstHov, UseEn += 2; !HovMove -> HovLF = HovRF = HovLR = HovRR = 0; HovMove & !W & !S -> HovLF = HovRF = HovLR = HovRR = 0; LRMove & AThr & LRDir == 1 -> ThrRight = -ConstThrLR, ThrLeft = ConstThrLR, UseEn += 2, UseCol += 2; LRMove & AThr & LRDir == -1 -> ThrLeft = -ConstThrLR, ThrRight = ConstThrLR, UseEn += 2, UseCol += 2; !LRMove -> ThrLeft = ThrRight = 0; LRMove & !A & !D -> ThrLeft = ThrRight = 0; W & !HovMove & !LRMove & AThr -> ThrFront = -ThrSpeed, ThrBack = ThrSpeed, UseEn += 2, UseCol += 2, ThrSpeed < 0 -> ThrFront2 = -ThrSpeed2, ThrBack2 = ThrSpeed2, UseEn += 2, UseCol += 2; ThrSpeed == 0 -> ThrFront2 = ThrBack2 = 0; ; S & !HovMove & !LRMove & AThr -> ThrFront = ThrSpeed, ThrBack = -ThrSpeed, UseEn += 2, UseCol += 2, ThrSpeed < 0 -> ThrFront2 = ThrSpeed2, ThrBack2 = -ThrSpeed2, UseEn += 2, UseCol += 2; ThrSpeed == 0 -> ThrFront2 = ThrBack2 = 0; ; !W & !S -> ThrFront = ThrBack = ThrFront2 = ThrBack2 = 0; D & !LRMove & !HovMove & AThr -> ThrLF = ThrRR = ConstThrLR, ThrRF = ThrLR = 0, UseEn += 2, UseCol += 2; A & !LRMove & !HovMove & AThr -> ThrRF = ThrLR = ConstThrLR, ThrLF = ThrRR = 0, UseEn += 2, UseCol += 2; !A & !D -> ThrLF = ThrRF = ThrLR = ThrRR = 0; UseRes -> En = UseEn, Col = UseCol;