Browse Source

binaryatrocity cleanup first commit

master
Brandon Cornejo 9 years ago
parent
commit
d43c2cdb72
  1. 1
      Aardwolf-chats
  2. 81
      README
  3. 26
      README.MD
  4. 4
      Todo
  5. 38
      active_log.raw
  6. 59
      affcap.tin
  7. 1
      affects
  8. 1
      chars
  9. 78
      general.tin
  10. 309
      gmcp.tin
  11. 1
      group
  12. 3
      history-discon.txt
  13. 77
      map.tin
  14. 1
      map.txt
  15. 1
      minimap
  16. 300
      paths.tin
  17. 109
      pathwalk.tin
  18. 7
      pmuxit
  19. 89
      quest.tin
  20. 26
      setup.tin
  21. 170
      spellup.tin
  22. 41
      ticking.tin
  23. 19
      tmuxit
  24. 27
      todo.txt
  25. 59
      variables.tin
  26. 59
      zzGMCP_to_stat.tin

1
Aardwolf-chats

@ -1 +0,0 @@
This file intentionally blank. It stores communications once connected.

81
README

@ -1,81 +0,0 @@
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:
-----------
Linux/Unix:
Setup panes in Tmux or multiple terminal windows and use the tail command (ex. tail -fs .1 minimap)
on whichever log file you wish.
Mac OSX:
See link below for instructions setting up Tmux.
https://blogs.oracle.com/unixben/entry/install_tmux_on_mac_os
*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.

26
README.MD

@ -1,26 +0,0 @@
<h1><u>Aardwolf Tintin Package</u></h1>
<p>
<b>OS</b>: Linux/Unix or Mac (Although these settings have been known to work with <a href='http://tintin.sourceforge.net/download.php'>Wintin++</a> as well)<br>
<b>Requires</b>: <a href='http://tintin.sourceforge.net'>Tintin 2.00.7</a><br>
<b>Recommended</b>: <a href='http://tmux.sourceforge.net'>Tmux 1.5</a> (or some comparable program).<br>
<table cellpadding='5px' border='1'>
<tr>
<td>
<h3><u>Features:</u></h3>
<dl>
<dt>GMCP event handling/variable setting<br>
<dt>Integrated GMCP/Tintin Mapping<br>
<dt>Captures into logfiles for "miniwindows":<br>
<blockquote><dd>ASCII Map<br>
<dd>Communications<br>
<dd>Affects<br>
<dd>Group Stats<br>
<dd>Mobs/Chars in room<br>
<dt>Spellup aliases/triggers for keeping spells up<br>
<dt>A customized prompt with several timers for ticks/quests/etc<br>
<dt>Examples of making aliases that use #map find in several ways<br>
<p>
Most of the work was done by the player "Cheezburger." It is<br>
highly undocumented and by no means bug free.<br>
<td><a href='https://lh3.googleusercontent.com/-4rqyXaYgCGw/UBnVVDdJghI/AAAAAAAAABA/BmiBKnPhkII/s800/aardwolf%252Btintin2.PNG'><img src='https://lh3.googleusercontent.com/-4rqyXaYgCGw/UBnVVDdJghI/AAAAAAAAABA/BmiBKnPhkII/s800/aardwolf%252Btintin2.PNG' alt='aardwolf-tintin screenshot'></img></a>

4
Todo

@ -1,4 +0,0 @@
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

38
active_log.raw

@ -1,38 +0,0 @@
#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.

59
affcap.tin

@ -1,59 +0,0 @@
#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

1
affects

@ -1 +0,0 @@
This file left intentionally blank. It will store affects list once connected.

1
chars

@ -1 +0,0 @@
This file left intentionally blank. Will store characters and mobs in room once connected.

78
general.tin

@ -1,78 +0,0 @@
#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}

309
gmcp.tin

@ -1,309 +0,0 @@
#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] <acc>QT<eff>: <afc>$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} {<fca>} {$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

1
group

@ -1 +0,0 @@
This file intentionally blank. It stores group data once connected.

3
history-discon.txt

@ -1,3 +0,0 @@
quit
#end

77
map.tin

@ -1,77 +0,0 @@
#CLASS {map} KILL
#CLASS {map} OPEN
#ACTION {^<MAPEND>$}
{
#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 {^<MAPSTART>$}
{
#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

1
map.txt

@ -1 +0,0 @@
This file will store tintin map once connected.

1
minimap

@ -1 +0,0 @@
This file left intentionally blank. Will store ascii map once connected.

300
paths.tin

@ -1,300 +0,0 @@
#class paths kill
#class paths open
#NOP ############################################################################################
#NOP ### Portals variable, used by the speedwalking aliases (afind, rfind, vfind)
#NOP ############################################################################################
#var {portals}
{
{1}
{
{lvl}{1}
{zone}{sendhian}
{name}{922303584}
{vnum}{20286}
{cmd}{get 922303584 from $$portalbag;hold 922303584;enter;hold $$portal;put 922303584 in $$portalbag}
}
{2}
{
{lvl}{5}
{zone}{aylor}
{name}{garbage}
{vnum}{32418}
{cmd}{get garbage from $$portalbag;hold garbage;enter;hold $$portal;put garbage in $$portalbag}
}
{3}
{
{lvl}{10}
{zone}{petstore}
{name}{collar}
{vnum}{995}
{cmd}{get collar from $$portalbag;hold collar;enter;hold $$portal;put collar in $$portalbag}
}
{4}
{
{lvl}{25}
{zone}{amusement}
{name}{amulet}
{vnum}{29364}
{cmd}{get amulet from $$portalbag;hold amulet;enter;hold $$portal;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 <zone>
};
#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 <vnum>
};
#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 <roomname>
};
#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

109
pathwalk.tin

@ -1,109 +0,0 @@
#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 <blah>, #map find <blah>)
#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://code.google.com/p/aardwolf-tintin/source/browse/gmcp.tin
#NOP http://code.google.com/p/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

7
pmuxit

@ -1,7 +0,0 @@
#!/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

89
quest.tin

@ -1,89 +0,0 @@
#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 {<fca>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 <cfa>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

26
setup.tin

@ -1,26 +0,0 @@
#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

170
spellup.tin

@ -1,170 +0,0 @@
#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;

41
ticking.tin

@ -1,41 +0,0 @@
#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

19
tmuxit

@ -1,19 +0,0 @@
#!/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 <column> and -y <row> 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

27
todo.txt

@ -1,27 +0,0 @@
Development ToDo List
Improve the installation and setup phase.
- installation script
- optional install of tintin/tmux
- basic map with some newbie areas mapped
Provide some in-game (in-client) commands for help/docs and control.
- map control
- map custom exits, portals, speedwalking (paths.tin)
- channel gagging
Add more commenting to the settings.
Clean up the formatting.
Separate the "core" components from the "plug-ins"
- .tin vs .tt and/or directories
Remove redundancy, fix bugs, add functionality to settings.
Change reports from masaki theme to neutral
Update mapping in gmcp.tin to set room_terrain from GMCP values
- eventually expand this to color rooms based on terrain
Add revised lvladd aliases and fix afind,vfind,rfind,mfind,hfind

59
variables.tin

@ -1,59 +0,0 @@
#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 {CLIENT_NAME} {Aardwolf-Tintin}
#VARIABLE {CLIENT_VERSION} {1.01}
#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

59
zzGMCP_to_stat.tin

@ -1,59 +0,0 @@
#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}
Loading…
Cancel
Save