Arkanoid
From FSG Wiki
[edit]
Arkanoid Sand beta
Ok i just put it here, so i have it somewhere else if something happen.
And it is a usable version, but it dont do much execpt bounce when the ball hit something.
[edit]
ScreenShot
[edit]
The Code
Anyway here is the code:
GROUP CLEARALL ELEMENTSCLEAR INCLUDE elements.bs2 // BALL ELEMENT none BALL 150 150 150 0 20 20 20 0 Clear 0 TEXT BALL // PADDLE ELEMENT none PADDLE 255 255 255 0 1 1 1 0 Clear 0 TEXT PADDLE // BARRIER Element none Block*BarrierLVL1*LEFT 0 0 150 0 1 1 1 0 Clear 0 TEXT "" Element none Block*BarrierLVL1*RIGHT 0 0 150 0 1 1 1 0 Clear 0 TEXT "" Element none Block*BarrierLVL1*BOTTOM 0 0 150 0 1 1 1 0 Clear 0 TEXT "" Element none Block*BarrierLVL1*TOP 0 0 150 0 1 1 1 0 Clear 0 TEXT "" Element none Block*BarrierLVL2*LEFT 200 0 0 0 1 1 1 0 Clear 0 TEXT "" Element none Block*BarrierLVL2*RIGHT 200 0 0 0 1 1 1 0 Clear 0 TEXT "" Element none Block*BarrierLVL2*BOTTOM 200 0 0 0 1 1 1 0 Clear 0 TEXT "" Element none Block*BarrierLVL2*TOP 200 0 0 0 1 1 1 0 Clear 0 TEXT "" // BARRIER KILLER Element none Block*BarrierKILLER 0 0 150 0 1 1 1 32768 Clear 0 TEXT "" Element none Block*BarrierKILLERLVL2LEFT 200 0 200 0 1 1 1 32768 Block*BarrierLVL1*LEFT 0 TEXT "" Element none Block*BarrierKILLERLVL2RIGHT 200 0 200 0 1 1 1 32768 Block*BarrierLVL1*RIGHT 0 TEXT "" Element none Block*BarrierKILLERLVL2BOTTOM 200 0 200 0 1 1 1 32768 Block*BarrierLVL1*BOTTOM 0 TEXT "" Element none Block*BarrierKILLERLVL2TOP 200 0 200 0 1 1 1 32768 Block*BarrierLVL1*TOP 0 TEXT "" // BLOCK Element none Block*Water 0 0 255 700 100 20 1 0 Clear 0 TEXT "" Element none Block*Sand 230 180 0 900 1 1 1 0 Clear 0 TEXT "" Element none Block*Stone 100 100 100 1400 1 1 1 0 Clear 0 TEXT "" Element none Block*Fire 255 0 0 -400 1 1 1 0 Clear 0 TEXT "" Element none Block*Gas 140 40 140 -50 2 1 5 0 Clear 0 TEXT "" // MAKE ELEMENT DIE TO CLEAR, WHEN BARRIER IS GONE (TOUCHING CLEAR) Interaction Block*Water Clear Clear Clear 500 Interaction Block*Sand Clear Clear Clear 500 Interaction Block*Stone Clear Clear Clear 500 Interaction Block*Fire Clear Clear Clear 500 Interaction Block*Gas Clear Clear Clear 500 // BALL HIT BARRIER INTERACTIONTRIGGER Block*BarrierLVL1*TOP BALL <EXEC BALL_HIT_BLOCK:BarrierLVL1 1> 32768 INTERACTIONTRIGGER Block*BarrierLVL1*BOTTOM BALL <EXEC BALL_HIT_BLOCK:BarrierLVL1 2> 32768 INTERACTIONTRIGGER Block*BarrierLVL1*LEFT BALL <EXEC BALL_HIT_BLOCK:BarrierLVL1 3> 32768 INTERACTIONTRIGGER Block*BarrierLVL1*RIGHT BALL <EXEC BALL_HIT_BLOCK:BarrierLVL1 4> 32768 INTERACTIONTRIGGER Block*BarrierLVL2*TOP BALL <EXEC BALL_HIT_BLOCK:BarrierLVL2 1> 32768 INTERACTIONTRIGGER Block*BarrierLVL2*BOTTOM BALL <EXEC BALL_HIT_BLOCK:BarrierLVL2 2> 32768 INTERACTIONTRIGGER Block*BarrierLVL2*LEFT BALL <EXEC BALL_HIT_BLOCK:BarrierLVL2 3> 32768 INTERACTIONTRIGGER Block*BarrierLVL2*RIGHT BALL <EXEC BALL_HIT_BLOCK:BarrierLVL2 4> 32768 // BARRIER KILLER PROPAGATION Interaction Block*BarrierKILLER Block*BarrierLVL1*TOP Block*BarrierKILLER Block*BarrierKILLER 32678 Interaction Block*BarrierKILLER Block*BarrierLVL1*BOTTOM Block*BarrierKILLER Block*BarrierKILLER 32678 Interaction Block*BarrierKILLER Block*BarrierLVL1*LEFT Block*BarrierKILLER Block*BarrierKILLER 32678 Interaction Block*BarrierKILLER Block*BarrierLVL1*RIGHT Block*BarrierKILLER Block*BarrierKILLER 32678 Interaction Block*BarrierKILLERLVL2BOTTOM Block*BarrierLVL2*BOTTOM Block*BarrierKILLERLVL2BOTTOM Block*BarrierKILLERLVL2BOTTOM 32678 Interaction Block*BarrierKILLERLVL2BOTTOM Block*BarrierLVL2*LEFT Block*BarrierKILLERLVL2LEFT Block*BarrierKILLERLVL2LEFT 32678 Interaction Block*BarrierKILLERLVL2BOTTOM Block*BarrierLVL2*RIGHT Block*BarrierKILLERLVL2RIGHT Block*BarrierKILLERLVL2RIGHT 32678 Interaction Block*BarrierKILLERLVL2LEFT Block*BarrierLVL2*LEFT Block*BarrierKILLERLVL2LEFT Block*BarrierKILLERLVL2LEFT 32678 Interaction Block*BarrierKILLERLVL2LEFT Block*BarrierLVL2*TOP Block*BarrierKILLERLVL2TOP Block*BarrierKILLERLVL2TOP 32678 Interaction Block*BarrierKILLERLVL2LEFT Block*BarrierLVL2*BOTTOM Block*BarrierKILLERLVL2BOTTOM Block*BarrierKILLERLVL2BOTTOM 32678 Interaction Block*BarrierKILLERLVL2TOP Block*BarrierLVL2*TOP Block*BarrierKILLERLVL2TOP Block*BarrierKILLERLVL2TOP 32678 Interaction Block*BarrierKILLERLVL2TOP Block*BarrierLVL2*RIGHT Block*BarrierKILLERLVL2RIGHT Block*BarrierKILLERLVL2RIGHT 32678 Interaction Block*BarrierKILLERLVL2TOP Block*BarrierLVL2*LEFT Block*BarrierKILLERLVL2LEFT Block*BarrierKILLERLVL2LEFT 32678 Interaction Block*BarrierKILLERLVL2RIGHT Block*BarrierLVL2*RIGHT Block*BarrierKILLERLVL2RIGHT Block*BarrierKILLERLVL2RIGHT 32678 Interaction Block*BarrierKILLERLVL2RIGHT Block*BarrierLVL2*BOTTOM Block*BarrierKILLERLVL2BOTTOM Block*BarrierKILLERLVL2BOTTOM 32678 Interaction Block*BarrierKILLERLVL2RIGHT Block*BarrierLVL2*TOP Block*BarrierKILLERLVL2TOP Block*BarrierKILLERLVL2TOP 32678 // ELEMENTID REPLACEELEMENTID X Y WIDTH HEIGHT REMOVETRIGGER REPLACEFILLEDRECT ON REPLACEFILLEDRECT SET tmp 0 ON REPLACEFILLEDRECT WHILE (tmp < $5) REPLACEFILLEDRECT2 REMOVETRIGGER REPLACEFILLEDRECT2 ON REPLACEFILLEDRECT2 DRAW $0 REPLACELINE $2 ($3 + tmp) $4 0 $1 ON REPLACEFILLEDRECT2 SET tmp (tmp + 1) ON MOUSEMOVE EXEC MOVEPADDLE REMOVETRIGGER YOU_DIED ON YOU_DIED SET BALL:MOVING 0 ON YOU_DIED TIMER 240 FRAMES RESPAWN_BALL REMOVETRIGGER RESPAWN_BALL ON RESPAWN_BALL SET BALL:X PADDLE:CENTERX ON RESPAWN_BALL SET BALL:Y (PADDLE:Y - (BALL:RAY + 1)) ON RESPAWN_BALL DRAW ELEMENT:BALL FILLEDCIRCLE BALL:X BALL:Y BALL:RAY REMOVETRIGGER MOVEPADDLE ON MOVEPADDLE SET PADDLE:MOVEX ((X - (PADDLEWIDTH / 2)) - PADDLE:X) ON MOVEPADDLE SET PADDLE:LASTX PADDLE:X ON MOVEPADDLE SET PADDLE:LASTY PADDLE:Y ON MOVEPADDLE SET PADDLE:X (PADDLE:X + PADDLE:MOVEX) ON MOVEPADDLE IF (X == 0) <SET PADDLE:X PADDLE:LASTX> ON MOVEPADDLE SET PADDLE:MINX ((PADDLE:X - (PADDLEHEIGHT / 2)) + 1) ON MOVEPADDLE SET PADDLE:MAXX (PADDLE:X + (PADDLEWIDTH + (PADDLEHEIGHT / 2))) ON MOVEPADDLE SET PADDLE:CENTERX (PADDLE:X + (PADDLEWIDTH / 2)) ON MOVEPADDLE SET PADDLE:CENTERY (PADDLE:Y + (PADDLEHEIGHT / 2)) ON MOVEPADDLE DRAW ELEMENT:Clear FILLEDRECT PADDLE:LASTX PADDLE:LASTY PADDLEWIDTH PADDLEHEIGHT ON MOVEPADDLE DRAW ELEMENT:Clear FILLEDCIRCLE PADDLE:LASTX (PADDLE:LASTY + (PADDLEHEIGHT / 2)) (PADDLEHEIGHT / 2) ON MOVEPADDLE DRAW ELEMENT:Clear FILLEDCIRCLE (PADDLE:LASTX + PADDLEWIDTH) (PADDLE:LASTY + (PADDLEHEIGHT / 2)) (PADDLEHEIGHT / 2) ON MOVEPADDLE DRAW ELEMENT:PADDLE FILLEDRECT PADDLE:X PADDLE:Y PADDLEWIDTH PADDLEHEIGHT ON MOVEPADDLE DRAW ELEMENT:PADDLE FILLEDCIRCLE PADDLE:X (PADDLE:Y + (PADDLEHEIGHT / 2)) (PADDLEHEIGHT / 2) ON MOVEPADDLE DRAW ELEMENT:PADDLE FILLEDCIRCLE (PADDLE:X + PADDLEWIDTH) (PADDLE:Y + (PADDLEHEIGHT / 2)) (PADDLEHEIGHT / 2) ON MOVEPADDLE DRAW ELEMENT:Earth FILLEDCIRCLE (PADDLE:CENTERX) (PADDLE:CENTERY) 1 ON MOVEPADDLE IF (BALL:MOVING == 0) REDRAWBALL (PADDLE:CENTERX + 5) ((PADDLE:Y - (PADDLEHEIGHT / 2)) - 3) REMOVETRIGGER GET_BALL_XY ON GET_BALL_XY SET tmpX (PADDLE:CENTERX - (BALL:X)) ON GET_BALL_XY SET tmpY ((PADDLE:Y + PADDLEHEIGHT) - (BALL:Y)) ON GET_BALL_XY SET tmp (SQRT ((tmpX * tmpX) + (tmpY * tmpY))) ON GET_BALL_XY SET BALL:MOVEX ((tmpX * -150 ) / tmp) ON GET_BALL_XY SET BALL:MOVEY ((tmpY * -150 ) / tmp) ON GET_BALL_XY SET BALL:BIGX (BALL:X * 50) ON GET_BALL_XY SET BALL:BIGY (BALL:Y * 50) REMOVETRIGGER REDRAWBALL ON REDRAWBALL SET BALL:LASTX BALL:X ON REDRAWBALL SET BALL:LASTY BALL:Y ON REDRAWBALL SET BALL:X $0 ON REDRAWBALL SET BALL:Y $1 ON REDRAWBALL DRAW ELEMENT:Clear REPLACEFILLEDCIRCLE BALL:LASTX BALL:LASTY BALL:RAY 0 ELEMENT:BALL ON REDRAWBALL DRAW ELEMENT:BALL REPLACEFILLEDCIRCLE BALL:X BALL:Y BALL:RAY 0 ELEMENT:Clear REMOVETRIGGER MOVEBALL ON MOVEBALL SET BALL:LASTX BALL:X ON MOVEBALL SET BALL:LASTY BALL:Y ON MOVEBALL SET BALL:X (($0 + $2) / 50) ON MOVEBALL SET BALL:Y (($1 + $3) / 50) ON MOVEBALL DRAW ELEMENT:Clear REPLACEFILLEDCIRCLE BALL:LASTX BALL:LASTY BALL:RAY 0 ELEMENT:BALL ON MOVEBALL DRAW ELEMENT:BALL REPLACEFILLEDCIRCLE BALL:X BALL:Y BALL:RAY ON MOVEBALL EXEC REPLACEFILLEDRECT ELEMENT:BALL ELEMENT:Clear BALL:X (BALL:Y - BALL:RAY) 0 0 ON MOVEBALL IF (BALL:HIT_BLOCK == 0) CHECKBORDER BALL:X BALL:Y ON MOVEBALL IF (BALL:HIT_BLOCK > 0) CHECKBLOCK ON MOVEBALL SET VAR1 0 ON MOVEBALL SET VAR2 0 ON MOVEBALL SET VAR3 0 ON MOVEBALL SET VAR4 0 ON MOVEBALL IF ((BOUNCE:NONE == 1) && (BOUNCE:TOP == 0) && (BOUNCE:SIDE == 0) && (BOUNCE:BOTTOM == 0) && (BOUNCE:PADDLE == 0)) <SET VAR1 1> ON MOVEBALL IF ((BOUNCE:NONE == 1) && (BOUNCE:TOP == 1) && (BOUNCE:SIDE == 0) && (BOUNCE:BOTTOM == 0) && (BOUNCE:PADDLE == 0)) <SET VAR2 1> ON MOVEBALL IF ((BOUNCE:NONE == 1) && (BOUNCE:TOP == 0) && (BOUNCE:SIDE == 1) && (BOUNCE:BOTTOM == 0) && (BOUNCE:PADDLE == 0)) <SET VAR3 1> ON MOVEBALL IF ((BOUNCE:NONE == 1) && (BOUNCE:TOP == 0) && (BOUNCE:SIDE == 0) && (BOUNCE:BOTTOM == 1) && (BOUNCE:PADDLE == 0)) <SET VAR4 1> ON MOVEBALL IF (VAR2 == 1) <SET BALL:MOVEY (BALL:MOVEY * -1)> ON MOVEBALL IF (VAR3 == 1) <SET BALL:MOVEX (BALL:MOVEX * -1)> ON MOVEBALL IF (VAR4 == 1) <SET BALL:MOVEY (BALL:MOVEY * -1)> ON MOVEBALL IF ((BOUNCE:NONE == 1) && (BOUNCE:TOP == 0) && (BOUNCE:SIDE == 0) && (BOUNCE:BOTTOM == 0) && (BOUNCE:PADDLE == 0)) <TIMER 1 FRAMES MOVEBALL ($0 + BALL:MOVEX) ($1 + BALL:MOVEY) BALL:MOVEX BALL:MOVEY> ON MOVEBALL IF ((BOUNCE:NONE == 1) && (BOUNCE:TOP == 1) && (BOUNCE:SIDE == 0) && (BOUNCE:BOTTOM == 0) && (BOUNCE:PADDLE == 0)) <TIMER 1 FRAMES MOVEBALL ($0) ($1) BALL:MOVEX BALL:MOVEY> ON MOVEBALL IF ((BOUNCE:NONE == 1) && (BOUNCE:TOP == 0) && (BOUNCE:SIDE == 0) && (BOUNCE:BOTTOM == 1) && (BOUNCE:PADDLE == 0)) <TIMER 1 FRAMES MOVEBALL ($0) ($1) BALL:MOVEX BALL:MOVEY> ON MOVEBALL IF ((BOUNCE:NONE == 1) && (BOUNCE:TOP == 0) && (BOUNCE:SIDE == 1) && (BOUNCE:BOTTOM == 0) && (BOUNCE:PADDLE == 0)) <TIMER 1 FRAMES MOVEBALL ($0) ($1) BALL:MOVEX BALL:MOVEY> ON MOVEBALL IF ((BOUNCE:NONE == 1) && (BOUNCE:TOP == 0) && (BOUNCE:SIDE == 0) && (BOUNCE:BOTTOM == 0) && (BOUNCE:PADDLE == 1)) GET_BALL_XY ON MOVEBALL IF ((BOUNCE:NONE == 1) && (BOUNCE:TOP == 0) && (BOUNCE:SIDE == 0) && (BOUNCE:BOTTOM == 0) && (BOUNCE:PADDLE == 1)) <TIMER 1 FRAMES MOVEBALL (BALL:BIGX + BALL:MOVEX) (BALL:BIGY + BALL:MOVEY) (BALL:MOVEX) (BALL:MOVEY)> REMOVETRIGGER CHECKBORDER ON CHECKBORDER SET BOUNCE:SIDE 0 ON CHECKBORDER SET BOUNCE:TOP 0 ON CHECKBORDER SET BOUNCE:PADDLE 0 ON CHECKBORDER SET BOUNCE:PADDLE1 0 ON CHECKBORDER SET BOUNCE:PADDLE2 0 ON CHECKBORDER SET BOUNCE:PADDLE3 0 ON CHECKBORDER SET BOUNCE:BOTTOM 0 // SIDE BORDERS ON CHECKBORDER IF (($0 >= WIDTH) || ($0 <= 0)) <SET BOUNCE:SIDE 1> ON CHECKBORDER IF (($0 < WIDTH) && ($0 > 0)) <SET BOUNCE:NONE 1> // TOP BORDER ON CHECKBORDER IF ($1 <= BALL:RAY) <SET BOUNCE:TOP 1> // BOTTOM BORDER (DIE) ON CHECKBORDER IF ($1 > (HEIGHT + BALL:RAY)) <SET BOUNCE:NONE 0> ON CHECKBORDER IF ($1 > (HEIGHT + BALL:RAY)) <SET BALL:MOVING 0> // ON CHECKBORDER IF ($1 > HEIGHT) <SET BOUNCE:BOTTOM 1> // HIT PADDLE ON CHECKBORDER IF ($1 >= PADDLE:Y) <SET BOUNCE:PADDLE1 1> ON CHECKBORDER IF ($0 >= PADDLE:X) <SET BOUNCE:PADDLE2 1> ON CHECKBORDER IF ($0 <= (PADDLE:X + PADDLEWIDTH)) <SET BOUNCE:PADDLE3 1> ON CHECKBORDER IF ((BOUNCE:PADDLE1 == 1) && (BOUNCE:PADDLE2 == 1) && (BOUNCE:PADDLE3 == 1)) <SET BOUNCE:PADDLE 1> REMOVETRIGGER CHECKBLOCK ON CHECKBLOCK SET BOUNCE:SIDE 0 ON CHECKBLOCK SET BOUNCE:TOP 0 ON CHECKBLOCK SET BOUNCE:PADDLE 0 ON CHECKBLOCK SET BOUNCE:BOTTOM 0 ON CHECKBLOCK IF (BALL:HIT_BLOCK == 1) <SET BOUNCE:TOP 1> ON CHECKBLOCK IF (BALL:HIT_BLOCK == 2) <SET BOUNCE:BOTTOM 1> ON CHECKBLOCK IF (BALL:HIT_BLOCK == 3) <SET BOUNCE:SIDE 1> ON CHECKBLOCK IF (BALL:HIT_BLOCK == 4) <SET BOUNCE:SIDE 1> ON CHECKBLOCK SET BALL:HIT_BLOCK 0 REMOVETRIGGER KEY_p ON KEY_p EXEC togglepause REMOVETRIGGER KEY_SPACE ON KEY_SPACE IF (BALL:MOVING == 0) SHOOT REMOVETRIGGER SHOOT ON SHOOT SET BALL:MOVING 1 ON SHOOT SET BOUNCE:NONE 1 ON SHOOT SET BOUNCE:SIDE 0 ON SHOOT SET BOUNCE:TOP 0 ON SHOOT SET BOUNCE:BOTTOM 0 ON SHOOT SET BOUNCE:PADDLE 0 ON SHOOT EXEC GET_BALL_XY ON SHOOT EXEC MOVEBALL BALL:BIGX BALL:BIGY BALL:MOVEX BALL:MOVEY REMOVETRIGGER drawing ON drawing IF ((BUTTON == 1) && (CLICKED == 1)) KEY_SPACE ON drawing IF ((BUTTON == 2) && (CLICKED == 1)) togglezoom REMOVETRIGGER togglezoom ON togglezoom IF (ZOOM == 1) <SET ZOOM 3> ON togglezoom IF (ZOOM == 2) <SET ZOOM 1> ON togglezoom IF (ZOOM == 3) <SET ZOOM 2> ON togglezoom IF (ZOOM == 2) <SCROLL X Y> REMOVETRIGGER KEY_b ON KEY_b SET BALL:RAY (BALL:RAY * 2) REMOVETRIGGER KEY_s ON KEY_s SET BALL:RAY (BALL:RAY / 2) REMOVETRIGGER KEY_1 ON KEY_1 EXEC setspeed 1 REMOVETRIGGER KEY_2 ON KEY_2 EXEC setspeed 2 REMOVETRIGGER KEY_3 ON KEY_3 EXEC setspeed 5 REMOVETRIGGER KEY_4 ON KEY_4 EXEC setspeed 10 REMOVETRIGGER KEY_5 ON KEY_5 EXEC setspeed 20 REMOVETRIGGER KEY_6 ON KEY_6 EXEC setspeed 30 REMOVETRIGGER KEY_7 ON KEY_7 EXEC setspeed 60 REMOVETRIGGER KEY_8 ON KEY_8 EXEC setspeed 80 // $0=StartX $1=StartY $2=GAP $3=Number of Block $4=FILL ELEMENT $5=BARRIER ELEMENT REMOVETRIGGER DRAWBLOCKROW ON DRAWBLOCKROW SET rowtmp 0 ON DRAWBLOCKROW SET rowX $0 ON DRAWBLOCKROW SET rowY $1 ON DRAWBLOCKROW SET rowGAP $2 ON DRAWBLOCKROW WHILE (rowtmp < $3) DRAWBLOCKROW2 REMOVETRIGGER DRAWBLOCKROW2 ON DRAWBLOCKROW2 SET BARRIERWIDTH 1 ON DRAWBLOCKROW2 DRAW ($5 + 2) FILLEDRECT rowX (rowY + (BLOCKHEIGHT - BARRIERWIDTH)) BLOCKWIDTH BARRIERWIDTH ON DRAWBLOCKROW2 DRAW ($5 + 3) FILLEDRECT rowX rowY BLOCKWIDTH BARRIERWIDTH ON DRAWBLOCKROW2 DRAW ($5 + 0) FILLEDRECT rowX rowY BARRIERWIDTH BLOCKHEIGHT ON DRAWBLOCKROW2 DRAW ($5 + 1) FILLEDRECT (rowX + (BLOCKWIDTH - BARRIERWIDTH)) rowY BARRIERWIDTH BLOCKHEIGHT ON DRAWBLOCKROW2 DRAW $4 FILL (rowX + (BARRIERWIDTH + 1)) (rowY + (BARRIERWIDTH + 1)) (BLOCKWIDTH - (BARRIERWIDTH - 1)) (BLOCKHEIGHT - (BARRIERWIDTH - 1)) ON DRAWBLOCKROW2 SET rowX (rowX + (BLOCKWIDTH + rowGAP)) ON DRAWBLOCKROW2 SET rowtmp (rowtmp + 1) // $0=(1:TOP 2:BOTTOM 3:LEFT 4:RIGHT) REMOVETRIGGER BALL_HIT_BLOCK:BarrierLVL1 ON BALL_HIT_BLOCK:BarrierLVL1 EXEC REMOVE_BARRIER_TRIGGER 1 ON BALL_HIT_BLOCK:BarrierLVL1 SET BALL:HIT_BLOCK $0 ON BALL_HIT_BLOCK:BarrierLVL1 TIMER 2 FRAMES <DRAW ELEMENT:Block*BarrierKILLER POINT X1 Y1> // $0=(1:TOP 2:BOTTOM 3:LEFT 4:RIGHT) REMOVETRIGGER BALL_HIT_BLOCK:BarrierLVL2 ON BALL_HIT_BLOCK:BarrierLVL2 EXEC REMOVE_BARRIER_TRIGGER 1 ON BALL_HIT_BLOCK:BarrierLVL2 SET BALL:HIT_BLOCK $0 ON BALL_HIT_BLOCK:BarrierLVL2 IF ($0 == 1) <DRAW ELEMENT:Block*BarrierKILLERLVL2TOP POINT X1 Y1> ON BALL_HIT_BLOCK:BarrierLVL2 IF ($0 == 2) <DRAW ELEMENT:Block*BarrierKILLERLVL2BOTTOM POINT X1 Y1> ON BALL_HIT_BLOCK:BarrierLVL2 IF ($0 == 3) <DRAW ELEMENT:Block*BarrierKILLERLVL2LEFT POINT X1 Y1> ON BALL_HIT_BLOCK:BarrierLVL2 IF ($0 == 4) <DRAW ELEMENT:Block*BarrierKILLERLVL2RIGHT POINT X1 Y1> // $0=TIME BEFORE REACTIVATION REMOVETRIGGER REMOVE_BARRIER_TRIGGER ON REMOVE_BARRIER_TRIGGER INTERACTIONCLEAR Block*BarrierLVL1*TOP ON REMOVE_BARRIER_TRIGGER INTERACTIONCLEAR Block*BarrierLVL2*TOP ON REMOVE_BARRIER_TRIGGER INTERACTIONCLEAR Block*BarrierLVL1*BOTTOM ON REMOVE_BARRIER_TRIGGER INTERACTIONCLEAR Block*BarrierLVL2*BOTTOM ON REMOVE_BARRIER_TRIGGER INTERACTIONCLEAR Block*BarrierLVL1*LEFT ON REMOVE_BARRIER_TRIGGER INTERACTIONCLEAR Block*BarrierLVL2*LEFT ON REMOVE_BARRIER_TRIGGER INTERACTIONCLEAR Block*BarrierLVL1*RIGHT ON REMOVE_BARRIER_TRIGGER INTERACTIONCLEAR Block*BarrierLVL2*RIGHT ON REMOVE_BARRIER_TRIGGER TIMER $0 FRAMES REMOVE_BARRIER_TRIGGER2 REMOVETRIGGER REMOVE_BARRIER_TRIGGER2 ON REMOVE_BARRIER_TRIGGER2 INTERACTIONTRIGGER Block*BarrierLVL1*TOP BALL <EXEC BALL_HIT_BLOCK:BarrierLVL1 1> 100000 ON REMOVE_BARRIER_TRIGGER2 INTERACTIONTRIGGER Block*BarrierLVL2*TOP BALL <EXEC BALL_HIT_BLOCK:BarrierLVL2 1> 100000 ON REMOVE_BARRIER_TRIGGER2 INTERACTIONTRIGGER Block*BarrierLVL1*BOTTOM BALL <EXEC BALL_HIT_BLOCK:BarrierLVL1 2> 100000 ON REMOVE_BARRIER_TRIGGER2 INTERACTIONTRIGGER Block*BarrierLVL2*BOTTOM BALL <EXEC BALL_HIT_BLOCK:BarrierLVL2 2> 100000 ON REMOVE_BARRIER_TRIGGER2 INTERACTIONTRIGGER Block*BarrierLVL1*LEFT BALL <EXEC BALL_HIT_BLOCK:BarrierLVL1 3> 100000 ON REMOVE_BARRIER_TRIGGER2 INTERACTIONTRIGGER Block*BarrierLVL2*LEFT BALL <EXEC BALL_HIT_BLOCK:BarrierLVL2 3> 100000 ON REMOVE_BARRIER_TRIGGER2 INTERACTIONTRIGGER Block*BarrierLVL1*RIGHT BALL <EXEC BALL_HIT_BLOCK:BarrierLVL1 4> 100000 ON REMOVE_BARRIER_TRIGGER2 INTERACTIONTRIGGER Block*BarrierLVL2*RIGHT BALL <EXEC BALL_HIT_BLOCK:BarrierLVL2 4> 100000 // ********************************** LEVEL 1 ******************************************************* REMOVETRIGGER DRAWLEVEL1 ON DRAWLEVEL1 EXEC DRAWBLOCKROW 40 (50 + (BLOCKHEIGHT * 0)) 1 8 ELEMENT:Block*Fire ELEMENT:Block*BarrierLVL1*LEFT ON DRAWLEVEL1 EXEC DRAWBLOCKROW 40 (51 + (BLOCKHEIGHT * 1)) 1 8 ELEMENT:Block*Fire ELEMENT:Block*BarrierLVL1*LEFT ON DRAWLEVEL1 EXEC DRAWBLOCKROW 40 (52 + (BLOCKHEIGHT * 2)) 1 8 ELEMENT:Block*Water ELEMENT:Block*BarrierLVL1*LEFT ON DRAWLEVEL1 EXEC DRAWBLOCKROW 40 (53 + (BLOCKHEIGHT * 3)) 1 8 ELEMENT:Block*Water ELEMENT:Block*BarrierLVL1*LEFT ON DRAWLEVEL1 EXEC DRAWBLOCKROW 40 (54 + (BLOCKHEIGHT * 4)) 1 8 ELEMENT:Block*Sand ELEMENT:Block*BarrierLVL2*LEFT REMOVETRIGGER debugmenu ON debugmenu STATUS CLEAR ON debugmenu STATUS ADDTEXT " FPS( " ON debugmenu STATUS ADDNUMBER FPS ON debugmenu STATUS ADDTEXT ") X/Y: " ON debugmenu STATUS ADDNUMBER X ON debugmenu STATUS ADDTEXT "/" ON debugmenu STATUS ADDNUMBER Y ON debugmenu TIMER 1 FRAMES debugmenu REMOVETRIGGER STARTMOD ON STARTMOD SET CURSOR 2 ON STARTMOD SET statustype 1 ON STARTMOD SET BRUSHSIZE 1 ON STARTMOD SET PADDLEWIDTH 60 ON STARTMOD SET PADDLEHEIGHT 11 ON STARTMOD SET BALL:RAY 5 ON STARTMOD SET BLOCKWIDTH 40 ON STARTMOD SET BLOCKHEIGHT 20 ON STARTMOD SET BALL:MOVING 0 ON STARTMOD SET ELEMENT1 ELEMENT:Earth ON STARTMOD EXEC clearscreen ON STARTMOD EXEC listelements GROUP:Stones ON STARTMOD EXEC listgroups ON STARTMOD EXEC defaultstatus ON STARTMOD SET CenterX (WIDTH / 2) ON STARTMOD SET CenterY (HEIGHT / 2) ON STARTMOD SET PADDLE:X CenterX ON STARTMOD SET PADDLE:Y (HEIGHT - 15) ON STARTMOD EXEC DRAWLEVEL1 ON STARTMOD EXEC debugmenu ON STARTMOD SET BALL:X PADDLE:CENTERX ON STARTMOD SET BALL:Y (PADDLE:Y - (BALL:RAY + 1)) ON STARTMOD EXEC MOVEPADDLE // STARTING THE MOD EXEC STARTMOD
It is no way near completion, and have i will surely finish working on it a bit later, for now i put more time in my cannonball.

