Compare commits

..

28 Commits

Author SHA1 Message Date
0aa1585d20 Update group.tin to account for casting CCC on yourself 2026-02-10 19:43:50 -06:00
9cf229c13d Handle new 'X dies.' lines from bleeding etc for spottimers 2026-02-10 19:26:05 -06:00
23a8f63cf5 Catch 'you' as group name for logging EFF drops 2026-02-10 19:25:01 -06:00
52a1dc887d route personal scripts through generic aliases for release 2026-02-10 19:23:48 -06:00
ebac9f0a2e fix snatch highlighting only capturing 'suddenly' 2026-02-10 19:23:23 -06:00
ed17aac7d3 add gmcp.writtenmap entrypoint to personal.tin to propagate elsewhere 2026-02-10 18:35:03 -06:00
7a94690aa3 add new groups client-side tag to group say avoidances 2026-02-08 19:16:32 -06:00
2a07972678 allow toggling groupmate EFF drop bell notificatiosn on/off with 'gs eff <on|off>' 2026-02-08 19:16:05 -06:00
720f9fbefe rm history log when restarting sessions 2026-02-08 18:39:31 -06:00
f331f44ba1 update GMCP SU event, handling XP tracking, #split updates, etc 2026-02-08 18:38:46 -06:00
06dfcf3771 update colors for new tt++ schemes, add map-door-text custom entry aliases, update some incident highlights 2026-02-08 18:37:22 -06:00
fbde7032f4 Filter our client-side strings improperly caught as group chat 2026-02-08 18:35:51 -06:00
204413c43b Werks/JobMarket mission tracking 2026-02-08 18:35:11 -06:00
974400b535 add some logs that highlight improperly to fix later 2026-02-08 18:34:56 -06:00
a4896e6fa3 update to tintin split drawn prompt 2026-02-08 18:34:20 -06:00
292ecc35c8 map-door-text custom matches updates 2026-02-08 18:33:37 -06:00
d3136323eb refactor spottimer colour logic, add a few spots 2026-02-08 18:31:57 -06:00
56a75ce844 add some highlights for contemplate output 2026-02-08 18:31:29 -06:00
a46a84b2c2 update database interactions formatting 2026-02-08 18:30:55 -06:00
d55caca81d update group shield and personal tpa monitoring 2026-02-08 18:30:37 -06:00
173522985d differentiate session/window tracking, add 'gsxp all' and 'xpreport' to show them 2026-02-08 18:29:28 -06:00
43d4197032 Update format on quota messages to be unified 2026-02-08 18:28:41 -06:00
442f2689a5 update main missions interface to account for new/changed 2026-02-08 18:27:49 -06:00
553ccd3755 cleanup old config files 2026-02-08 18:27:12 -06:00
2ac749da5b Sailing mission tracking and highlights 2026-02-08 18:26:50 -06:00
6dc547bd5d sausage mission format updates 2026-02-08 18:24:35 -06:00
58bfe8d557 new dead letter mission tracking 2026-02-08 18:23:32 -06:00
0a32a141be Ignore personal files, new split,events,chat_log function in config.tin 2026-02-08 18:22:55 -06:00
8 changed files with 67 additions and 115 deletions

3
.gitignore vendored
View File

@ -1,7 +1,8 @@
*.log *.log
notes/ notes/
src/quow.db.old src/quow.db.old
src/personal.tin
src/wamgsaver.tin src/wamgsaver.tin
src/constants.tin src/constants.tin
src/timer.tin src/timer.tin
src/testing.tin
src/gems.tin

View File

@ -21,7 +21,7 @@
#NOP ==[Incident Highlighting]== #NOP ==[Incident Highlighting]==
#SUB {^The%1grabs your%2. You struggle briefly but {she|he|it} wrests it from your grip and makes for a hasty retreat.} {<488><119>The<088><fca>%1<488><119>grabs your<088><afc>%2<488><119>. You struggle briefly but {she|he|it} wrests it from your grip and makes for a hasty retreat.}; #SUB {^The%1grabs your%2. You struggle briefly but {she|he|it} wrests it from your grip and makes for a hasty retreat.} {<488><119>The<088><fca>%1<488><119>grabs your<088><afc>%2<488><119>. You struggle briefly but {she|he|it} wrests it from your grip and makes for a hasty retreat.};
#SUB {^The%1and%2struggle briefly over%3before%4wrests it free%5$} {<488><119>The<088><fca>%1<488><119>and<088><fca>%2<488><119>struggle briefly over<088><afc>%3<488><119>before%4wrests it free%5}; #SUB {^The%1and%2struggle briefly over%3before%4wrests it free%5$} {<488><119>The<088><fca>%1<488><119>and<088><fca>%2<488><119>struggle briefly over<088><afc>%3<488><119>before%4wrests it free%5};
#SUB {^The%1suddenly snatches%2from%3and makes a run for it.$} {<488><119>The<088><188><fca>%1<488><119>suddenly snatches<088><188><afc>%2<488><119>from<088><188><fca>%3<488><119>and makes a run for it.}; #SUB {^The%1{suddenly snatches|snatches}%2from%3and makes a run for it.$} {<488><119>The<088><188><fca>%1<488><119>suddenly snatches<088><188><afc>%2<488><119>from<088><188><fca>%3<488><119>and makes a run for it.};
#HIGHLIGHT {^As %1 dies %2 drops %3 in shock.$} {green underscore}; #HIGHLIGHT {^As %1 dies %2 drops %3 in shock.$} {green underscore};
#HIGHLIGHT {^When you open the %1 you think you can hear a faint rumbling sound from it.$} {red underscore}; #HIGHLIGHT {^When you open the %1 you think you can hear a faint rumbling sound from it.$} {red underscore};
#HIGHLIGHT {^Whoops! You tried to carry too many things and fumbled %1} {red underscore}; #HIGHLIGHT {^Whoops! You tried to carry too many things and fumbled %1} {red underscore};

View File

@ -7,7 +7,7 @@
#ACTION {^%1 {tells|asks|exclaims to} %*you{|(?: in \w+)?}: %4} {#return @log_line_to_chat{};}; #ACTION {^%1 {tells|asks|exclaims to} %*you{|(?: in \w+)?}: %4} {#return @log_line_to_chat{};};
#nop Capture group chat best we can, but ignore any of our client-side [x] messages at least; #nop Capture group chat best we can, but ignore any of our client-side [x] messages at least;
#ACTION {^[{(?!(talker|spottimers|missions|speedwalk|sail|quota|mdt)).+}] %2{: | }%4} { #ACTION {^[{(?!(talker|spottimers|missions|speedwalk|sail|quota|mdt|group)).+}] %2{: | }%4} {
#nop %1 is group name, %3 is player name, %6 is message; #nop %1 is group name, %3 is player name, %6 is message;
#tab {%3}; #tab {%3};
#return @log_line_to_chat{}; #return @log_line_to_chat{};

View File

@ -1,107 +0,0 @@
#CLASS {gems} {kill};
#CLASS {gems} {open};
#var {gem} {};
#action {^It is a{n|} %2 quality %3 that could be cut into a %4 gem with one of the following forms: %5\; or could be tumbled and then cut into %6.$} {
#var {gem[quality]} {%2};
#var {gem[type]} {%3};
#var {gem[size]} {%4};
#nop ==[Parse the cut output]==;
#var {gem[cut_list]} {%5};
#nop What's our best available cut?;
#var {gem[best_cut]} {octagonal step};
#regex {$gem[cut_list]} {trillion} {#var {gem[best_cut]}{trillion};};
#regex {$gem[cut_list]} {pear\-shaped} {#var {gem[best_cut]}{pear-shaped};};
#regex {$gem[cut_list]} {cushion} {#var {gem[best_cut]} {cushion};};
#regex {$gem[cut_list]} {rose} {#var {gem[best_cut]} {rose};};
#regex {$gem[cut_list]} {marquise} {#var {gem[best_cut]} {marquise};};
#regex {$gem[cut_list]} {brilliant} {#var {gem[best_cut]} {brilliant};};
#regex {$gem[cut_list]} {heart\-shaped} {#var {gem[best_cut]} {heart-shaped};};
#regex {$gem[cut_list]} {oval\-shaped} {#var {gem[best_cut]} {oval-shaped};};
#regex {$gem[cut_list]} {teardrop} {#var {gem[best_cut]} {teardrop};};
#regex {$gem[cut_list]} {princess} {#var {gem[best_cut]} {princess};};
#if {$gem[active] == 1} {
#if {"$gem[size]" != "tiny"} {
#echo {<149>[Gemcrafting] Found a non-tiny gem, chipping and returning to crate<099>};
#send {chip uncut gem with gemcutting tool};
#send {put gems in crate};
#return;
};
#else {
#echo {<149>[Gemcrafting] Found a $gem[size] $gem[type], cutting to a $gem[best_cut] cut.<099>};
#send {cut uncut gem into a tiny $gem[best_cut] cut gem with gemcutting tools};
#send {grind gem on wheel};
#send {polish gem with cloth};
#send {put gems in crate};
};
#var {gem[active]} {0};
};
};
#alias {workgem} {
#nop Get a gem and appraise it;
#send {get uncut gem from crate in me};
#send {appraise uncut gem};
#var {gem[active]} {1};
};
#alias {workgem2} {
#send {get uncut gem from crate in me};
#send {appraise gem};
#action { cabochon cut} {
#unaction { cabochon cut};
#if {$gem[size] != "tiny"} {
#echo {<149>[Gemcrafting] Found a non-tiny gem, chipping and returning to crate<099>};
#send {chip gem with gemcutting tool};
#send {put gems in crate};
#return;
};
#echo {<149>[Gemcrafting] Found a $gem[size] $gem[type], cutting to a $gem[best_cut] cut.<099>};
#send {cut gem into a tiny $gem[best_cut] cut gem with gemcutting tools};
#send {put gems in crate};
};
#action {^It is a %1 quality %2 that could be cut into a %3 gem with one of the following forms: %4} {
#var {gem[quality]} {%1};
#var {gem[type]} {%2};
#var {gem[size]} {%3};
};
#action {octagonal step cut{, | }{[\w\s-,]+}} {
#var {gem[cut_list]} {%2};
#nop Turn the raw cuts into a proper list
#replace {gem[cut_list]} { cut} {};
#replace {gem[cut_list]} {, } {;};
#replace {gem[cut_list]} { and } {;};
#nop What's our best available cut?;
#var {gem[best_cut]} {octagonal step};
#regex {$gem[cut_list]} {trillion} {#var {gem[best_cut]}{trillion};};
#regex {$gem[cut_list]} {pear\-shaped} {#var {gem[best_cut]}{pear-shaped};};
#regex {$gem[cut_list]} {cushion} {#var {gem[best_cut]} {cushion};};
#regex {$gem[cut_list]} {rose} {#var {gem[best_cut]} {rose};};
#regex {$gem[cut_list]} {marquise} {#var {gem[best_cut]} {marquise};};
#regex {$gem[cut_list]} {brilliant} {#var {gem[best_cut]} {brilliant};};
#regex {$gem[cut_list]} {heart\-shaped} {#var {gem[best_cut]} {heart-shaped};};
#regex {$gem[cut_list]} {oval\-shaped} {#var {gem[best_cut]} {oval-shaped};};
#regex {$gem[cut_list]} {teardrop} {#var {gem[best_cut]} {teardrop};};
#regex {$gem[cut_list]} {princess} {#var {gem[best_cut]} {princess};};
};
};
#CLASS {gems} {close};

View File

@ -78,7 +78,7 @@
#nop reset prompt details; #nop reset prompt details;
#var {tpa_status} {0}; #var {tpa_status} {0};
#var {tpa_color} {0}; #var {tpa_color} {0};
#unvar {tpa_start} {0}; #var {tpa_start} {0};
#unvar {quota}; #unvar {quota};
#nop re-split the screen to wipe out the prompt from last character; #nop re-split the screen to wipe out the prompt from last character;
@ -118,7 +118,7 @@
#SYSTEM {rm logs/mapdoortext.log && touch logs/mapdoortext.log}; #SYSTEM {rm logs/mapdoortext.log && touch logs/mapdoortext.log};
#LINE {log} {logs/mapdoortext.log} {$GMCP[room][mdt]}; #LINE {log} {logs/mapdoortext.log} {$GMCP[room][mdt]};
/wamgsaver $GMCP[room][info][identifier]; /personal.gmcp.writtenmap $GMCP[room][info][identifier];
} }
#EVENT {IAC WILL GMCP} #EVENT {IAC WILL GMCP}

View File

@ -128,9 +128,21 @@
#variable {group_shields[$name][eff]} {0}; #variable {group_shields[$name][eff]} {0};
/writegroupshieldstofile; /writegroupshieldstofile;
#if {"$gs_eff_alerts" == "1"} {
#showme {\a}; #showme {\a};
#return @log_line_to_chat{}; };
#return @log_line_to_chat{};
};
#elseif {"$name" == "you"} {
#variable {group_shields[$GMCP[charinfo][capname]][eff]} {0};
/writegroupshieldstofile;
#if {"$gs_eff_alerts" == "1"} {
#showme {\a};
};
#return @log_line_to_chat{};
}; };
}; };
}; };
@ -194,7 +206,7 @@
}; };
}; };
}; };
#ACTION {^{(\w+\b\W*?){1,8}}'s skin is now as {elastic|thicky covered|hard} as it can get.$} { #ACTION {^{(\w+\b\W*?){1,8}}'s skin is now as {elastic|thickly covered|hard} as it can get.$} {
#variable {gs_dropname} {%1}; #variable {gs_dropname} {%1};
#replace {gs_dropname} { } {;}; #replace {gs_dropname} { } {;};
#foreach {$gs_dropname} {name} { #foreach {$gs_dropname} {name} {
@ -224,6 +236,14 @@
}; };
}; };
}; };
#ACTION {^With a brief flash of magic, your %1 skin falls away.$} {
#variable {group_shields[$GMCP[charinfo][capname]][ccc]} {0};
/writegroupshieldstofile;
};
#ACTION {^Your skin is {already|now} as {elastic|thickly covered|hard} as it can get.$} {
#variable {group_shields[$GMCP[charinfo][capname]][ccc]} {1};
/writegroupshieldstofile;
};
#nop KII #nop KII
@ -289,6 +309,26 @@
#showme {$gs_displayline}; #showme {$gs_displayline};
}; };
}; };
#VARIABLE {gs_eff_alerts} {1};
#ALIAS {^gs eff on$} {
#VARIABLE {gs_eff_alerts} {1};
#showme {<acf>[<fff>group<acf>] Group shield EFF bell alerts are <128>ON<acf>.<900>};
#showme {<acf>[<fff>group<acf>] Syntax: 'gs eff <on|off>'.<900>};
};
#ALIAS {^gs eff off$} {
#VARIABLE {gs_eff_alerts} {0};
#showme {<acf>[<fff>group<acf>] Group shield EFF bell alerts are <118>OFF<acf>.<900>};
#showme {<acf>[<fff>group<acf>] Syntax: 'gs eff <on|off>'.<900>};
};
#ALIAS {^gs eff$} {
#IF {"$gs_eff_alerts" == "0"} {
#showme {<acf>[<fff>group<acf>] Group shield EFF bell alerts are <118>OFF<acf>.<900>};
#showme {<acf>[<fff>group<acf>] Syntax: 'gs eff <on|off>'.<900>};
} {
#showme {<acf>[<fff>group<acf>] Group shield EFF bell alerts are <128>ON<acf>.<900>};
#showme {<acf>[<fff>group<acf>] Syntax: 'gs eff <on|off>'.<900>};
};
};
#FORMAT {shieldfile_lastwrite} {%T}; #FORMAT {shieldfile_lastwrite} {%T};
#MATH {shieldfile_lastwrite} {$shieldfile_lastwrite - 10}; #MATH {shieldfile_lastwrite} {$shieldfile_lastwrite - 10};

View File

@ -0,0 +1,8 @@
#class {personal} {kill};
#class {personal} {open};
#alias {/personal.gmcp.writtenmap %1} {
#nop empty shell;
};
#class {personal} {close};

View File

@ -350,6 +350,16 @@
}; };
}; };
#nop The smuggler captain dies.
#ACTION {^%1 dies.$} {
#foreach {*killtimers[]} {spot} {
#nop Force case insensitivity on the match due to "The" "A" being capitalized
#regex {%1} {%i$spot} {
#format {killtimers[$spot][time]} {%T};
};
};
};
#FUNCTION {write_spot} { #FUNCTION {write_spot} {
#var {spotname} {%1}; #var {spotname} {%1};
#var {spottime} {%2}; #var {spottime} {%2};