diff --git a/aardwolf-session b/aardwolf-session new file mode 100755 index 0000000..6ebe17c --- /dev/null +++ b/aardwolf-session @@ -0,0 +1,14 @@ +#tmux kill-session -t aardwolf +#tmux new-session -d -s aardwolf -x 189 -y 47 +#tmux splitw -v -l 20 'tail -fs .1 /home/br4n/documents/MUD/AardWolf/aardwolf/aardwolf/quest' +#tmux selectp -t 0 +#tmux splitw -v -l 22 'tail -fs .1 /home/br4n/documents/MUD/AardWolf/aardwolf/aardwolf/affects' +#tmux selectp -t 2 +#tmux attach-session -t aardwolf +#tmux splitw -h -l 140 'tail -fs .1 /home/br4n/documents/MUD/AardWolf/aardwolf/aardwolf/channel.log' +#tmux splitw -v -l 37 'tt++ -G /home/br4n/documents/MUD/AardWolf/aardwolf/aardwolf/setup.tin' +#tmux send-keys -t 0 'exit' Enter + +tmux split-window -v -p 80 'tail -fs .1 /home/br4n/documents/MUD/AardWolf/aardwolf/aardwolf/channel.log' +tmux swap-pane -Dd +tmux send-keys 'tt++ -G /home/br4n/documents/MUD/AardWolf/aardwolf/aardwolf/setup.tin' Enter diff --git a/actions.tin b/actions.tin new file mode 100644 index 0000000..e69de29 diff --git a/aliases.tin b/aliases.tin new file mode 100644 index 0000000..335b18e --- /dev/null +++ b/aliases.tin @@ -0,0 +1,9 @@ +#ALIAS {porthome} +{ + get portal $bag; + wear portal; + enter; + remove portal; + put portal $bag; + wear all; +}; diff --git a/config.tin b/config.tin new file mode 100644 index 0000000..4514f9c --- /dev/null +++ b/config.tin @@ -0,0 +1,19 @@ +#VARIABLE {name} {username}; +#VARIABLE {password} {password}; +#VARIABLE {dir} {.}; + +#VARIABLE {repchan} {gt}; +#VARIABLE {bag} {pentagram}; + +#READ {$dir/src/prompt.tin}; +#READ {$dir/src/gmcp.tin}; +#READ {$dir/src/char.tin}; +#READ {$dir/src/quest.tin}; +#READ {$dir/src/init.tin}; + +#READ {$dir/aliases.tin}; +#READ {$dir/actions.tin}; + +#SESSION {aard} {aardmud.org} {4000}; + +#SPLIT {0} {3}; diff --git a/logs/channel.log b/logs/channel.log new file mode 100644 index 0000000..120018e --- /dev/null +++ b/logs/channel.log @@ -0,0 +1,25 @@ +Goal Bot Xochitl barters: I'll give you 2 mil not to sell it to Cytan. +Kaimana barters: I'm going to sell my awesome sword soon, I just wish that more players would use auction that were low/mid level, it seems like most of the stuff there is either in the LVL 181/201 range, or low level stuff that isn't that great but people who don't know think it is +Cytan barters: have a serious seller, who had a serious buyer. hallowed light discussion over. lets go to skinners SH skins. or whatever it is. +Kaimana barters: I'm worried no one will buy it, like before, and the auction system on this game keeps it, which I hate +Kaimana barters: but I know that it's amazing how many times I've been able to sharpen it and how good it is for it's level +Tiklmelmo barters: you can bid on it yourself to avoid that +Goal Bot Xochitl barters: You can place a bid on your own item so it won't be retained. +[Deputy] Daresia barters: everyone uses aards so no one wants them >< +Kaimana barters: yeah... guess I was just never all that crazy about quests, especially past about LVL50 when the big multi section areas with incomplete or no VI maps start popping up allot +[Newbie] (Helper) Shaelynne: Hi Grus +[Deputy] Daresia barters: well...learn them? +Shaelynne barters: gotten really spammy on this channel. sell the sword. don't sell the sword...can we just move the chatter to another channel.  +Kaimana barters: yeah... but just for quests? ehh +Kaimana barters: big places +[Newbie] (Advisor) Susankay: hi Nawlnsboy welcome +Kaimana barters: this one is LVL97, 165 damage, 4DEX 4STR 10 DAM 6Hit and vampiric, which is pretty awesome, and the aard swords I think are vorpal, but not vampiric, which I find to be more useful in the long run anyway +[Newbie] (Helper) Shaelynne: Hi Nawlnsboy +[Deputy] Daresia barters: level 100 aard swords are 300 damage. +Kaimana barters: it's served me well for the last 10 levels :) +[Deputy] Daresia barters: vampiric doesn't matter much compared to double damage +Huge Wang Dexx gossips 'In honor of the hardest working immortal on AARD - for the next five T0-T2s who come to 2se (of recall), five free item/weapon/armor enchants. I will cast resonate, solidify, and illuminate on the object. I can also cast enchant armor up to 3 times (upon request, but this raises level of item by one lever per casting unless it is already level 200 or above. This carries risk of destroying the item). I will not reimburse for enchant armor - request it at own risk. Note - if item has Hum, Invis, Glow flags set, I can not enchant further (this is default setting on AARD equipment). Ivar's Item Remodeling (run 2s4wn from recall) offers the service to flip the flags for a cost of 2 tps. Be sure to "read sign" at the shop to understand how to use the service. Do this at your own risk (I will not reimburse TPs). If item is "solidified, resonated, illuminated" already, I can not enchant it - apparently someone else has done so already.' +Kaimana barters: yeah, OP for the level isn't my style, and I know that as you go up it'll become less so, but for about 20 levels though you'll be a god, and then after that a ways you'll suck until you quest a bunch of times again +Kaimana barters: I just don't like that dynamic that much personally +(Group) Coelbren: '{-=Quest Time=-}' +Kaimana barters: I like the bow though diff --git a/logs/history.log b/logs/history.log new file mode 100644 index 0000000..8823270 --- /dev/null +++ b/logs/history.log @@ -0,0 +1,32 @@ +prompt +drink goblet +drink +score + +debug on +c 'create water +#echo $quest[timer] +debug off +rest +stand +lookl +look +porthome +d +eq +wear all +wear serenity +wear earth +compare serenity +put serenity backpack +look in bag +unkeep bag +e +drop bag +sac all +drop thieves +drop patch +#10 c 'remove curse' +drop all +i +quit diff --git a/src/char.tin b/src/char.tin new file mode 100644 index 0000000..1360783 --- /dev/null +++ b/src/char.tin @@ -0,0 +1,48 @@ +#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 diff --git a/src/gmcp.tin b/src/gmcp.tin new file mode 100644 index 0000000..131a02b --- /dev/null +++ b/src/gmcp.tin @@ -0,0 +1,61 @@ +#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; +} + +#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]}; + }; +} + +#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 diff --git a/src/init.tin b/src/init.tin new file mode 100644 index 0000000..5a4f47e --- /dev/null +++ b/src/init.tin @@ -0,0 +1,38 @@ +#class init kill +#class init open + +#ALIAS {do_on_connect} +{ + protocol gmcp sendchar; + quest time; +}; + +#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]} {ACTIVE<099>}; + prompt_statmon; + #class init kill +} + +#class init close diff --git a/src/prompt.tin b/src/prompt.tin new file mode 100644 index 0000000..94f4156 --- /dev/null +++ b/src/prompt.tin @@ -0,0 +1,39 @@ +#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}; +}; + diff --git a/src/quest.tin b/src/quest.tin new file mode 100644 index 0000000..0e353cb --- /dev/null +++ b/src/quest.tin @@ -0,0 +1,72 @@ +#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]} {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]} {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