Adam Williams
13 years ago
commit
c6b18a44ca
24 changed files with 1497 additions and 0 deletions
-
1Aardwolf-chats
-
74README
-
4Todo
-
38active_log.raw
-
59affcap.tin
-
1affects
-
1chars
-
78general.tin
-
309gmcp.tin
-
1group
-
3history-discon.txt
-
77map.tin
-
1map.txt
-
1minimap
-
272paths.tin
-
109pathwalk.tin
-
7pmuxit
-
89quest.tin
-
26setup.tin
-
170spellup.tin
-
41ticking.tin
-
19tmuxit
-
57variables.tin
-
59zzGMCP_to_stat.tin
@ -0,0 +1 @@ |
|||
This file intentionally blank. It stores communications once connected. |
@ -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. |
@ -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 |
@ -0,0 +1,38 @@ |
|||
[0m#OK: 8 ACTIONS LOADED.[0m |
|||
[0m#OK: 13 ALIASES LOADED.[0m |
|||
[0m#OK: 5 CLASSES LOADED.[0m |
|||
[0m#OK: 17 EVENTS LOADED.[0m |
|||
[0m#OK: 1 MACRO LOADED.[0m |
|||
[0m#OK: 1 SUBSTITUTE LOADED.[0m |
|||
[0m#OK: 3 TICKERS LOADED.[0m |
|||
[0m#OK: 67 VARIABLES LOADED.[0m |
|||
############################################################################# |
|||
##[ --- 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? [0;39;49mquit[0m |
|||
That name is not usable. Please try another. |
|||
Name: [0;39;49m#end[0m |
|||
[0m#MAP: This session has no map data. Use #map create or #map read to create one.[0m |
|||
[0m#SESSION 'aard' DIED.[0m |
@ -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 |
@ -0,0 +1 @@ |
|||
This file left intentionally blank. It will store affects list once connected. |
@ -0,0 +1 @@ |
|||
This file left intentionally blank. Will store characters and mobs in room once connected. |
@ -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} |
@ -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] <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 |
@ -0,0 +1 @@ |
|||
This file intentionally blank. It stores group data once connected. |
@ -0,0 +1,3 @@ |
|||
|
|||
quit |
|||
#end |
@ -0,0 +1,77 @@ |
|||
#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 |
@ -0,0 +1 @@ |
|||
This file will store tintin map once connected. |
@ -0,0 +1 @@ |
|||
This file left intentionally blank. Will store ascii map once connected. |
@ -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 <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 |
@ -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 <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://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 |
@ -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 |
@ -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 {<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 |
@ -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 |
@ -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; |
@ -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 |
|||
|
@ -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 <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 |
@ -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 |
@ -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} |
|||
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue