Compare commits

...

No commits in common. 'master' and 'wiki' have entirely different histories.
master ... wiki

  1. 25
      ProjectHome.md
  2. 114
      README.md
  3. 11
      RecommendedSSHClients.md
  4. 1
      Screenshot_PC_main.md
  5. 2
      SubmitYourScript.md
  6. 1
      actions.tin
  7. 58
      aliases.tin
  8. 7
      bin/aardwolf-session
  9. 14
      bin/release
  10. 28
      config.tin
  11. 0
      logs/active.log
  12. 0
      logs/channel.log
  13. 0
      logs/history.log
  14. 0
      logs/minimap.log
  15. 0
      logs/mobs.log
  16. 0
      logs/notes.log
  17. 48
      src/char.tin
  18. 89
      src/gmcp.tin
  19. 40
      src/init.tin
  20. 61
      src/minimap.tin
  21. 39
      src/prompt.tin
  22. 72
      src/quest.tin

25
ProjectHome.md

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

114
README.md

@ -1,37 +1,77 @@
# TinTin++ Settings for Aardwolf MUD
## Setup:
* Clone the repository
* Edit username in config.tin
* Edit password in config.tin
* Edit bag in config.tin
* Edit paths in aardwolf-session
## Usage:
* Launch tmux (tmux -2)
* Run aardwolf-session (./aardwolf-session)
* In-game: tags channel on
* In-game: tags map on
* In-game: tags mapexits on
* In-game: tags mapnames on
* In-game: tags roomchars on
* In-game: tags roomobjs on
## Features
* GMCP powered 2-line prompt with colored percentage meters (prompt.tin)
* Quest time ticker and target tracking (quest.tin)
* Repop watch and announce (gmcp.tin)
* Minimap in seperate window (minimap.tin)
* Alias-driven note jotting system (aliases.tin)
* Channels logged to separate window (gmcp.tin)
* Room characters/mobiles and objects logged to file (minimap.tin)
## Commands
* debug on|off - toggles echoing GMCP data as it arrives
* repopwatch on|off - toggles announcing of repops in $repchan
* .note *message here* - adds *message* to notes.log (bottom right window)
* .newpage - clears the note screen, providing a fresh page
* cpcheck - print list of campaign targets to note window, sorted by area
The actions.tin and aliases.tin files are a place for your personal triggers and aliases.
#Copy of the README
```
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.
```

11
RecommendedSSHClients.md

@ -0,0 +1,11 @@
# Introduction #
These SSH clients have been known to work well.
# Clients #
**iPad**/**iPhone**
https://itunes.apple.com/us/app/vssh-hd-lite/id535056241?mt=8
**Android**
https://play.google.com/store/apps/details?id=org.connectbot&hl=en

1
Screenshot_PC_main.md

@ -0,0 +1 @@
<img src='https://lh3.googleusercontent.com/-4rqyXaYgCGw/UBnVVDdJghI/AAAAAAAAABA/BmiBKnPhkII/s800/aardwolf%252Btintin2.PNG' alt='aardwolf-tintin screenshot'></img>

2
SubmitYourScript.md

@ -0,0 +1,2 @@
For users to submit their own scripts. Simply paste it as a comment.
I have no idea what the length limit is atm.

1
actions.tin

@ -1 +0,0 @@
#ACTION {The quest will start in} {#bell};

58
aliases.tin

@ -1,58 +0,0 @@
#ALIAS {porthome}
{
get portal $bag;
wear portal;
enter;
remove portal;
put portal $bag;
wear all;
};
#ALIAS {^.note %*}
{
#line {log} {$dir/logs/notes.log} {%1};
};
#ALIAS {^.newpage$}
{
#5 #line {log} {$dir/logs/notes.log} {\n\n\n\n};
};
#ALIAS {^.colors$}
{
#forall {0;1;2;3;4;5;6;7;8;9}
{
#showme {<0&09>\<0&09\><099> <1&09>\<1&09\><099>};
};
};
#ALIAS {cpcheck}
{
.newpage;
#var {cplog} {1};
#line {log} {$dir/logs/notes.log} {<199>-==[<169>Campaign Targets<199>]==-<099>\n};
campaign check;
};
#ACTION {^You still have to kill %. %* (%*)$}
{
#if {$cplog}
{
#list {cpareas} {find} {%3} {exists};
#if {$exists == 0} { #list {cpareas} {sort} {%3}; };
#list {cplist[%3]} {sort} {%2};
};
};
#ACTION {left to finish this campaign.$}
{
#var {cplog} {0};
#foreach {$cpareas[%*]} {area}
{
#line {log} {$dir/logs/notes.log} {<199>$area:<099>};
#foreach {$cplist[$area][%*]} {target}
{
#line {log} {$dir/logs/notes.log} { * <029>$target<099>};
}
}
};

7
bin/aardwolf-session

@ -1,7 +0,0 @@
#!/bin/bash
tmux split-window -h -p 22 'tail -fs .1 /home/br4n/documents/MUD/AardWolf/aardwolf-tintin/logs/minimap.log'
tmux split-window -v -p 58 'tail -fs .1 /home/br4n/documents/MUD/AardWolf/aardwolf-tintin/logs/notes.log'
tmux select-pane -L
tmux split-window -v -p 80 'tail -fs .1 /home/br4n/documents/MUD/AardWolf/aardwolf-tintin/logs/channel.log'
tmux swap-pane -Ud
tmux send-keys 'tt++ -G /home/br4n/documents/MUD/AardWolf/aardwolf-tintin/config.tin' Enter

14
bin/release

@ -1,14 +0,0 @@
#!/bin/bash
# Clear Username and Password
sed -i '1,2s/{\(.*\)} {\(.*\)}\;$/{\1} {}\;/' config.tin
echo "Clearing credentials..."
# Empty logs and history
for f in logs/*.log
do
rm $f
touch $f
echo "Clearing $f..."
done
echo "Done - ready to commit."

28
config.tin

@ -1,28 +0,0 @@
#VARIABLE {name} {};
#VARIABLE {password} {};
#VARIABLE {dir} {.};
#VARIABLE {repchan} {gt};
#VARIABLE {bag} {pentagram};
#CONFIG {LOG} {RAW}
#LOG APPEND {$dir/logs/active.log}
#READ {$dir/src/prompt.tin};
#READ {$dir/src/gmcp.tin};
#READ {$dir/src/char.tin};
#READ {$dir/src/quest.tin};
#READ {$dir/src/minimap.tin};
#READ {$dir/src/init.tin};
#READ {$dir/aliases.tin};
#READ {$dir/actions.tin};
#ACTION {{^\{chan ch={answer|question|wangrp|tech|gossip|barter|auction|nobletalk|sports|gclan|newbie|curse|market}\}%2$}} {#line gag};
#ACTION {{\{stats\}}} {#line gag};
#SESSION {aard} {aardmud.org} {4000};
#SPLIT {0} {3};
#SUB {\{chan ch=%*\}} {};

0
logs/active.log

0
logs/channel.log

0
logs/history.log

0
logs/minimap.log

0
logs/mobs.log

0
logs/notes.log

48
src/char.tin

@ -1,48 +0,0 @@
#class char kill
#class char open
#event {IAC SB GMCP char.vitals IAC SE}
{
#if {$debug} { #showme %1 };
#var {GMCPDATA[CHAR][VITALS]} {%0};
#var {hp} {$GMCPDATA[CHAR][VITALS][hp]};
#var {mana} {$GMCPDATA[CHAR][VITALS][mana]};
#var {moves} {$GMCPDATA[CHAR][VITALS][moves]};
prompt_statmon;
}
#event {IAC SB GMCP char.maxstats IAC SE}
{
#if {$debug} { #showme %1 };
#var {GMCPDATA[CHAR][MAXSTATS]} {%0};
#var {maxhp} {$GMCPDATA[CHAR][MAXSTATS][maxhp]};
#var {maxmana} {$GMCPDATA[CHAR][MAXSTATS][maxmana]};
#var {maxmoves} {$GMCPDATA[CHAR][MAXSTATS][maxmoves]};
#nop Actual stats below are yet unusued.
#var {maxstr} {$GMCPDATA[CHAR][MAXSTATS][maxstr]};
#var {maxint} {$GMCPDATA[CHAR][MAXSTATS][maxint]};
#var {maxwis} {$GMCPDATA[CHAR][MAXSTATS][maxwis]};
#var {maxdex} {$GMCPDATA[CHAR][MAXSTATS][maxdex]};
#var {maxcon} {$GMCPDATA[CHAR][MAXSTATS][maxcon]};
#var {maxluck} {$GMCPDATA[CHAR][MAXSTATS][maxluck]};
prompt_statmon;
}
#event {IAC SB GMCP char.status IAC SE}
{
#variable {GMCPDATA[CHAR][STATUS]} {%0};
#if {$debug} {#showme %1};
#var {level} {$GMCPDATA[CHAR][STATUS][level]};
#var {tnl} {$GMCPDATA[CHAR][STATUS][tnl]};
#var {hunger} {$GMCPDATA[CHAR][STATUS][hunger]};
#var {thirst} {$GMCPDATA[CHAR][STATUS][thirst]};
#var {align} {$GMCPDATA[CHAR][STATUS][align]};
#var {state} {$GMCPDATA[CHAR][STATUS][state]};
#var {position} {$GMCPDATA[CHAR][STATUS][pos]};
#var {enemy} {$GMCPDATA[CHAR][STATUS][enemy]};
#var {enemy_health} {$GMCPDATA[CHAR][STATUS][enemypct]};
prompt_statmon;
}
#class char close

89
src/gmcp.tin

@ -1,89 +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 };
#showme { Debug is <139>$debug<099> };
#nop;
}
#alias {repopwatch {on|off}}
{
#if {"%1" == "on"} { #variable repop 1 };
#else { #variable repop 0 };
#showme { Repopwatch is <139>$repop<099> };
#nop;
}
#alias {{^check repop$}}
{
#format {timestamp} {%T};
#math {repop_time} {($last_repop+606)-$timestamp};
#send {$repchan @CNext repop@w: @R$repop_time @Wseconds.@w};
}
#event {IAC SB GMCP comm.channel IAC SE}
{
#if {$debug} { #showme %1 };
#var {GMCPDATA[COMM][CHATLOGGER]} {%0};
#if {"$GMCPDATA[COMM][CHATLOGGER][chan]" != "mobsay"}
{
#line log {$dir/logs/channel.log} {$GMCPDATA[COMM][CHATLOGGER][msg]};
};
}
#event {IAC SB GMCP comm.repop IAC SE}
{
#if {$debug} { #showme %1 };
#var {GMCP[COMM][REPOP]} {%0};
#format {last_repop} {%T};
#format {time} {%t} {%H:%M:%S};
#send {$repchan @WRepop @w= @r$GMCP[COMM][REPOP][zone]@w @@ @r$time};
#var time {};
#nop;
}
#nop Start up GMCP connection with the server
#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 {PROGRAM START}
{
#variable CLIENT_NAME %0;
#variable CLIENT_VERSION %1;
}
#nop Write out command history and variable class on disconnect
#event {SESSION DISCONNECTED}
{
#history write {$dir/logs/history.log};
}
#event {SESSION CONNECTED}
{
$name;
$password;
#unvar name;
#unvar password;
#history read {$dir/logs/history.log};
}
#class gmcp close

40
src/init.tin

@ -1,40 +0,0 @@
#class init kill
#class init open
#ALIAS {do_on_connect}
{
map;
protocol gmcp sendchar;
quest time;
look;
};
#ACTION {^############# Reconnecting to Game #############$} {do_on_connect}
#ACTION {^Welcome to Aardwolf. May your adventures be mystical, challenging and rewarding.} {do_on_connect}
#ACTION {^You do not have to wait to go on another quest.$}
{
#var {quest[timer]} {<129>READY<099>};
prompt_statmon;
#class init kill
}
#ACTION {^There are %d minutes remaining until you can go on another quest.$}
{
start_quest_timer %1;
prompt_statmon;
#class init kill
}
#ACTION {^There is less than a minute remaining until you can go on another quest.$}
{
start_quest_timer 1;
prompt_statmon;
#class init kill
}
#ACTION {^Time left for current quest: %d$}
{
#var {quest[timer]} {<fca>ACTIVE<099>};
prompt_statmon;
#class init kill
}
#class init close

61
src/minimap.tin

@ -1,61 +0,0 @@
#class minimap kill
#class minimap open
#ALIAS {get_minimap}
{
#ACTION {~%0}
{
#line log {$dir/logs/minimap.log} {%0};
#line gag;
} {10}
}
#ALIAS {get_chars}
{
#ACTION {~%0}
{
#line log {$dir/logs/mobs.log} {%0};
} {10}
}
#ACTION {^<MAPEND>$}
{
#unaction {~%%0} {};
#line gag;
} {1}
#ACTION {^<MAPSTART>$}
{
#line log {$dir/logs/minimap.log} {\n\n\n\n\n\n};
get_minimap;
#line gag;
} {1}
#ACTION {{^\{roomchars\}}}
{
#line log {$dir/logs/mobs.log} {\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n};
get_chars;
#line gag;
}
#ACTION {{^\{/roomchars\}$}}
{
#unaction {~%%0} {};
#line log {$dir/logs/mobs.log} {\n\r};
#line gag;
}
#ACTION {{^\{roomobjs\}}}
{
get_chars;
#line gag;
}
#ACTION {{^\{/roomobjs\}$}}
{
#unaction {~%%0} {};
#line log {$dir/logs/mobs.log} {\n\r};
#line gag;
}
#class minimap close

39
src/prompt.tin

@ -1,39 +0,0 @@
#FUNCTION {percent_color}
{
#var {percent_store} {};
#if {%1 > 80} { #format {percent_store} {%c%d<099>} {bold green} {%1} };
#if {%1 < 80 && %1 > 30} { #format {percent_store} {%c%d<099>} {bold yellow} {%1} };
#if {%1 < 30} { #format {percent_store} {%c%d<099>} {bold red} {%1} };
#return $percent_store;
}
#ALIAS {prompt_statmon}
{
#math hp_percent {((1.00*$hp) / $maxhp)*100};
#math mana_percent {((1.00*$mana) / $maxmana)*100};
#math moves_percent {((1.00*$moves) / $maxmoves)*100};
#var {c_hp_percent} {@percent_color{$hp_percent}};
#var {c_mana_percent} {@percent_color{$mana_percent}};
#var {c_moves_percent} {@percent_color{$moves_percent}};
#var {hp_prompt} {<039>$hp<099>/<139>$maxhp<099>hp ($c_hp_percent%)};
#var {mana_prompt} {<069>$mana<099>/<169>$maxmana<099>m ($c_mana_percent%)};
#var {moves_prompt} {<049>$moves<099>/<149>$maxmoves<099>mv ($c_moves_percent%)};
#var {prompt} {<$hp_prompt | $mana_prompt | $moves_prompt>};
#if {$state == 8}
{
#var {c_enemy_health} {@percent_color{$enemy_health}};
#var {battleprompt} {<119>$enemy<099>: $c_enemy_health%};
#var {prompt} {$prompt $battleprompt};
};
#elseif {$state == 9 || $state == 11} { #var {prompt} {$prompt <159>RESTING<099>}};
#showme {$prompt} {1};
#var {c_hunger} {@percent_color{$hunger}};
#var {c_thirst} {@percent_color{$thirst}};
#var {top_prompt} {[Quest: <169>$quest[timer]<099> | TNL: <059>$tnl<099> | Align: <149>$align<099> | Hunger/Thirst: $c_hunger%/$c_thirst%]};
#showme {$top_prompt} {2};
};

72
src/quest.tin

@ -1,72 +0,0 @@
#class quest kill
#class quest open
#ALIAS {start_quest_timer}
{
#var {quest[timer]} {%1};
#ticker {quest[timer]}
{
#math {quest[timer]} {$quest[timer] - 1};
#if {$quest[timer] == 0}
{
#untick {quest[timer]};
#var {quest[timer]} {<cfa>READY<099>};
};
prompt_statmon;
} {60}
};
#EVENT {IAC SB GMCP comm.quest IAC SE}
{
#if {$debug} { #showme {%1} };
#var {GMCPDATA[COMM][QUEST]} {%0};
#if {"$GMCPDATA[COMM][QUEST][action]" == "ready"}
{
#send {$repchan @W\{-=@RQuest Time@W=-\}@w};
#var {quest[timer]} {<129>READY<099>};
#bell;
};
#elseif {"$GMCPDATA[COMM][QUEST][action]" == "start"}
{
#format {quest[start]} {%T};
#var {quest[timer]} {<fca>ACTIVE<099>};
#var {quest[room]} {$GMCPDATA[COMM][QUEST][room]};
#var {quest[area]} {$GMCPDATA[COMM][QUEST][area]};
#var {quest[target]} {$GMCPDATA[COMM][QUEST][targ]};
#send {$repchan @Y[@RQuest Requested@Y]@w: @YTarget@w=@R$quest[target]@w. @YRoom@w=@R$quest[room]@w. @YArea@w=@R$quest[area]@w.};
};
#elseif {"$GMCPDATA[COMM][QUEST][action]" == "fail"}
{
#send {$repchan @W\{-=@RQuest Failed@W=-\}@w};
#var {quest} {};
start_quest_timer 30;
};
#elseif {"$GMCPDATA[COMM][QUEST][action]" == "comp"}
{
#format {quest[end]} {%T};
#math {quest[time]} {$quest[end] - $quest[start]};
#var {quest[trivia]} {$GMCPDATA[COMM][QUEST][tp]};
#var {quest[pracs]} {$GMCPDATA[COMM][QUEST][pracs]};
#var {quest[trains]} {$GMCPDATA[COMM][QUEST][trains]};
#var {quest[qp]} {$GMCPDATA[COMM][QUEST][totqp]};
#send {$repchan @R[@YQuest Completed@R] @Y[@WQp: @R$quest[qp]@Y] $quest[time] secs @Y[@WBonus: @R $quest[pracs] / $quest[train] / $quest[trivia]@Y]@w};
#var {quest} {};
start_quest_timer 30;
};
#elseif {"$GMCP[COMM][QUEST][target]" == "killed"}
{
#send {$repchan @W\{-=@RQuest Target Killed@W=-\}@w};
#var {quest[timer]} {<169>RETURN<099>};
};
prompt_statmon;
}
#class quest close
Loading…
Cancel
Save