Arkanoid

From FSG Wiki

Jump to: navigation, search

Back to Main Page

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.

ScreenShot

Image:Arkanoid_alpha_stage.png

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.

Personal tools