Megapede — File Browser
Megapedev1.01 / Megapedev1.01 / megapede.mrc
megapede.mrc — 19 KB — Download this file
on 1:load: {
echo -a Loaded Megapede v1.01 for mIRC 5.31
echo -a Written by Hawkee (http://www.hawkee.com)
echo -a Type /megapede to start.
}
alias megapede {
mp.init.variables
;Settings that change from level to level
%mp-megapede-length = 4
%mp-current-level = 1
%mp-tree-total = 50
%mp-score = 0
%mp-lives = 3
;Fit window in middle of screen
%mp.width = $window(-1).w
%mp.height = $window(-1).h
%mp.x.pos = $calc((%mp.width / 2) - 180)
%mp.y.pos = $calc((%mp.height / 2) - 235)
window -p +nt @Megapede %mp.x.pos %mp.y.pos 340 350 @Megapede
;Initial black
drawfill -r @Megapede %mp.screen.color 1 0 0
;border around entire screen, grey
drawrect -r @Megapede %mp.border.color 1 0 0 336 325
;inner border around playing field, brown
drawrect -r @Megapede %mp.panel.color 3 1 1 334 344
;inner inner border around playing field, brown
drawrect -r @Megapede %mp.panel.color 2 5 5 330 339
;line separating fields
drawline -r @Megapede %mp.border.color 1 245 0 245 345
;fill up the panel
drawfill -r @Megapede %mp.panel.color %mp.border.color 250 5
;little line in top to get rid of grey
drawline -r @Megapede %mp.panel.color 1 245 1 245 7
;line from top of panel to right side, black
drawline -r @megapede %mp.screen.color 1 245 4 332 4
;line from top to bottom of panel, black
drawline -r @Megapede %mp.screen.color 1 332 4 332 345
;line along bottom to fill in frame, brown
drawline -r @Megapede %mp.panel.color 4 0 327 336 328
;cover up grey in panel, brown
drawline -r @Megapede %mp.panel.color 2 245 326 332 326
;fix dot of grey with black
drawdot -r @Megapede %mp.panel.color 1 4 325
;add line at bottom left corner, grey
drawline -r @Megapede %mp.border.color 1 0 326 0 330
;add line of black at bottom left
drawline -r @Megapede %mp.screen.color 1 4 325 4 330
;add speck in corner
drawdot -r @Megapede %mp.speck.color 1 245 325
;fix lower right corner
drawline -r @Megapede %mp.border.color 1 336 325 336 330
drawline -r @Megapede %mp.screen.color 1 332 324 332 330
drawtext -ro @Megapede %mp.text.color Arial bold 266 30 Score
mp.frame 255 50 65 25
drawtext -ro @Megapede %mp.text.color Arial bold 268 110 Level
mp.frame 255 130 65 25
drawtext -ro @Megapede %mp.text.color Arial bold 267 190 Ships
mp.frame 255 210 65 25
;Draw ships in side bar and on playing field
mp.draw.ship 275 219
mp.draw.ship 303 219
mp.draw.ship 123 284
mp.window Starting level one...
}
alias -l mp.init.variables {
;cleans up all the dirty variables and resets the essential variables
unset %mp.*
%mp.tree.color = 56320
%mp.megapede.color = 6062080
%mp.screen.color = 0000000
%mp.border.color = 10064271
%mp.speck.color = 16777215
%mp.panel.color = 2697513
;Feel free to change the %mp.panel.color to whatever you wish
;the value which is commented out will make everything blue
;%mp.panel.color = 6563840
%mp.text.color = 13551310
%mp.score.color = 55039
%mp.shot.speed = 10
%mp.shot.length = 5
%mp.p1.color = 16777215
%mp.max.shots = 3
%mp.speed.test = 0
%mp.loops = 0
%mp.kills = 0
}
alias -l mp.start.level {
;clears the playing field and starts the appropriate level
if ( %mp-lives == 0 ) {
megapede
return
}
titlebar @Megapede Level: %mp-current-level
drawtext -rob @Megapede %mp.score.color %mp.screen.color Arial bold 284 135 %mp-current-level
drawrect -rf @Megapede %mp.screen.color 1 7 7 235 315
mp.draw.megapede
mp.draw.trees
.timermp.update -mo 0 10 mp.update
}
alias -l mp.draw.trees {
;fills the playing field with %mp-tree-total trees
%mp.loop = 1
:loop
if %mp.loop > %mp-tree-total goto end
%mp.x = $r(2,24)
%mp.y = $r(2,27)
set %mp. $+ $calc(10 * %mp.x) $+ . $+ $calc(10 * %mp.y) 5
drawdot -r @Megapede %mp.tree.color 5 $calc((10 * %mp.x) - 3) $calc(10 * %mp.y)
inc %mp.loop
goto loop
:end
}
alias -l mp.draw.megapede {
;creates the megapede according to %mp-megapede-length segments
%mp.loop = 1
:loop
if (%mp.loop > %mp-megapede-length) goto end
set %mp. $+ $calc(10 * %mp.loop + 10) $+ . $+ 20 6 %mp.loop
if (%mp.loop == %mp-megapede-length) { set %mp.body. $+ %mp.loop $calc(10 * %mp.loop + 10) 20 r d h }
else { set %mp.body. $+ %mp.loop $calc(10 * %mp.loop + 10) 20 r d b }
drawdot -r @Megapede %mp.megapede.color 5 $calc((10 * %mp.loop + 10) - 3) 20
inc %mp.loop
goto loop
:end
}
alias -l mp.move.megapede {
;moves segment number $1 of the megapede in the appropriate direction
set %mp.current %mp.body. [ $+ [ $1 ] ]
if (%mp.current != $null) {
if ($gettok(%mp.current,5,32) == h) {
%mp.direction.x = $gettok(%mp.current,3,32)
%mp.direction.y = $gettok(%mp.current,4,32)
if (%mp.direction.x == r) {
%mp.next.x = $calc($gettok(%mp.current,1,32) + 10)
}
else {
%mp.next.x = $calc($gettok(%mp.current,1,32) - 10)
}
%mp.next.y = $gettok(%mp.current,2,32)
%mp.tree.check = %mp. [ $+ [ %mp.next.x ] [ $+ . [ $+ [ %mp.next.y ] ] ] ]
if (%mp.tree.check < 6 && %mp.tree.check != $null) { %mp.tree = $true }
else { %mp.tree = $false }
if ((%mp.tree || %mp.next.x > 240) && %mp.direction.y == d && %mp.direction.x == r) {
%mp.direction.x = l
%mp.next.x = $gettok(%mp.current,1,32)
%mp.next.y = $calc(%mp.next.y + 10)
}
elseif ((%mp.tree || %mp.next.x > 240) && %mp.direction.y == u && %mp.direction.x == r) {
%mp.direction.x = l
%mp.next.x = $gettok(%mp.current,1,32)
%mp.next.y = $calc(%mp.next.y - 10)
}
elseif ((%mp.tree || %mp.next.x < 15) && %mp.direction.y == d && %mp.direction.x == l) {
%mp.direction.x = r
%mp.next.x = $gettok(%mp.current,1,32)
%mp.next.y = $calc(%mp.next.y + 10)
}
elseif ((%mp.tree || %mp.next.x < 15) && %mp.direction.y == u && %mp.direction.x == l) {
%mp.direction.x = r
%mp.next.x = $gettok(%mp.current,1,32)
%mp.next.y = $calc(%mp.next.y - 10)
}
if (%mp.next.y > 310) { set %mp.direction.y u }
elseif (%mp.next.y < 290) { set %mp.direction.y d }
%mp.x = $gettok(%mp.current,1,32)
%mp.y = $gettok(%mp.current,2,32)
set %mp. $+ %mp.next.x $+ . $+ %mp.next.y 6 $1
unset %mp. $+ $calc(%mp.x) $+ . $+ $calc(%mp.y)
set %mp.body. $+ $1 %mp.next.x %mp.next.y %mp.direction.x %mp.direction.y h
}
else {
%mp.next.x = %mp.x
%mp.next.y = %mp.y
%mp.direction.x = $gettok(%mp.current,3,32)
%mp.direction.y = $gettok(%mp.current,4,32)
%mp.x = $gettok(%mp.current,1,32)
%mp.y = $gettok(%mp.current,2,32)
set %mp. $+ %mp.next.x $+ . $+ %mp.next.y 6 $1
unset %mp. $+ $calc(%mp.x) $+ . $+ $calc(%mp.y)
set %mp.body. $+ $1 %mp.next.x %mp.next.y %mp.direction.x %mp.direction.y b
}
drawdot -rn @Megapede %mp.screen.color 5 $calc(%mp.x - 3) %mp.y
drawdot -rn @Megapede %mp.megapede.color 5 $calc(%mp.next.x - 3) %mp.next.y
}
}
on 1:close:@Megapede {
if ( $window(@Mp.window) ) window -c @Mp.window
if ( %mp.active == $false ) {
unset %mp.*
unset %mp-*
}
}
alias -l mp.update {
;updates one frame
%mp.timer = $ticks
%mp.active = $true
if ( $window(@Megapede) == $null ) {
.timermp.update off
unset %mp.*
unset %mp-*
return
}
%mp.loop = %mp-megapede-length
:loop
if (%mp.loop < 1) { goto end }
mp.move.megapede %mp.loop
mp.move.bullets %mp.loop
dec %mp.loop
goto loop
:end
drawdot @Megapede
mp.collision.check
if ($mouse.key & 1) { mp.release.shot }
if ( %mp-debug ) {
inc %mp.loops
inc %mp.speed.test $calc($ticks - %mp.timer)
set %mp.ticks $calc(%mp.speed.test / %mp.loops)
set %mp.refreshes.per.second $calc(1000 / %mp.ticks)
drawtext -rob @Megapede %mp.text.color %mp.panel.color Arial bold 253 260 FPS: $round(%mp.refreshes.per.second,1)
}
}
alias -l mp.move.bullets {
;moves bullet number $1 up the screen one spot if it exists
if (%mp.bullet [ $+ [ $1 ] ] != $null) {
%mp.current = %mp.bullet [ $+ [ $1 ] ]
%mp.bullet.x = $calc(($gettok(%mp.current,1,32) - ($gettok(%mp.current,1,32) % 10)) + 10)
%mp.bullet.y = $calc($gettok(%mp.current,2,32) - ($gettok(%mp.current,2,32) % 10))
%mp.coordinate.check = %mp. [ $+ [ %mp.bullet.x ] [ $+ . [ $+ [ %mp.bullet.y ] ] ] ]
if (%mp.coordinate.check == $null) { goto next }
else {
unset %mp.bullet $+ $1
%mp.size = $gettok(%mp.coordinate.check,1,32)
drawdot -r @Megapede %mp.screen.color %mp.size $calc(%mp.bullet.x - 3) %mp.bullet.y
dec %mp.size
if (%mp.size == 5) {
inc %mp.kills
%mp.part = $gettok(%mp.coordinate.check,2,32)
unset %mp.body. $+ $calc(%mp.part)
dec %mp.part
%mp.previous.part = %mp.body. [ $+ [ %mp.part ] ]
if (%mp.previous.part != $null) { set %mp.body. $+ %mp.part $gettok(%mp.previous.part,1-4,32) h }
drawdot -r @Megapede %mp.tree.color %mp.size $calc(%mp.bullet.x - 3) %mp.bullet.y
set %mp. $+ %mp.bullet.x $+ . $+ %mp.bullet.y %mp.size
inc %mp-score 50
drawtext -rob @Megapede %mp.score.color %mp.screen.color Arial bold 265 55 %mp-score
if ( %mp.kills == %mp-megapede-length ) { mp.level.complete }
}
elseif (%mp.size < 3) {
unset %mp. $+ $calc(%mp.bullet.x) $+ . $+ $calc(%mp.bullet.y)
inc %mp-score 5
drawtext -rob @Megapede %mp.score.color %mp.screen.color Arial bold 265 55 %mp-score
}
else {
drawdot -r @Megapede %mp.tree.color %mp.size $calc(%mp.bullet.x - 3) %mp.bullet.y
set %mp. $+ %mp.bullet.x $+ . $+ %mp.bullet.y %mp.size
}
drawline -r @Megapede %mp.screen.color 1 %mp.current $gettok(%mp.current,1,32) $calc($gettok(%mp.current,2,32) + %mp.shot.length)
goto end
}
:next
drawline -r @Megapede %mp.screen.color 1 %mp.current $gettok(%mp.current,1,32) $calc($gettok(%mp.current,2,32) + %mp.shot.length)
%mp.current = $gettok(%mp.current,1,32) $calc($gettok(%mp.current,2,32) - %mp.shot.speed)
drawline @Megapede 0 1 %mp.current $gettok(%mp.current,1,32) $calc($gettok(%mp.current,2,32) + %mp.shot.length)
if ($gettok(%mp.current,2,32) < 20) {
unset %mp.bullet $+ $1
drawline -r @Megapede %mp.screen.color 1 %mp.current $gettok(%mp.current,1,32) $calc($gettok(%mp.current,2,32) + %mp.shot.length)
}
else { set %mp.bullet $+ $1 %mp.current }
}
:end
}
alias -l mp.release.shot {
;sets the next bullet in line to true and gives it a starting coordinate to move up from
%mp.loop = 1
:loop
if (%mp.loop > %mp.max.shots) { goto end }
if (%mp.bullet [ $+ [ %mp.loop ] ] == $null) {
mp.coordinates
set %mp.bullet $+ %mp.loop %mp.mouse.x $calc(%mp.mouse.y - 3)
halt
}
inc %mp.loop
goto loop
:end
}
menu @Megapede {
mouse {
if (%mp.active) {
if ( %mp.point && %mp.lower.left && %mp.lower.right ) {
drawline -r @Megapede %mp.screen.color 2 %mp.point %mp.lower.left
drawline -r @Megapede %mp.screen.color 2 %mp.point %mp.lower.right
}
mp.coordinates
mp.draw.ship %mp.mouse.x %mp.mouse.y
}
}
dclick {
mp.release.shot
}
Reset:.timermp.update off | megapede
$mp.pause:mp.pause.switch
$mp.fps:mp.fps.switch
-
Quit: {
window -c @Megapede
if ( $window(@Mp.window) ) window -c @Mp.window
if ( %mp.active == $false ) {
unset %mp.*
unset %mp-*
}
}
}
;Menu aliases
alias -l mp.fps {
if ( %mp-debug ) { return Hide FPS }
else { return Show FPS }
}
alias -l mp.fps.switch {
if ( %mp-debug ) {
unset %mp-debug
drawrect -rf @Megapede %mp.panel.color 1 250 260 80 15
}
else { %mp-debug = $true }
}
alias -l mp.pause {
if ($timer(mp.update).status == 0) {
return Unpause
}
else { return Pause }
}
alias -l mp.pause.switch {
if ($timer(mp.update).status == 0) {
%mp.active = $true
timermp.update -m 0 1 mp.update
}
else {
.timermp.update off
%mp.active = $false
}
}
alias -l mp.frame {
;draws a little box, used in the side bar for score, level and lives
drawrect -r @Megapede %mp.border.color 1 $1 $2 $3 $4
drawfill -r @Megapede %mp.screen.color %mp.border.color $calc($1 + 2) $calc($2 + 2)
drawline -r @Megapede %mp.panel.color 2 $1 $2 $calc($1 + $3) $2
drawline -r @Megapede %mp.panel.color 2 $calc($1 + 3) $calc($2 + 3) $calc($1 + $3 - 2) $calc($2 + 3)
drawline -r @Megapede %mp.panel.color 2 $calc($1 + 3) $calc($2 + 2) $calc($1 + 3) $calc($2 + $4)
drawline -r @Megapede %mp.panel.color 2 $1 $2 $1 $calc($2 + $4)
drawdot -r @Megapede %mp.screen.color 1 $calc($1 + 1) $calc($2 + $4)
drawdot -r @Megapede %mp.screen.color 1 $calc($1 + 1) $calc($2 + $4 +1)
}
alias -l mp.window {
;creates the window to notify you of what is happening
%mp.width = $window(-1).w
%mp.height = $window(-1).h
%mp.x.pos = $calc((%mp.width / 2) - 100)
%mp.y.pos = $calc((%mp.height / 2) - 100)
window -pt +nf @Mp.window %mp.x.pos %mp.y.pos 190 90 @Mp.window.menu
drawfill -r @Mp.window %mp.panel.color 1 0 0
mp.window.button up
drawtext -ro @Mp.window %mp.text.color Arial 14 137 54 Ok
if ( $1 ) {
drawtext -ro @Mp.window %mp.text.color Arial 14 $round($calc( 112 - ( $width($1-,Arial,14,1,0) / 2 ) ),0) 20 $1-
}
if ( %mp-score != 0 ) {
drawtext -ro @Mp.window %mp.text.color Arial 14 20 40 Score: %mp-score
}
}
alias -l mp.window.button {
;down parameter creates a button in the down position, while up draws it in the up position
if $window(@Mp.window) {
if $1 == down {
drawline -r @Mp.window %mp.border.color 1 120 70 170 70
drawline -r @Mp.window %mp.border.color 1 170 70 170 50
drawline -r @Mp.window %mp.screen.color 1 120 70 120 50
drawline -r @Mp.window %mp.screen.color 1 120 50 170 50
}
else if $1 == up {
drawline -r @Mp.window %mp.screen.color 1 120 70 170 70
drawline -r @Mp.window %mp.screen.color 1 170 70 170 50
drawline -r @Mp.window %mp.border.color 1 120 70 120 50
drawline -r @Mp.window %mp.border.color 1 120 50 170 50
}
}
}
alias -l mp.window.click {
;used to check if the user clicked and released the mouse button while over the "ok" button of the window
if ( $mouse.key & 1 ) { .timer -m 1 100 mp.window.click }
else if $inrect($mouse.x,$mouse.y,120,50,50,20) {
unset %mp.button.click
window -c @Mp.window
mp.window.closed
}
}
menu @Mp.window.menu {
;these events were used to determine when the button should be down and when the window will be closed
sclick {
if ( $inrect($mouse.x,$mouse.y,120,50,50,20) ) {
mp.window.button down
%mp.button.click = $true
.timer -m 1 100 mp.window.click
}
}
dclick {
if ( $inrect($mouse.x,$mouse.y,120,50,50,20) ) {
mp.window.button down
%mp.button.click = $true
.timer -m 1 100 mp.window.click
}
}
mouse {
if ( $inrect($mouse.x,$mouse.y,120,50,50,20) == $false ) { mp.window.button up }
else if %mp.button.click && $mouse.key & 1 { mp.window.button down }
}
drop {
if ( $inrect($mouse.x,$mouse.y,120,50,50,20) && %mp.button.click ) {
window -c @Mp.window
mp.window.closed
}
else if ( %mp.button.click ) { unset %mp.button.click }
}
}
alias -l mp.collision.check {
;checks to see if anything is touching your ship, if so you die
mp.coordinates
%mp.mid.left = $calc(%mp.mouse.x - 5) $calc(%mp.mouse.y + 5)
%mp.mid.right = $calc(%mp.mouse.x + 5) $calc(%mp.mouse.y + 5)
%mp.left.tip = $calc(%mp.mouse.x - 10) $calc(%mp.mouse.y + 10)
%mp.right.tip = $calc(%mp.mouse.x + 10) $calc(%mp.mouse.y + 10)
%mp.tip = $getdot(@Megapede,%mp.mouse.x,$calc(%mp.mouse.y - 2))
%mp.mid.left = $getdot(@Megapede,$calc($gettok(%mp.mid.left,1,32) + 5),$gettok(%mp.mid.left,2,32))
%mp.mid.right = $getdot(@Megapede,$calc($gettok(%mp.mid.right,1,32) + 5),$gettok(%mp.mid.right,2,32))
%mp.left.tip = $getdot(@Megapede,$calc($gettok(%mp.left.tip,1,32) - 2),$gettok(%mp.left.tip,2,32))
%mp.right.tip = $getdot(@Megapede,$calc($gettok(%mp.right.tip,1,32) + 2),$gettok(%mp.right.tip,2,32))
if ((%mp.tip != %mp.screen.color) || (%mp.left.tip != %mp.screen.color) || (%mp.right.tip != %mp.screen.color) || (%mp.mid.left != %mp.screen.color) || (%mp.mid.right != %mp.screen.color)) {
%mp-dead = $true
mp.level.complete
}
}
alias -l mp.coordinates {
;adjusts the $mouse.x and $mouse.y coordinates so they map to some place in the playing area for the ship
if ($mouse.y < 275) { %mp.mouse.y = 275 }
elseif ($mouse.y > 310) { %mp.mouse.y = 310 }
else { %mp.mouse.y = $mouse.y }
if ($mouse.x > 232) { %mp.mouse.x = 232 }
elseif ($mouse.x < 19) { %mp.mouse.x = 19 }
else { %mp.mouse.x = $mouse.x }
}
alias -l mp.draw.ship {
;draws a ship at point $1, $2
%mp.point = $1 $2
%mp.lower.left = $calc($1 - 10) $calc($2 + 10)
%mp.lower.right = $calc($1 + 10) $calc($2 + 10)
drawline -r @Megapede %mp.p1.color 2 $1 $2 $calc($1 - 10) $calc($2 + 10)
drawline -r @Megapede %mp.p1.color 2 $1 $2 $calc($1 + 10) $calc($2 + 10)
}
alias -l mp.level.complete {
;called when you either die or pass a level, adjusts variables according to your status and restarts the play field
.timermp.update off
drawrect -rf @Megapede %mp.screen.color 1 7 7 235 315
mp.init.variables
if ( %mp-dead ) {
unset %mp-dead
if ( %mp-lives == 3 ) {
%mp.p1.color = %mp.screen.color
mp.draw.ship 275 219
%mp.p1.color = 16777215
dec %mp-lives
mp.window You died. %mp-lives ships remaining.
}
else if ( %mp-lives == 2 ) {
%mp.p1.color = %mp.screen.color
mp.draw.ship 303 219
%mp.p1.color = 16777215
dec %mp-lives
mp.window You died. %mp-lives ship remaining.
}
else if ( %mp-lives == 1 ) {
dec %mp-lives
mp.window Game over, no more ships
}
}
else if ( %mp-current-level == 1 ) {
%mp-tree-total = 100
%mp-current-level = 2
%mp-megapede-length = 4
mp.window Starting Level two...
}
else if ( %mp-current-level == 2 ) {
%mp-tree.total = 100
%mp-current-level = 3
%mp-megapede-length = 3
mp.window Starting level three...
}
else if ( %mp-current-level == 3 ) {
%mp-tree.total = 150
%mp-current-level = 4
%mp-megapede-length = 2
mp.window Starting level four...
}
else if ( %mp-current-level == 4 ) {
%mp-tree.total = 200
%mp-current-level = 5
%mp-megapede-length = 1
mp.window Starting level five...
}
else if ( %mp-current-level == 5 ) {
window -c @Megapede
mp.window You win! Congratulations!
}
}
alias -l mp.window.closed {
;this is called when the @Mp.window is closed
;a new level always starts when it's closed unless
;@Megapede has been shut down
if ( $window(@Megapede) ) mp.start.level
else {
unset %mp.*
unset %mp-*
}
}