rendered paste bodyN@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;