commit c6b18a44ca7143b77c6c7b3a2e74f50dba5f5e89 Author: Adam Williams Date: Sat Aug 4 02:36:59 2012 -0700 first commit maybe diff --git a/Aardwolf-chats b/Aardwolf-chats new file mode 100644 index 0000000..204a3ce --- /dev/null +++ b/Aardwolf-chats @@ -0,0 +1 @@ +This file intentionally blank. It stores communications once connected. diff --git a/README b/README new file mode 100644 index 0000000..fb2a3d4 --- /dev/null +++ b/README @@ -0,0 +1,74 @@ +Intro: +------ +This project compliments of the Aardwolf character Cheezburger. +This is a group of settings intended to be comparable to the base MUSHClient Aardwolf settings. +It is intended for Linux users or those with access to a machine capable of running Tintin++. +It should run under Wintin++ however performance may vary. + +Getting Tintin++: +----------------- +These settings (mainly the mapping) require Tintin++ versin 2.00.7 or better. +Check out http://tintin.sourceforge.net/download.php for the latest versions. + +Getting Started: +---------------- +edit setup.tin +start tintin with setup.tin (Ex. /usr/games/tt++ -G setup.tin) + +Tintin Mapping: +--------------- +#map create 60000 - to initialize a new tintin map +#map flag nofollow on - to stop tintin trying to create rooms based on movement + -all the room creation is done via gmcp +#map goto 1 to goto the first vnum of the tintin map +#var mapping 1 to create the map as you go + -should be on in setup.tin by default + -a tick timer is created to save the map every 300seconds + -a session disconnect event is set to save a backup copy of the map + +Capturing & Logging: +-------------------- +The ascii map: + 'tags map on' to start capturing the map to the file 'minimap' + 'tags mapnames on' to send the room name with the map + 'tags mapexits on' to send the room exits with the map + Toggle 'shortmap' command until it says "You will now see blank lines on the map." + +Channels: + Most channels are captured to the file 'Aardwolf-chats' by GMCP + To configure which ones are shown in the main window: + 'tags channels on' to show tags around them + -adjust general.tin list to change which channels are gagged + +Mobs/Players in the room: + 'tags roomchars on' to start capturing people/mobs to the file 'chars' + +Group Stats: + Group stat logging is handled by gmcp.tt and logs to 'group' file once you are in a group + +Custom Prompt +------------- +Tintin++ should automatically split off the bottom 4 lines of your terminal for the custom prompt. +The bottom line will be the input command line, next up is a dividing line, then a vitals bar, +then a bar with a few other things I'll explain in detail. + +1. Time till next tick -- self explanatory +2. Quest timer -- this will be set to "quest_timer" until you take a quest or type quest info. +3. Exp till next level -- self exlanatory +4. Thirst/Hunger -- T/H:[ thirst level / hunger level ] +5. Alignment -- Positive or negative alignment + + +Optional Settings: +------------------ +read in optional settings as required + -affcaps.tin Will capture and gag skill/spell affects, add colors, and log to 'affects' file + -paths.tin Useful demonstration aliases for using the tintin map once one is generated by the user + -pathwalk.tin Provides an alternative to #path run, it will stop for aggro mobs and continue on death + +Displaying: +----------- +Setup panes in tmux or multiple terminal windows and use the tail command (ex. tail -fs .1 minimap) +on whichever log file you wish. +*NOTE* For the minimap file you will need to set the size of the window to match the output from the mud. +For a typical 10pt font a size of 30columns by 21rows should be close. diff --git a/Todo b/Todo new file mode 100644 index 0000000..f849ac1 --- /dev/null +++ b/Todo @@ -0,0 +1,4 @@ +Add more comments to the settings. +Add more details on how the settings work. +Clean up the formatting of the settings. +Add revised lvladd aliases and fix afind,vfind,rfind,mfind,hfind diff --git a/active_log.raw b/active_log.raw new file mode 100644 index 0000000..f610ddf --- /dev/null +++ b/active_log.raw @@ -0,0 +1,38 @@ +#OK: 8 ACTIONS LOADED. +#OK: 13 ALIASES LOADED. +#OK: 5 CLASSES LOADED. +#OK: 17 EVENTS LOADED. +#OK: 1 MACRO LOADED. +#OK: 1 SUBSTITUTE LOADED. +#OK: 3 TICKERS LOADED. +#OK: 67 VARIABLES LOADED. +############################################################################# +##[ --- Welcome to Aardwolf MUD --- ]########################## +##[ ]############ /" ######### +##[ Players Currently Online: 429 ]######## _-`"""', ####### +##[ ]##### _-" ) ###### +##[ Game Last Rebooted on 21 Feb 10:20:48 ]### _-" | ###### +################################################### _-" ; ####### +######################################### __---___-" | ######## +###################################### _" ,, ; `,, #### +#################################### _-" ;'' | ,' ; #### +################################## _" ' `"' ; #### +########################### __---; ,' ###### +######################## __"" ___ ,' ######## +#################### _-"" -"" _ ,' ########## +################### `-_ _ ; ############ +##################### ""----""" ; ; ############# +####################### / ; ; ############## +##################### / ; ; ############### +################### / ` ; ################ +################# / ; ################# +----------------------------------------------------------------------------- + Enter your character name or type 'NEW' to create a new character +----------------------------------------------------------------------------- +What be thy name, adventurer? Please enter a character name, 'NEW' to create a new player or 'Q' to disconnect. +What be thy name, adventurer? Please enter a character name, 'NEW' to create a new player or 'Q' to disconnect. +What be thy name, adventurer? quit +That name is not usable. Please try another. +Name: #end +#MAP: This session has no map data. Use #map create or #map read to create one. +#SESSION 'aard' DIED. diff --git a/affcap.tin b/affcap.tin new file mode 100644 index 0000000..53766d0 --- /dev/null +++ b/affcap.tin @@ -0,0 +1,59 @@ +#class affcap kill +#class affcap open + +/* + This script will capture spell output, gag it, and put it in a file called 'affects' in your $dir. + Todo: have it sort the list and display in descending order from longest duration to shortest +*/ + +#action {^You are affected by the following:$} +{ + #show <179>Capturing Affects List<099>; + #line gag; + #list affects clear; + #var aff_count 1; + #line log {$dir/affects} {<179>--Affects--<099>} +} + +#action {^Spell : %* \(%d:%d\)$} +{ + #line gag; + #list affects[$aff_count] add {%1;00;%2;%3}; + #math aff_count {$aff_count + 1} +} + +#action {^Spell : %* \(%d:%d:%d\)$} +{ + #line gag; + #list affects[$aff_count] add {%1;%2;%3;%4}; + #math aff_count {$aff_count + 1} +} + +#action {^You are affected by %d skills and %d spells.$} +{ + #foreach $affects[] {x} + { + #if {$affects[$x][2]==0 && $affects[$x][3]<2} + { + #line log {$dir/affects} {<119>$affects[$x][2]:$affects[$x][3]:$affects[$x][4] : $affects[$x][1]<099>} + }; + #elseif {$affects[$x][2]==0 && $affects[$x][3]<5} + { + #line log {$dir/affects} {<139>$affects[$x][2]:$affects[$x][3]:$affects[$x][4] : $affects[$x][1]<099>} + }; + #elseif {$affects[$x][2]==0 && $affects[$x][3]<10} + { + #line log {$dir/affects} {<169>$affects[$x][2]:$affects[$x][3]:$affects[$x][4] : $affects[$x][1]<099>} + }; + #else + { + #line log {$dir/affects} {<029>$affects[$x][2]:$affects[$x][3]:$affects[$x][4] : $affects[$x][1]<099>} + } + + + }; + #line log {$dir/affects} {\nSkills <029>%1 <099>Spells <029>%2<099>\n}; +} + + +#class affcap close diff --git a/affects b/affects new file mode 100644 index 0000000..6adad44 --- /dev/null +++ b/affects @@ -0,0 +1 @@ +This file left intentionally blank. It will store affects list once connected. diff --git a/chars b/chars new file mode 100644 index 0000000..028e812 --- /dev/null +++ b/chars @@ -0,0 +1 @@ +This file left intentionally blank. Will store characters and mobs in room once connected. diff --git a/general.tin b/general.tin new file mode 100644 index 0000000..759f47a --- /dev/null +++ b/general.tin @@ -0,0 +1,78 @@ +#NOP ####################### +#NOP ### Channel Gagging ### +#NOP ####################### +#NOP /* All channels turned on will be logged to a file. */ +#NOP /* This section is just for the display in Tintin. */ + +#NOP /* Select which channels to gag from Tintin */ +#ACTION {^\{chan ch={answer|question|wangrp|gossip|barter|auction|mxit|nobletalk|sports|gclan}\}%2$} {#line gag} + +#NOP /* Remove the tags from stuff we don't gag */ +#SUB {\{chan ch=%*\}} {} + +#NOP ####################### +#NOP ### Door Opening & Mapping ### +#NOP ####################### + +#NOP /* Using these aliases when creating the exits for rooms will enable door opening */ +#ALIAS {op} {#map exit {%0} command {#send {op %0};%0};#send {open %0}} +#alias {ope} {op e;e;close w} +#alias {opw} {op w;w;close e} +#alias {opn} {op n;n;close s} +#alias {ops} {op s;s;close n} +#alias {opu} {op u;u;close d} +#alias {opd} {op d;d;close u} + +#NOP ####################### +#nop ### Misc Aliases ### +#NOP ####################### +/* Example aliases, uncomment to use */ +/* +#alias cl {close} +#alias df {drink fountain} +#alias gac {get all corpse} +#alias h {qq '$healpot'} +#alias hs {cast 'psychic healing'} +#alias j {scan} +#alias lic {look in corpse} +#alias m meditate +#alias pe {qq 'light allegiance'} +#alias qq {get %0 from $potbag;quaff %0} +#alias wr {$word} +#alias wc {wr;#delay 1 {qc}} +*/ + +#NOP ####################### +#nop ### Misc Actions ### +#NOP ####################### +#ACTION {The quest will start in} {#bell} + +#macro {\e[11~} {!} + +#CONFIG {256 COLORS} {ON} +#CONFIG {AUTO TAB} {5000} +#CONFIG {BUFFER SIZE} {20000} +#CONFIG {CHARSET} {ASCII} +#CONFIG {COMMAND COLOR} {<099>} +#CONFIG {COMMAND ECHO} {ON} +#CONFIG {CONNECT RETRY} {15} +#CONFIG {HISTORY SIZE} {9999} +#CONFIG {LOG} {RAW} +#CONFIG {PACKET PATCH} {0.00} +#CONFIG {REPEAT CHAR} {!} +#CONFIG {REPEAT ENTER} {ON} +#CONFIG {SCROLL LOCK} {ON} +#CONFIG {SPEEDWALK} {ON} +#CONFIG {TINTIN CHAR} {#} +#CONFIG {VERBATIM} {OFF} +#CONFIG {VERBATIM CHAR} {\} +#CONFIG {VERBOSE} {OFF} +#CONFIG {WORDWRAP} {ON} +#PATHDIR {d} {u} {32} +#PATHDIR {e} {w} {2} +#PATHDIR {n} {s} {1} +#PATHDIR {s} {n} {4} +#PATHDIR {u} {d} {16} +#PATHDIR {w} {e} {8} +#TICKER {mapupdate} {#map write {$dir/map-all.tt}} {300} +#TICKER {varupdate} {#class variables write {$dir/variables.tin}} {300} diff --git a/gmcp.tin b/gmcp.tin new file mode 100644 index 0000000..59fbb06 --- /dev/null +++ b/gmcp.tin @@ -0,0 +1,309 @@ +#class gmcp kill; +#CLASS {gmcp} OPEN + + +#format IAC %a 255 +#format DONT %a 254 +#format DO %a 253 +#format WONT %a 252 +#format WILL %a 251 +#format SB %a 250 +#format SE %a 240 + +#format GMCP %a 201 + +#ALIAS {debug {on|off}} +{ + #if {"%1" == "on"} + { + #variable debug 1 + }; + #else + { + #variable debug 0 + }; + #nop; +} +{5} + +#EVENT {IAC SB GMCP char.maxstats IAC SE} +{ + #variable GMCP[CHAR][MAXSTATS] {%0}; + #if {$debug} + { + #showme %1 + }; + #nop; +} + +#event {IAC SB GMCP group IAC SE} +{ + #var GMCP[GROUP] {%0}; + #line log {$dir/group} {\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n}; + #format {name_line} {}; + #format {leader_line} {} {light cyan} {light white}; + #foreach {$GMCP[GROUP][members][]} {gmcp_groupie} + { + #if {"gmcp_groupie_list" != ""} + { + #var {pregroup} {$gmcp_groupie_list\n} + } + { + #var pregroup {} + }; + #math {hp_percent_tmp} {1.0*($GMCP[GROUP][members][$gmcp_groupie][info][hp]/$GMCP[GROUP][members][$gmcp_groupie][info][mhp])*100}; + #math {mn_percent_tmp} {1.0*($GMCP[GROUP][members][$gmcp_groupie][info][mn]/$GMCP[GROUP][members][$gmcp_groupie][info][mmn])*100}; + #math {mv_percent_tmp} {1.0*($GMCP[GROUP][members][$gmcp_groupie][info][mv]/$GMCP[GROUP][members][$gmcp_groupie][info][mmv])*100}; + #format {gmcp_groupie_list} + { + $pregroup + %c$GMCP[GROUP][members][$gmcp_groupie][name] %cLevel%c: %c$GMCP[GROUP][members][$gmcp_groupie][info][lvl]\n + %cHP%c:%c${hp_percent_tmp} %cMN%c:%c${mn_percent_tmp} %cMV%c:%c${mv_percent_tmp}\n + %cTNL%c:%c$GMCP[GROUP][members][$gmcp_groupie][info][tnl] %cAlign%c:%c$GMCP[GROUP][members][$gmcp_groupie][info][align] QT: $GMCP[GROUP][members][$gmcp_groupie][info][qt] + } {light red} {cyan} {light black} {blue} {green} {light black} {light green} {blue} {light black} {light blue} {yellow} {light black} {light yellow} {light white} {light black} {green} {light white} {light black} {light cyan} + }; + #line log {$dir/group} {$name_line\n\n$leader_line\n\n\n$gmcp_groupie_list}; + #var gmcp_groupie_list {}; +} + +#EVENT {IAC SB GMCP char.status IAC SE} +{ + #variable GMCP[CHAR][STATUS] {%0}; + #if {$debug} + { + #showme %1 + }; + ||gmcp_prompt_statmon; + #nop; +} + +#EVENT {IAC SB GMCP char.vitals IAC SE} +{ + #variable GMCP[CHAR][VITALS] {%0}; + #if {$debug} + { + #showme %1 + }; + ||gmcp_prompt_statmon; + #nop; +} + +#EVENT {IAC SB GMCP char.worth IAC SE} +{ + #variable GMCP[CHAR][WORTH] {%0}; + #if {$debug} + { + #showme %1 + }; + #nop +} + +#alias {afk {on|off}} +{ + #if {"%1" == "on"} + { + #var afk 1; + #var prewarning 0; + } + { + #var afk 0; + #var tellsent {}; + } +} + + + +#EVENT {IAC SB GMCP comm.channel IAC SE} +{ + #var {GMCP[COMM][CHATLOGGER]} {%0}; + #var {chanrec} {$GMCP[COMM][CHATLOGGER][chan]}; + #var {player} {$GMCP[COMM][CHATLOGGER][player]}; + #if {"$GMCP[COMM][CHATLOGGER][chan]" != "mobsay"} + { + #line log {$dir/Aardwolf-chats} {$GMCP[COMM][CHATLOGGER][msg]}; + }; + #if {$debug} + { + #showme %1 + }; + #if {"$GMCP[COMM][CHATLOGGER][chan]" == "tell"} + { + #if {$afk} + { + #if {!$tellsent[$GMCP[COMM][CHATLOGGER][player]]} + { + #if {"$GMCP[COMM][CHATLOGGER][player]" != "Cheezburger"} + { + #var {tellsent[$GMCP[COMM][CHATLOGGER][player]]} {1}; + reply Sorry, but I'm afk: @Y[@R$afk_reason@Y]@c; + } + } + } + }; +} + + +#EVENT {IAC SB GMCP char.stats IAC SE} +{ + #variable GMCP[CHAR][STATS] {%0}; + #if {$debug} + { + #showme %1 + }; + #nop; +} + +#EVENT {IAC SB GMCP comm.repop IAC SE} +{ + #var {GMCP[COMM][REPOP]} {%0}; + #format {curr_time} {%T}; + #if {$repoptrack} + { + #if {$repop} + { + #format {last_repop} {%T}; + } + }; + #format {time} {%t} {%H:%M:%S}; + $repchan @WRepop @w= @r$GMCP[COMM][REPOP][zone]@w @@ @r$time; + #var time {}; + #nop; +} + +#alias {^repopwatch {on|off}$} +{ + #if {"%1" == on"} + { + #var repoptrack 1; + } + { + #var repoptrack 0; + } +} + +#alias {^check repop$} +{ + #format curr_time {%T}; + #math {time_till_pop} {($last_repop+606)-$curr_time}; + #send {$repchan @CNext repop@w: @R$time_till_pop @Wseconds.}; +}; + +#EVENT {IAC SB GMCP char.base IAC SE} +{ + #variable GMCP[CHAR][BASE] {%0}; + #nop; +} + +#event {IAC SB GMCP room.info IAC SE} +{ + #var GMCP[ROOM][INFO] {%0}; + #if {$mapping} + { + #if {"$GMCP[ROOM][INFO][details]" != "%*maze%*" && $GMCP[ROOM][INFO][num] != -1} + { + #map goto {$GMCP[ROOM][INFO][num]} {dig}; + #map get roomname {mapresult}; + #if {"$mapresult" == "{\d+}"} + { + #map set roomname $GMCP[ROOM][INFO][name]; + #map set roomvnum $GMCP[ROOM][INFO][num]; + #map set roomarea $GMCP[ROOM][INFO][zone]; + #map set roomterrain $GMCP[ROOM][INFO][terrain]; + #map set roomcolor <178> + }; + + #foreach {$GMCP[ROOM][INFO][exits][]} {exit} + { + #map get {roomexit} {mapresult}; + + #if {&mapresult[$exit] == 0} + { + #map get {roomvnum} {mapresult} {$GMCP[ROOM][INFO][exits][$exit]}; + + #map dig {$exit} {$GMCP[ROOM][INFO][exits][$exit]}; + + #if {$mapresult == 0} + { + #map set {roomcolor} {} {$GMCP[ROOM][INFO][exits][$exit]} + } + } + } + }; + }; + #if {$GMCP[ROOM][INFO][num] != -1} + { + #MAP GOTO {$GMCP[ROOM][INFO][num]} + } +} + +#event {IAC SB GMCP comm.tick IAC SE}{#var ticks 30}; +#var repop 0; +#var ticks 30; +#tic TICKING +{ + #if {$ticks > 0} + { + #math ticks {$ticks - 1}; + }; + + #if {$ticks < 10} + {#show {<139> $ticks<099> secs to tick QUEST<099>: <139>$timer} 3} + {#show {<139> $ticks<099> secs to tick QUEST<099>: <139>$timer} 3} +} +{1}; +#EVENT {IAC WILL GMCP} +{ + #send {$IAC$DO$GMCP\}; + #send {$IAC$SB$GMCP Core.Hello { "client": "$CLIENT_NAME", "version": "$CLIENT_VERSION" } $IAC$SE\}; + #send {$IAC$SB$GMCP Core.Supports.Set [ "Room 1", "Char 1", "Core 1", "Comm 1", "Debug 1", "Group 1" ] $IAC$SE\} +} + +#EVENT {MAP ENTER ROOM} +{ + #if $mapping + { + #map get roomarea oldarea; + #if {"$oldarea"==""} + { + #map set roomarea $GMCP[ROOM][INFO][zone] + }; + #map get roomterrain oldterrain; + #if {"$oldterrain"==""} + { + #map set roomterrain $GMCP[ROOM][INFO][terrain] + }; + #map get roomname oldname; + #if {"$oldname"==""} + { + #map set roomname $GMCP[ROOM][INFO][name] + } + + } +} + + +#EVENT {PROGRAM START} +{ + #variable CLIENT_NAME %0; + #variable CLIENT_VERSION %1; +} + +#EVENT {SESSION DISCONNECTED} +{ + #map write {$dir/map-discon.txt}; + #history write {$dir/history-discon.txt}; + #class variables write {$dir/variables.tin} +} + +#EVENT {SESSION CONNECTED} +{ + $name; + $password; + #unvar name; + #unvar password; + #history read {$dir/history-discon.txt} +} + +protocol gmcp sendchar + +#CLASS {gmcp} CLOSE diff --git a/group b/group new file mode 100644 index 0000000..1027837 --- /dev/null +++ b/group @@ -0,0 +1 @@ +This file intentionally blank. It stores group data once connected. diff --git a/history-discon.txt b/history-discon.txt new file mode 100644 index 0000000..caff790 --- /dev/null +++ b/history-discon.txt @@ -0,0 +1,3 @@ + +quit +#end diff --git a/map.tin b/map.tin new file mode 100644 index 0000000..4d384d6 --- /dev/null +++ b/map.tin @@ -0,0 +1,77 @@ +#CLASS {map} KILL +#CLASS {map} OPEN + +#ACTION {^$} +{ + #line gag; + #variable getmap 0; + #if {$autoscan} + { + scan; + }; +} +{1} + +#alias {autoscan} +{ + #IF {"%0" != ""} + { + #show <069>Reminder: autoscan doesn't take arguments.<099> + }; + #if {$autoscan == 0} + { + #var autoscan 1; + #show <069>Autoscan: <129>ON<099> + }; + #ELSEIF {$autoscan == 1} + { + #var autoscan 0; + #show <069>Autoscan: <099>Off + }; + #ELSE + { + #show <069>Something went wrong with the autoscan alias in map.tt<099> + } +} + +#ACTION {^$} +{ + #variable getmap 1; + #line gag +} +{1} + +#action {^\{roomchars\}} +{ + #var getchar 1; + #line gag; + #line log {$dir/chars} {------<179>[ $GMCP[ROOM][INFO][name] ]<099>} +} + +#action {^\{/roomchars\}} +{ + #var getchar 0; + #line gag; + #line log {$dir/chars} {\n} +} + +#ACTION {~%0} +{ + #if {$getmap} + { + #line log {$dir/minimap} {%0}; + #if {!$showmap} + { + #line gag + } + }; + #elseif {$getchar} + { + #line log {$dir/chars} {%0} + } + +} +{9999} + + +#CLASS {map} CLOSE diff --git a/map.txt b/map.txt new file mode 100644 index 0000000..4067d93 --- /dev/null +++ b/map.txt @@ -0,0 +1 @@ +This file will store tintin map once connected. diff --git a/minimap b/minimap new file mode 100644 index 0000000..5720117 --- /dev/null +++ b/minimap @@ -0,0 +1 @@ +This file left intentionally blank. Will store ascii map once connected. diff --git a/paths.tin b/paths.tin new file mode 100644 index 0000000..adf76da --- /dev/null +++ b/paths.tin @@ -0,0 +1,272 @@ +#class paths kill +#class paths open + +#NOP ############################################################################################ +#NOP ### Portals variable, used by the speedwalking aliases (afind, rfind, vfind) +#NOP ############################################################################################ + +#var {portals} +{ + {1}{{zone}{aylor}{name}{garbage}{vnum}{32418}{cmd}{get garbage from $portalbag;hold garbage;enter;hold wad;put garbage in $portalbag}} + {2}{{zone}{petstore}{name}{collar}{vnum}{995}{cmd}{get collar from $portalbag;hold collar;enter;hold wad;put collar in $portalbag}} + {3}{{zone}{amusement}{name}{amulet}{vnum}{29364}{cmd}{get amulet from $portalbag;hold amulet;enter;hold wad;put amulet in $portalbag}} +} + +#NOP ########################################################################### +#NOP ### Adding/Clearing Portal List +#NOP ########################################################################### + +#alias addportals +{ + #foreach {$portals[]} {x} + { + #map dig {$portals[$x][cmd]} {$portals[$x][vnum]} + } +} + +#alias clearportals +{ + #foreach {$portals[]} {y} + { + #map unlink {$portals[$y][cmd]} + } + +} + +#alias lvladdportals +{ + #foreach {$portals[]} {x} + { + #IF {$tier_level>=$portals[$x][lvl]} + { + #map dig {$portals[$x][cmd]} {$portals[$x][vnum]} + } + } +} + +#alias lvlclearportals +{ + #foreach {$portals[]} {y} + { + #IF {$tier_level>=$portals[$y][lvl]} + { + #map unlink {$portals[$y][cmd]} + } + } + +} + + +#NOP ########################################################################### +#NOP ### Advanced speedwalking aliases afind, rfind, vfind (area, room, vnum) +#NOP ########################################################################### + +#ALIAS {afind} +{ + #IF "%0"=="" + { + #show <169>Syntax:<099> af + }; + #else + { + #unvar path; + #if {"$GMCP[ROOM][INFO][zone]"=="%1"} {#show <169>Already at <099>%1.}; + #else + { + #show <169>Area Find:<099> %1; + #var checkportal {}; + #map get roomnote checkportal; + #if {"$checkportal"!="noportal"} + { + #var portalsused 1; + lvladdportals; + #map find {} {} {} {%1}; + }; + #ELSE + { + #map find {} {} {} {%1} + }; + #if {$portalsused} + { + #var portalsused 0; + lvlclearportals + }; + #path run; + } + } +} + + +#ALIAS {vfind} +{ + #IF "%0"=="" + { + #show <169>Syntax:<099> vf + }; + #else + { + #unvar path; + #if {"$GMCP[ROOM][INFO][num]"=="%1"} {#show <169>Already at <099>%1.}; + #else + { + #show <169>Vnum Find:<099> %1; + #var checkportal {}; + #map get roomnote checkportal; + #if {"$checkportal"!="noportal"} + { + #var portalsused 1; + lvladdportals; + #map find {%1} + }; + #else + { + #map find {%1} + }; + #if {$portalsused} + { + #var portalsused 0; + lvlclearportals + }; + #path run; + } + } +} + + +#ALIAS {rfind} +{ + #IF "%0"=="" + { + #show <169>Syntax:<099> rf + }; + #else + { + #show <169>Room Find:<099> %0; + #var checkportal {}; + #map get roomnote checkportal; + #if {"$checkportal"!="noportal"} + { + #var portalsused 1; + lvladdportals; + #map find {%0} + }; + #else + { + #map find {%0} + }; + #if {$portalsused} + { + #var portalsused 0; + lvlclearportals; + }; + #path run; + } + +} + + +#NOP ########################################################################### +#NOP ### Mfind alias, will only find the path and show it to you, not run it +#NOP ########################################################################### + +#ALIAS mfind +{ + lvladdportals; + #map find %0; + #path show; + lvlclearportals +} + + +#NOP ########################################################################### +#NOP ### Hfind alias +#NOP ### This let's you use a very loose string to find a path to the closest +#NOP ### matching room in the current area. +#NOP ########################################################################### + +#ALIAS hfind {#map find {%i%*%0%*} {} {} {$GMCP[ROOM][INFO][zone]};#path run} + + + +#NOP ########################################################################### +#NOP ### Advanced runto alias "go" +#NOP ########################################################################### + +#ALIAS {go} +{ + #if {$GMCP[ROOM][INFO][num]==32418} + { + #if "%0"=="" + { + #show Already at Recall + }; + #else + { + rt %0 + } + }; + #elseif {$GMCP[ROOM][INFO][num]==26151} + { + #if "%0"=="" + { + d + }; + #else + { + d; + rt %0 + } + }; + #elseif {$GMCP[ROOM][INFO][num]==26152} + { + #if "%0"=="" + { + #send {enter elevator}; + d + }; + #else + { + #send {enter elevator}; + d; + rt %0 + } + }; + #elseif {"$GMCP[ROOM][INFO][zone]"=="aylor"} + { + #if "%0"=="" + { + rt recall + }; + #else + { + rt recall; + rt %0 + } + + }; + #else + { + #if "%0"=="" + { + vf 32418 + }; + #else + { + vf 32418; + rt %0 + } + } +} + + +#NOP ########################################################################### +#NOP ### Abbreviated aliases for afind, hfind, mfind, rfind, vfind +#NOP ########################################################################### + +#ALIAS af {afind} +#ALIAS hf {hfind} +#ALIAS mf {mfind} +#ALIAS rf {rfind} +#ALIAS vf {vfind} + +#class paths close diff --git a/pathwalk.tin b/pathwalk.tin new file mode 100644 index 0000000..0c7992a --- /dev/null +++ b/pathwalk.tin @@ -0,0 +1,109 @@ +#CLASS pathwalk kill +#CLASS pathwalk open + +#NOP Class Name: pathwalk +#NOP File Name: pathwalk.tin +#NOP Description: +#NOP This simple script will utilize a variable (pos_number) set from GMCP to check if you are fighting before +#NOP walking the next node of a path. If the 'pos_number' variable is '8', it will create a ticker to determine +#NOP when you are no longer in a fight and resume walking the path. It also allows you to send commands while +#NOP walking a path as opposed to #PATH RUN. +#NOP Usage: +#NOP 1. Store a path somehow (#path load , #map find ) +#NOP 2. Type 'rp' +#NOP 3. Settings should clear on end of path, use 'rpof' if all else fails. +#NOP +#NOP Setting 'pos_number' variable from GMCP: +#NOP I would highly recommend using more complete gmcp data capturing script(s) +#NOP such as these: +#NOP +#NOP http://theixle.dyndns.org/aardtin/aardwolf+tintin/gmcp.tin +#NOP http://theixle.dyndns.org/aardtin/aardwolf+tintin/zzGMCP_to_stat.tin +#NOP +#NOP Otherwise, you will need to do something like this: +#NOP +#NOP #EVENT {IAC SB GMCP char.status IAC SE} +#NOP { +#NOP #variable GMCP[CHAR][STATUS] {%0}; +#NOP #variable pos_number {$GMCP[CHAR][STATUS][state]} +#NOP } +#NOP +#NOP Known Bugs +#NOP Problem with pathwalking after using some portal objects during the speedwalk. + + + +#NOP This will be the main alias for initiating a path run(walk) +#ALIAS rp +{ + #NOP Setting 'mapping' variable to 0 is required if using a gmcp mapper script to prevent double MAP EXIT ROOM events ; + #VARIABLE {mapping} {0}; + #EVENT {MAP EXIT ROOM} + { + #NOP Check to see if we're fighting ; + #IF {$pos_number == 8} + { + #NOP If fighting, create a ticker to watch for not fighting state, and display a message. ; + #SHOW <179>[<119>Speedwalk<179>]<119>Fighting - creating ticker.<099>; + #TICKER {path_wait} + { + #NOP This is important: You MUST have something that sets this variable from gmcp. ; + #IF {$pos_number != 8} + { + #NOP When we're done fighting, remove the ticker and get back to the path. ; + #UNTICKER {path_wait}; + #PATH walk + }; + #ELSE + { + #NOP Let's display something while in a fight just for confirmation. ; + #SHOW <179>[<119>Speedwalk<179>]<129>waiting... + } + } {.5} + }; + #ELSE + { + #NOP If we're not fighting, just send the next path node and display something nice. ; + #SHOW <179>[<119>Speedwalk<179>]<099>; + #PATH walk + } + }; + #NOP This will handle cleaning everything up on normal termination of a path. ; + #event {END OF PATH} + { + #SHOW <179>[<119>Speedwalk<179>]<129>Done.<099>; + #VARIABLE mapping 1; + #UNEVENT {MAP EXIT ROOM}; + #UNEVENT {END OF PATH}; + }; + #NOP Oops, something must be wrong, let's get out of the path and clean up. ; + #ACTION {^Alas, you cannot go that way.} + { + #VARIABLE mapping 1; + #UNEVENT {MAP EXIT ROOM}; + #UNEVENT {END OF PATH}; + #UNACTION {^Alas, you cannot go that way.} + + }; + #NOP Hrm, somehow the MAP EXIT ROOM event is still on but we have no nodes left in the path. ; + #ACTION {#END OF PATH} + { + #NOP As before, setting the 'mapping' variable is only necessary if you use a gmcp mapping script that manually moves you in the tintin map. ; + #VARIABLE mapping 1; + #UNEVENT {MAP EXIT ROOM}; + #UNEVENT {END OF PATH}; + #UNACTION {#END OF PATH} + }; + #NOP Let's make the rp alias start the path too. ; + #PATH walk + +} + +#NOP If for some reason you need to clear the speedwalk, use this +#ALIAS {rpof} +{ + #PATH load {#nop}; + #PATH walk +} + +#CLASS pathwalk close diff --git a/pmuxit b/pmuxit new file mode 100755 index 0000000..31f358f --- /dev/null +++ b/pmuxit @@ -0,0 +1,7 @@ +#!/bin/bash +tmux kill-session -t aardwolf +tmux new-session -d -s aardwolf -x 137 -y 31 'tail -fs .1 Aardwolf-chats' +tmux splitw -v -l 21 'tt++ -G setup.tin;bash -i' +tmux splitw -h -l 30 'tail -fs .1 minimap' +tmux selectp -t 1 +tmux attach -t aardwolf diff --git a/quest.tin b/quest.tin new file mode 100644 index 0000000..41d1449 --- /dev/null +++ b/quest.tin @@ -0,0 +1,89 @@ +#class quest kill +#class quest open + + +#NOP ############################ +#NOP ### GMCP Quest Handler +#NOP ############################ + +#EVENT {IAC SB GMCP comm.quest IAC SE} +{ + #var {GMCP[COMM][QUEST]} {%0}; + #if {"$GMCP[COMM][QUEST][action]" == "start"} + { + $repchan @Y[@RQuest Requested@Y]@w: @YTarget@w=@R$GMCP[COMM][QUEST][targ]@w. @YRoom@w=@R$GMCP[COMM][QUEST][room]@w. @YArea@w=@R$GMCP[COMM][QUEST][area]@w.; + #var quest_timer {ACTIVE<099>}; + #format {quest[start]} {%T}; + }; + #elseif {"$GMCP[COMM][QUEST][action]" == "fail"} + { + $repchan @W\{-=@RQuest Failed@W=-\}@w; + #var quest {}; + #var temp {}; + #var $GMCP[COMM][QUEST] {}; + #var action {}; + }; + #elseif {"$GMCP[COMM][QUEST][action]" == "comp"} + { + #format {quest[end]} {%T}; + #math {quest[time]} {$quest[end] - $quest[start]}; + #var quest_timer 30; + #tic quest_timer + { + #math quest_timer {$quest_timer - 1}; + #if $quest_timer==0 {#untic quest_timer;#var quest_timer READY<099>}; + } {60} ; + #if {$GMCP[COMM][QUEST][pracs] != 0} + { + #if {"$quest[bonus]" != ""} + { + #var quest[bonus] {$quest[bonus]@w, @R$GMCP[COMM][QUEST][pracs] prac}; + } + { + #var {quest[bonus]} { @Y[@WBonus: @R$GMCP[COMM][QUEST][pracs] prac}; + }; + #var quest[bonus] {$quest[bonus]@Y]@w}; + }; + #if {$GMCP[COMM][QUEST][trains] != 0} + { + #if {"$quest[bonus]" != ""} + { + #var quest[bonus] {$quest[bonus]@w, @R$GMCP[COMM][QUEST][trains] train}; + } + { + #var {quest[bonus]} { @Y[@WBonus: @R$GMCP[COMM][QUEST][trains] train}; + }; + #var quest[bonus] {$quest[bonus]@Y]@w}; + }; + #if {$GMCP[COMM][QUEST][tp] != 0} + { + #if {"$quest[bonus]" != ""} + { + #var quest[bonus] {$quest[bonus]@w, @R$GMCP[COMM][QUEST][tp] tp}; + } + { + #var {quest[bonus]} { @Y[@WBonus: @R$GMCP[COMM][QUEST][tp] tp}; + }; + #var quest[bonus] {$quest[bonus]@Y]@w}; + }; + $repchan @R[@YQuest Completed@R] @Y[@WQp: @R$GMCP[COMM][QUEST][totqp]@Y] $quest[time] secs $quest[bonus]@w; + #var quest {}; + #var temp {}; + #var GMCP[COMM][QUEST] {}; + #var action {}; + }; + #elseif {"$GMCP[COMM][QUEST][action]" == "ready"} + { + $repchan @W\{-=@RQuest Time@W=-\}@w; + #var quest_timer {<129>READY<099>}; + #bell; + }; + #if {$debug} + { + #showme %1 + }; + #nop; +} + + +#class quest close diff --git a/setup.tin b/setup.tin new file mode 100644 index 0000000..1bfce56 --- /dev/null +++ b/setup.tin @@ -0,0 +1,26 @@ +#VARIABLE {name} {}; # Character name +#VARIABLE {password} {}; # Character password +#VARIABLE {dir} {.}; # Directory of setings, without '/' or '~' (Ex. /home/user/aardwolf, not ~/aardwolf ) + +#READ {$dir/gmcp.tin}; + +#SESSION {aard} {aardmud.org} {4000}; + +#READ {$dir/variables.tin} +#READ {$dir/spellup.tin} +#READ {$dir/zzGMCP_to_stat.tin} +#READ {$dir/general.tin} +#READ {$dir/map.tin} +#READ {$dir/ticking.tin} +#READ {$dir/quest.tin} + +#MAP READ {map-all.tt} # Once you have a map file, you will read it in here + +#LOG APPEND {$dir/active_log.raw} + +#VARIABLE {mapping} {1} +#VARIABLE {showmap} {0} +#VARIABLE {autoscan} {0} +#VARIABLE {repoptrack} {1} + +#SPLIT 0 4 diff --git a/spellup.tin b/spellup.tin new file mode 100644 index 0000000..21256bf --- /dev/null +++ b/spellup.tin @@ -0,0 +1,170 @@ +#class spellup kill; +#class spellup open; + +#ALIAS {^spup{| spup}} +{ + #send {spellup learned} +} +{5} + +#ACTION {^%d,%2,%d,%d,%d,%6,%d$} +{ + #if {%3 == 2 || %3 == 3} + { + #if {"%6" == "-1"} + { + #if {%7 == 1} + { + #if {$slisting} + { + #variable {spellup[learned][%1]} {1} + } + } + } + }; + #line gag +} +{5} + +#ACTION {^\{/noteedit\}$} +{ + #if {$spellup[state][was_casting]} + { + #read $dir/setup.tin; + #variable {spellup[state][was_casting]} {0}; + spellup resume + }; + #else + { + #read $dir/setup.tin; + #variable {spellup[state][was_casting]} {0} + }; +} +{5} + +#ACTION {^\{/spellheaders}$} +{ + #variable slisting 1; + #line gag +} +{5} + +#ACTION {^\{affoff}%d$} +{ + #if {$spellup[state][cast]} + { + #if {$spellup[learned][%1]} + { + #if {!$spellup[bad][%1]} + { + #if {"$position" == "Standing"} + { + #send {cast %1} + }; + #else + { + #if {!$spellup[bad][%1]} + { + #variable {spellup[pending][%1]} {1} + } + } + } + } + }; + #variable spellup[pending][%1][1]; + #line gag +} +{5} + +#ACTION {^\{affon\}%d,%d$} +{ + #unvariable spellup[pending][%1]; + #line gag +} +{5} + +#ACTION {^\{noteedit\}$} +{ + #if {$spellup[state][cast]} + { + #variable {spellup[state][was_casting]} {1}; + spup pause + }; + #else + { + #variable {spellup[state][was_casting]} {0} + }; + write; + #killall tick +} +{5} + +#ACTION {^\{sfail\}%d,%d,%d,%4$} +{ + #if {$spellup[state][cast]} + { + #if {$spellup[learned][%1]} + { + #if {%2 == 0} + { + #if {%3 == 1} + { + #if {!$spellup[bad][%1]} + { + #if {"$position" == "Standing"} + { + #line gag + #send {cast %1} + } + } + }; + #elseif {%3 == 4} + { + #line gag; + #show Not enough mana. Put spell in spellup[pending]; + #variable spellup[pending][%1] 1 + } + } + } + } +} +{5} + +#ACTION {^\{spellheaders spellup learned\}$} +{ + #variable slisting 1; + #variable {spellup[learned]} {}; + #line gag +} +{5} + +#ALIAS {^badspell %1} +{ + #if {$spellup[bad][%1]} + { + #variable spellup[bad][%1] 0 + }; + #else + { + #variable spellup[bad][%1] 1 + } +} +{5} + +#ALIAS {^spup pause$} +{ + #variable {spellup[state][cast]} {0} +} +{5} + +#ALIAS {^spup resume$} +{ + #variable {spellup[state][cast]} {1}; + #foreach {$spellup[pending][]} {spell_pending} + { + #send {cast $spell_pending} + } +} +{5} + +#class spellup close; diff --git a/ticking.tin b/ticking.tin new file mode 100644 index 0000000..e995518 --- /dev/null +++ b/ticking.tin @@ -0,0 +1,41 @@ +#CLASS ticking kill +#CLASS ticking open + +#event {IAC SB GMCP comm.tick IAC SE} +{ + #var ticks 30; + #tic TICKING + { + #math thirst {$GMCP[CHAR][STATUS][thirst] / 10 }; + #math hunger {$GMCP[CHAR][STATUS][hunger] / 10 }; + #if {$ticks > 0} + { + #math ticks {$ticks - 1} + }; + #if {$ticks < 10} + { + #show {Tick:<139> $ticks <099>QUEST: <139>$quest_timer<099> Exp:<139> $GMCP[CHAR][STATUS][tnl] \t <099>T/H:[ $thirst / $hunger] Align:$align} 3 + } + + { + #show {Tick:<139> $ticks <099>QUEST: <139>$quest_timer<099> Exp:<139> $GMCP[CHAR][STATUS][tnl] \t <099>T/H:[ $thirst / $hunger ] Align:$align} 3 + } + } {1} +} + +#ACTION {^There are %d minutes remaining until you can go on another quest.$} +{ + #IF {"%1"!="$quest_timer"} + { + #var quest_timer %1; + #untic quest_timer; + #tic quest_timer + { + #math quest_timer {$quest_timer - 1}; + #if $quest_timer==0 {#untic quest_timer;#var quest_timer <129>READY<099>}; + } {60} + } +} + +#CLASS ticking close + diff --git a/tmuxit b/tmuxit new file mode 100755 index 0000000..4c63703 --- /dev/null +++ b/tmuxit @@ -0,0 +1,19 @@ +#!/bin/bash +# This is a Tmux script that handles starting up tintin with all of the Aardwolf settings. +# You will need to change the -x and -y size +# Also change '/home/adam/tt/aard' to whatever directory you use for the settings. +# Requires Tmux 1.5 - See http://theixle.dyndns.org for a download link. + +tmux kill-session -t aardwolf +tmux new-session -d -s aardwolf -x 189 -y 47 +tmux splitw -h -l 159 'tail -fs .1 /home/adam/tt/aard/Aardwolf-chats' +tmux splitw -v -l 37 'tt++ -G /home/adam/tt/aard/setup.tin;bash -i' +tmux splitw -h -l 68 'tail -fs .1 /home/adam/tt/aard/chars' +tmux selectp -t 0 +tmux splitw -v -l 22 'tail -fs .1 /home/adam/tt/aard/minimap' +tmux selectp -t 0 +tmux splitw -v -l 14 'tail -fs .1 /home/adam/tt/aard/group' +tmux selectp -t 5 +tmux splitw -v -l 20 'tail -fs .1 /home/adam/tt/aard/quest' +tmux selectp -t 4 +tmux attach-session -t aardwolf diff --git a/variables.tin b/variables.tin new file mode 100644 index 0000000..03f2643 --- /dev/null +++ b/variables.tin @@ -0,0 +1,57 @@ +#CLASS {variables} OPEN + +#VARIABLE {action} {} +#VARIABLE {align} {-270} +#VARIABLE {base_con} {14} +#VARIABLE {base_dex} {12} +#VARIABLE {base_int} {11} +#VARIABLE {base_luck} {30} +#VARIABLE {base_str} {30} +#VARIABLE {base_wis} {30} +#VARIABLE {campaign} {0} +#VARIABLE {chanrec} {auction} +#VARIABLE {con} {17} +#VARIABLE {curr_time} {1318772334} +#VARIABLE {current_level} {1} +#VARIABLE {dex} {17} +#VARIABLE {dr} {187} +#VARIABLE {enemy_hp} {} +#VARIABLE {exit} {w} +#VARIABLE {fighting} {n} +#VARIABLE {floater} {rattle} +#VARIABLE {getmap} {0} +#VARIABLE {gold} {4686553} +#VARIABLE {healpot} {jade} +#VARIABLE {hp} {240} +#VARIABLE {hp_percent} {100.00} +#VARIABLE {hr} {55} +#VARIABLE {int} {14} +#VARIABLE {luck} {60} +#VARIABLE {mana} {200} +#VARIABLE {mana_percent} {100.00} +#VARIABLE {mapping} {1} +#VARIABLE {maxhp} {240} +#VARIABLE {maxmana} {} +#VARIABLE {maxmoves} {700} +#VARIABLE {mob_fighting} {} +#VARIABLE {movecolor} {<188><838>} +#VARIABLE {moves} {700} +#VARIABLE {moves_percent} {100.00} +#VARIABLE {player} {} +#VARIABLE {portalbag} {satchel} +#VARIABLE {pos_number} {3} +#VARIABLE {position} {Standing} +#VARIABLE {potbag} {xbag} +#VARIABLE {prompt} {<120>100.00 HP <150>| <140>100.00 MANA <150>| <188><838>100.00 MV<099>} +#VARIABLE {qp} {2315} +#VARIABLE {quest} {} +#VARIABLE {repchan} {gt} +#VARIABLE {str} {41} +#VARIABLE {temp} {} +#VARIABLE {time} {} +#VARIABLE {tnl} {3000} +#VARIABLE {tp} {9} +#VARIABLE {wis} {41} +#VARIABLE {word} {get aardwolf from satchel;wear aardwolf;enter;wear rattle;put aardwolf in satchel} + +#CLASS {variables} CLOSE diff --git a/zzGMCP_to_stat.tin b/zzGMCP_to_stat.tin new file mode 100644 index 0000000..3165ea0 --- /dev/null +++ b/zzGMCP_to_stat.tin @@ -0,0 +1,59 @@ +#ALIAS {||gmcp_prompt_statmon} +{ + #variable tier {$GMCP[CHAR][BASE][tier]}; + #math {tier_level} {$tier*10 + $current_level}; + #variable str {$GMCP[CHAR][STATS][str]}; + #variable base_str {$GMCP[CHAR][MAXSTATS][maxstr]}; + #variable int {$GMCP[CHAR][STATS][int]}; + #variable base_int {$GMCP[CHAR][MAXSTATS][maxint]}; + #variable wis {$GMCP[CHAR][STATS][wis]}; + #variable base_wis {$GMCP[CHAR][MAXSTATS][maxwis]}; + #variable dex {$GMCP[CHAR][STATS][dex]}; + #variable base_dex {$GMCP[CHAR][MAXSTATS][maxdex]}; + #variable con {$GMCP[CHAR][STATS][con]}; + #variable base_con {$GMCP[CHAR][MAXSTATS][maxcon]}; + #variable luck {$GMCP[CHAR][STATS][luck]}; + #variable base_luck {$GMCP[CHAR][MAXSTATS][maxluck]}; + #math hp_percent {((1.00*$GMCP[CHAR][VITALS][hp]) / $GMCP[CHAR][MAXSTATS][maxhp])*100}; + #math mana_percent {((1.00*$GMCP[CHAR][VITALS][mana])/$GMCP[CHAR][MAXSTATS][maxmana])*100}; + #math moves_percent {((1.00*$GMCP[CHAR][VITALS][moves])/$GMCP[CHAR][MAXSTATS][maxmoves])*100}; + #variable hr {$GMCP[CHAR][STATS][hr]}; + #variable dr {$GMCP[CHAR][STATS][dr]}; + #variable position {$GMCP[CHAR][STATUS][pos]}; + #variable hp {$GMCP[CHAR][VITALS][hp]}; + #variable maxhp {$GMCP[CHAR][MAXSTATS][maxhp]}; + #variable mana {$GMCP[CHAR][VITALS][mana]}; + #variable maxmana {$GMCP[CHAR][MAxSTATS][maxmana]}; + #variable moves {$GMCP[CHAR][VITALS][moves]}; + #variable maxmoves {$GMCP[CHAR][MAXSTATS][maxmoves]}; + #variable gold {$GMCP[CHAR][WORTH][gold]}; + #variable qp {$GMCP[CHAR][WORTH][qp]}; + #variable tp {$GMCP[CHAR][WORTH][tp]}; + #variable align {$GMCP[CHAR][STATUS][align]}; + #variable tnl {$GMCP[CHAR][STATUS][tnl]}; + #variable current_level {$GMCP[CHAR][STATUS][level]}; + #variable pos_number {$GMCP[CHAR][STATUS][state]}; + #variable mob_fighting {$GMCP[CHAR][STATUS][enemy]}; + #variable enemy_hp {$GMCP[CHAR][STATUS][enemypct]}; + #variable hunger {$GMCP[CHAR][STATUS][hunger]}; + #variable thirst {$GMCP[CHAR][STATUS][thirst]}; + #format {movecolor} {%c} {light yellow}; + #if {$hp_percent == 0.00} + { + protocol gmcp sendchar + }; + #variable {prompt} {<120>$hp_percent HP <150>| <140>$mana_percent MANA <150>| $movecolor$moves_percent MV}; + #if {$pos_number == 8} + { + #variable fighting y; + #variable {prompt} {$prompt <150>| <110>Enemy $enemy_hp} + }; + #else + { + #variable fighting n + }; + #variable {prompt} {$prompt<099>}; + #showme {$prompt} {2} +} +{5} +