From c6b18a44ca7143b77c6c7b3a2e74f50dba5f5e89 Mon Sep 17 00:00:00 2001 From: Adam Williams Date: Sat, 4 Aug 2012 02:36:59 -0700 Subject: [PATCH] first commit maybe --- Aardwolf-chats | 1 + README | 74 +++++++++++ Todo | 4 + active_log.raw | 38 ++++++ affcap.tin | 59 +++++++++ affects | 1 + chars | 1 + general.tin | 78 ++++++++++++ gmcp.tin | 309 +++++++++++++++++++++++++++++++++++++++++++++ group | 1 + history-discon.txt | 3 + map.tin | 77 +++++++++++ map.txt | 1 + minimap | 1 + paths.tin | 272 +++++++++++++++++++++++++++++++++++++++ pathwalk.tin | 109 ++++++++++++++++ pmuxit | 7 + quest.tin | 89 +++++++++++++ setup.tin | 26 ++++ spellup.tin | 170 +++++++++++++++++++++++++ ticking.tin | 41 ++++++ tmuxit | 19 +++ variables.tin | 57 +++++++++ zzGMCP_to_stat.tin | 59 +++++++++ 24 files changed, 1497 insertions(+) create mode 100644 Aardwolf-chats create mode 100644 README create mode 100644 Todo create mode 100644 active_log.raw create mode 100644 affcap.tin create mode 100644 affects create mode 100644 chars create mode 100644 general.tin create mode 100644 gmcp.tin create mode 100644 group create mode 100644 history-discon.txt create mode 100644 map.tin create mode 100644 map.txt create mode 100644 minimap create mode 100644 paths.tin create mode 100644 pathwalk.tin create mode 100755 pmuxit create mode 100644 quest.tin create mode 100644 setup.tin create mode 100644 spellup.tin create mode 100644 ticking.tin create mode 100755 tmuxit create mode 100644 variables.tin create mode 100644 zzGMCP_to_stat.tin 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} +