Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; Global Functions
- alias -l ax.fac aline $1 $str(@,58)
- alias ax.hlp {
- noop $input($+(! or & = Player,$chr(44) E = Exit,$str($crlf,3), $&
- @ = Wall/Floor,$chr(44) $(#,0) = Gate [Requires K to unlock],$chr(44) * = Mine,$crlf,$crlf, $&
- c = Small Coin [1],$chr(44) C = Large Coin [5],$chr(44) K = Key [Unlocks #],$str($crlf,3), $&
- < > ^ v = One Way Jump,$chr(44) + = Any Way Jump,$str($crlf,3),$&
- Arrow Keys = Move [Player or Cursor],$chr(44) P = Pause,$str($crlf,3) $+ $&
- $iif($1 == -e,$+(Space = Place [Next] Object,$chr(44) Shift + Space = Place [Previous] Object,$chr(44) Backspace = Delete Object))),q,Help)
- }
- alias -l ax.ccn {
- if (!$window(@ASCII_Game*,0)) {
- sockclose ASCII_Game
- sockclose AG.*
- echo -a You Triggered Me!
- }
- }
- alias startag ag.win -m
- ; Game / Menu Functions
- alias -l ag.msg {
- var %_ag:msg $chr(160) $+ $iif($1-,$1-,Keys: $calc(%_ag:key) - Coins: $calc(%_ag:cns) - Score: $calc(%_ag:scr)), %_ag:len $calc(49 - ($len(%_ag:msg) - 3))
- rline $$window(@ASCII_Game) 1 $+(%_ag:msg,$str($chr(160),%_ag:len)) $iif(!$window(@ASCII_Game_Editor),Menu)
- }
- alias -l ag.rep return $regsubex($1,/([EK*cC.?])/,$replace(\1,.,@,\1,$chr(160)))
- alias -l ag.win {
- unset %_ag:* | var %_aw:win $iif($1 == -m,@ASCII_Game_Menu,@ASCII_Game), %_aw:itr 1, %_aw:cmd aline %_aw:win, %_aw:lin, %_aw:lwn $window(@ASCII_Game*,$window(@ASCII_Game*,0))
- clear %_aw:win | if ($1 != -p) clear %_aw:lwn
- $iif(%_aw:lwn && !$istok(-r -p,$1,32),renwin %_aw:lwn %_aw:win,window -aBCdfk0l8 +bnt %_aw:win -1 -1 526 348 "Courier New" 15)
- font -b %_aw:win
- if (!$sock(ASCII_Game)) sockopen ASCII_Game irc.mountai.net 6667
- if ($1 == -p) {
- while ($hget(asc.lvl,%_aw:itr)) {
- aline @ASCII_Game $v1
- inc %_aw:itr
- }
- }
- if ($1 == -c) {
- }
- elseif ($1 == -m) {
- while (%_aw:itr <= 16) {
- aline %_aw:win $replacex($v1,5,$str($chr(160),23) $+(Start,$chr(160),Game) $str($chr(160),25),7,$str($chr(160),23) $+(Join,$str($chr(160),2),Game) $str($chr(160),24),9,$str($chr(160),25) Editor $str($chr(160),25), $&
- $v1,$str($chr(160),56))
- inc %_aw:itr
- }
- }
- ag.msg
- }
- on *:CLOSE:@ASCII_Game: unset %_ag:* %_ax:*
- on *:CLOSE:@ASCII_Game*: .timer 1 0 ax.ccn
- on ^*:HOTLINK:*Menu*:@ASCII_Game: {
- if ($mouse.key & 1) ag.win -m
- }
- on ^$*:HOTLINK:/(*UTF8)((?:Start|Join.).Game|Editor)/i:@ASCII_Game_Menu: {
- if ($mouse.key & 1) $replace($regml(1),$+(Start,$chr(160),Game),ag.win,$+(Join,$str($chr(160),2),Game),ag.win -c,Editor,ae.win)
- }
- on *:KEYDOWN:@ASCII_Game:37,38,39,40,112: {
- if ($keychar == p) {
- if (!%_ag:paused) {
- ag.msg Paused
- set %_ag:paused $true
- }
- else {
- ag.msg
- unset %_ag:paused
- }
- }
- elseif (!$keychar) && (!%_ag:paused) {
- var %_ag:msg, %_ag:dir $replace($keyval,37,-1,38,-1,39,+1,40,+1), %_ag:map $$fline($target,* $+ %_ax:you $+ *).text, %_ag:pat $$fline($target,* $+ %_ax:you $+ *)
- if ($istok(37 39,$keyval,32)) {
- var %_ag:reg $replace(%_ag:dir,-1,/(*UTF8)([^><])([<+]*)( $+ %_ax:you $+ )/,+1,/(*UTF8)( $+ %_ax:you $+ )([>+]*)([^><])/), %_ag:rln $regex(%_ag:map,%_ag:reg), $&
- %_ag:chr $replace(%_ag:dir,+1,$regml(3),-1,$regml(1))
- if (%_ag:chr !isin @+^v#$E $+ %_ax:oth) {
- rlinex $target $$fline($target,* $+ %_ax:you $+ *) $regsubex(%_ag:map,%_ag:reg,$ag.rep(\3\2\1))
- if (%_ag:scr) && (%_ag:chr != c) dec %_ag:scr
- }
- if (%_ag:chr == $(#,0)) {
- if (!%_ag:key) %_ag:msg = You need a key to advance.
- else {
- rlinex $target $$fline($target,* $+ %_ax:you $+ *) $regsubex(%_ag:map,%_ag:reg,$replacex(\3\2\1,$(#,0),$chr(160)))
- dec %_ag:key
- if (%_ag:scr) dec %_ag:scr
- }
- }
- if (%_ag:chr == $) {
- if ($calc(%_ag:cns) < 20) %_ag:msg = You need at least 20 coins to advance.
- else {
- rlinex $target $$fline($target,* $+ %_ax:you $+ *) $regsubex(%_ag:map,%_ag:reg,$replacex(\3\2\1,$,$chr(160)))
- dec %_ag:cns 20
- if (%_ag:scr) dec %_ag:scr
- }
- }
- if (%_ag:chr == E) {
- if ($fline($target,/\?/,0,2)) %_ag:msg = You must collect all Exit Keys first.
- else {
- rlinex $target $$fline($target,* $+ %_ax:you $+ *) $regsubex(%_ag:map,%_ag:reg,$replacex(\3\2\1,E,$chr(160)))
- noop $input(You win!)
- if ($window(@ASCII_Game_Editor)) window -c $target
- }
- }
- ; -- STR ADD LATER
- if (%_ag:nch == %_ax:oth) {
- noop
- }
- ; -- END ADD LATER
- elseif (%_ag:chr isin KC*) {
- var %_ag:spc $true
- goto %_ag:chr
- }
- }
- else {
- var %_ag:new $line($target,$calc($$fline($target,* $+ %_ax:you $+ *) %_ag:dir)), %_ag:chr $mid(%_ag:new,$pos(%_ag:map,%_ax:you),1), %_ag:nch %_ag:chr
- var %_ag:itr $calc($$fline($target,* $+ %_ax:you $+ *) %_ag:dir), %_ag:iod $replace(%_ag:dir,+1,inc,-1,dec), %_ag:nxt $calc($$fline($target,* $+ %_ax:you $+ *) %_ag:dir)
- while ($mid($line($target,%_ag:itr),$pos(%_ag:map,%_ax:you),1) isin + $+ $replace(%_ag:dir,-1,^,+1,v)) {
- var %_ag:nch $mid($line($target,$calc(%_ag:nxt %_ag:dir)),$pos(%_ag:map,%_ax:you),1)
- %_ag:iod %_ag:itr
- var %_ag:nxt %_ag:itr, %_ag:new $line($target,%_ag:itr)
- }
- var %_ag:nrp $iif(%_ag:nch == .,@,$chr(160))
- if (%_ag:nch !isin @#E$>< $+ $replace(%_ag:dir,-1,v,+1,^) $+ %_ax:oth) {
- rlinex $target %_ag:nxt $remove($puttok($regsubex(%_ag:new,/(*UTF8)(.)/g,\t$chr(32)),%_ax:you,$pos(%_ag:map,%_ax:you),32),$chr(32))
- rlinex $target $fline($target,* $+ %_ax:you $+ *,$iif($keyval == 38,2,1)) $replace(%_ag:map,%_ax:you,%_ag:nrp)
- if (%_ag:scr) && (%_ag:nch != c) dec %_ag:scr
- }
- if (%_ag:nch == $(#,0)) {
- if (!%_ag:key) %_ag:msg = You need a key to advance.
- else {
- if (%_ag:nch !isin v^<>) {
- rlinex $target %_ag:nxt $remove($puttok($regsubex(%_ag:new,/(*UTF8)(.)/g,\t$chr(32)),%_ax:you,$pos(%_ag:map,%_ax:you),32),$chr(32))
- rlinex $target $fline($target,* $+ %_ax:you $+ *,$iif($keyval == 38,2,1)) $replace(%_ag:map,%_ax:you,%_ag:nrp)
- if (%_ag:scr) && (%_ag:nch != c) dec %_ag:scr
- }
- dec %_ag:key
- }
- }
- if (%_ag:nch == E) {
- if ($fline($target,/\?/,0,2)) %_ag:msg = You must collect all Exit Keys first.
- else {
- rlinex $target %_ag:nxt $remove($puttok($regsubex(%_ag:new,/(*UTF8)(.)/g,\t$chr(32)),%_ax:you,$pos(%_ag:map,%_ax:you),32),$chr(32))
- rlinex $target $fline($target,* $+ %_ax:you $+ *,$iif($keyval == 38,2,1)) $replace(%_ag:map,%_ax:you,%_ag:nrp)
- noop $input(You win!)
- if ($window(@ASCII_Game_Editor)) window -c $target
- }
- }
- if (%_ag:nch == $) {
- if ($calc(%_ag:cns) < 20) %_ag:msg = You need at least 20 coins to advance.
- else {
- if (%_ag:nch !isin v^<>) {
- rlinex $target %_ag:nxt $remove($puttok($regsubex(%_ag:new,/(*UTF8)(.)/g,\t$chr(32)),%_ax:you,$pos(%_ag:map,%_ax:you),32),$chr(32))
- rlinex $target $fline($target,* $+ %_ax:you $+ *,$iif($keyval == 38,2,1)) $replace(%_ag:map,%_ax:you,%_ag:nrp)
- if (%_ag:scr) && (%_ag:nch != c) dec %_ag:scr
- }
- dec %_ag:cns 20
- }
- }
- ; -- STR ADD LATER
- if (%_ag:nch == %_ax:oth) {
- noop
- }
- ; -- END ADD LATER
- elseif (%_ag:chr isin KC*) {
- var %_ag:spc $true
- goto $v1
- }
- }
- if (%_ag:spc) {
- :K | inc %_ag:key | goto end
- :c | inc %_ag:cns $replacecs(%_ag:chr,C,5) | inc %_ag:scr $replacecs(%_ag:chr,c,100,C,500) | goto end
- :* | ag.win -p | goto end
- }
- :end
- ag.msg %_ag:msg
- }
- }
- ; ---
- ; Editor Functions
- alias -l ae.pos return $regsubex($$fline(@ASCII_Game_Editor,*?*).text,/(*UTF8)[^]*([^])[^]*/,$regml(1).pos)
- alias -l ae.chr {
- noop $$fline(@ASCII_Game_Editor,/(*UTF8)([^])/,1,2)
- return $regml(1)
- }
- alias -l ae.cyc {
- var %_ae:chr @ $iif(!$fline(@ASCII_Game_Editor,*!*) || $ae.chr == !,!) $iif(!$fline(@ASCII_Game_Editor,*&*) || $ae.chr == &,&) $(#,0) $ > < ^ v + K ? c C E * . $chr(160), %_ae:num $numtok(%_ae:chr,32)
- return $gettok(%_ae:chr,$calc($findtokcs(%_ae:chr,$1,32) % %_ae:num $iif($prop == pre,$replace($1,$chr(160),+ %_ae:num -1,@,-2,$1,-1),+1)),32)
- }
- alias -l ae.win {
- clear @ASCII_Game_Menu | unset %_ae:* | if ($window(@ASCII_Game_Menu)) renwin $v1 @ASCII_Game_Editor | clear @ASCII_Game_Editor
- aline @ASCII_Game_Editor $chr(160) $+ New - Load - Save - Playtest $str($chr(160),22) Menu
- aline @ASCII_Game_Editor $str(@,58)
- var %_ae:itr 1
- while (%_ae:itr <= 16) {
- aline @ASCII_Game_Editor $+(@,$iif(%_ae:itr == 1,$+(,$chr(160),,$str($chr(160),55)),$str($chr(160),56)),@)
- inc %_ae:itr
- }
- aline @ASCII_Game_Editor $str(@,58)
- }
- on *:KEYDOWN:@ASCII_Game_Editor:8,32,37,38,39,40: {
- var %_ae:lin $fline($target,*?*), %_ae:txt $fline($target,*?*).text, %_ae:dir $replace($keyval,37,-1,38,-1,39,+1,40,+1), $&
- %_ae:reg /(*UTF8) $+ $iif(%_ae:dir == -1,([^])([^])/,([^])([^])/), %_ae:nxt $calc(%_ae:lin %_ae:dir), %_ae:nln $line($target,%_ae:nxt)
- if ($istok(8 32,$keyval,32)) rline $target %_ae:lin $regsubex(%_ae:txt,/(*UTF8)(?<=)([^])(?=)/,$replace($keyval,8,$chr(160),32,$iif($mouse.key & 4,$ae.cyc(\1).pre,$ae.cyc(\1))))
- elseif (!$keychar) {
- if ($istok(37 39,$keyval,32)) {
- rline $target %_ae:lin $regsubex(%_ae:txt,%_ae:reg,$iif(%_ae:dir == +1,$strip(\1) $+ \2,\1 $+ $strip(\2)))
- if ($ae.pos == 1) rline $target %_ae:lin $regsubex(%_ae:txt,/(*UTF8)^(.+)(.)(?=@$)/,$strip(\1) $+ \2)
- if ($ae.pos == 58) rline $target %_ae:lin $regsubex(%_ae:txt,/(*UTF8)(?<=^@)(.)(.+)$/,\1 $+ $strip(\2))
- }
- else {
- var %_ae:tmp $ae.pos, %_ae:nln $replacex(%_ae:lin %_ae:dir,3 -1,18,18 +1,3,%_ae:lin %_ae:dir,%_ae:nxt), %_ae:new $line($target,%_ae:nln)
- rline $target %_ae:lin $strip(%_ae:txt)
- rline $target %_ae:nln $remove($puttok($regsubex(%_ae:new,/(*UTF8)(.)/g,\t$chr(32)), $+ $mid(%_ae:new,%_ae:tmp,1) $+ ,%_ae:tmp,32),$chr(32))
- }
- }
- }
- on ^$*:HOTLINK:/(*UTF8)(New|Load|Save|Playtest|Menu)/:@ASCII_Game_Editor: {
- if ($mouse.key & 1) {
- if ($regml(1) == Menu) ag.win -m
- if ($regml(1) == New) && ($input(All unsaved changes will be lost. Continue?,,ASCII Game)) ae.win
- if ($regml(1) == Load) && ($input(All unsaved changes will be lost. Continue?,,ASCII Game)) {
- var %_ae:ldf $qt($$sfile(ASCII_Game_Custom\*.ascg))
- clear $target
- aline $target $chr(160) $+ New - Load - Save - Playtest $str($chr(160),22) Menu
- ax.fac $target
- filter -fw %_ae:ldf $target
- rline $target 3 $regsubex($line($target,3),/(*UTF8)(?<=^@)(.)/,\t)
- ax.fac $target
- }
- if ($regml(1) == Save) {
- var %_ae:itr 3, %_ae:sft $$sfile(ASCII_Game_Custom\*.ascg,Save As...,Save), %_ae:sfl $qt(%_ae:sft $+ $iif(!$regex(%_ae:sft,/(\.ascg$)/i),.ascg))
- while (%_ae:itr <= 18) {
- write $iif(%_ae:itr == 3,-c) %_ae:sfl $strip($line($target,%_ae:itr))
- inc %_ae:itr
- }
- }
- if ($regml(1) == Playtest) {
- var -g %_ax:you $iif($input(Yes for p1 $+ $chr(44) No for p2,y),!,&), %_ax:oth $iif($!,&,!)
- var %_ae:itr 1
- if ($hget(asc.lvl)) hfree asc.lvl
- while (%_ae:itr <= 19) {
- hadd -m asc.lvl %_ae:itr $strip($line(@ASCII_Game_Editor,%_ae:itr))
- inc %_ae:itr
- }
- ag.win -p
- ag.msg
- }
- }
- }
- ; ---
- ; Socket
- alias rlinex {
- rline $iif($1 == -l,$2-,$1-)
- if (%_ax:opp) && ($1 != -l) {
- sockmark -nt ASCII_Game $1-
- sockudp -knt ASCII_Game 194 %_ax:oth 194 $1-
- }
- }
- alias as.info return $iif($prop == ip,$gettok($right($gettok($1,3,124),-1),1,33),$gettok($1,1,124))
- on *:SOCKOPEN:ASCII_Game: {
- if (!$window(@AG_Debug)) window -e @AG_Debug
- sockwrite -n $sockname NICK $+($left($remove($me,$(|)),4),|AG|,$replace($ip,.,_))
- sockwrite -n $sockname USER $me 8 * :Meta's ASCII Game Player
- }
- on *:SOCKREAD:ASCII_Game: {
- var %sock | sockread %sock | tokenize 32 %sock
- echo @AG_Debug $1 >> $2-
- if ($1 == PING) sockwrite -nt $sockname PONG $2
- if ($2 == 001) sockwrite -nt $sockname JOIN #ASCII_Game
- if ($2 == JOIN) && (!$hget(AG_PLRS,$as.info($1))) {
- if (|AG| isin $1) hadd -m AG_PLRS $as.info($1) $as.info($1).ip
- var %i 1
- while ($window(@ASCII_Game*,%i)) {
- if (|AG| isin $1) aline -l $window(@ASCII_Game*,%i) $as.info($1)
- inc %i
- }
- }
- if ($2 == 353) {
- ;tokenize
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement