Compare commits

..

2 Commits

Author SHA1 Message Date
b2c196cb34 config.tin 2026-02-08 11:40:38 -06:00
66a7c3985a Missions, loads of stuff 2026-02-08 10:53:19 -06:00
8 changed files with 114 additions and 66 deletions

3
.gitignore vendored
View File

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

View File

@ -21,7 +21,7 @@
#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%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%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.};
#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.};
#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 {^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{};};
#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|group)).+}] %2{: | }%4} {
#ACTION {^[{(?!(talker|spottimers|missions|speedwalk|sail|quota|mdt)).+}] %2{: | }%4} {
#nop %1 is group name, %3 is player name, %6 is message;
#tab {%3};
#return @log_line_to_chat{};

107
src/gems.tin Normal file
View File

@ -0,0 +1,107 @@
#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;
#var {tpa_status} {0};
#var {tpa_color} {0};
#var {tpa_start} {0};
#unvar {tpa_start} {0};
#unvar {quota};
#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};
#LINE {log} {logs/mapdoortext.log} {$GMCP[room][mdt]};
/personal.gmcp.writtenmap $GMCP[room][info][identifier];
/wamgsaver $GMCP[room][info][identifier];
}
#EVENT {IAC WILL GMCP}

View File

@ -128,21 +128,9 @@
#variable {group_shields[$name][eff]} {0};
/writegroupshieldstofile;
#if {"$gs_eff_alerts" == "1"} {
#showme {\a};
};
#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{};
};
};
};
@ -206,7 +194,7 @@
};
};
};
#ACTION {^{(\w+\b\W*?){1,8}}'s skin is now as {elastic|thickly covered|hard} as it can get.$} {
#ACTION {^{(\w+\b\W*?){1,8}}'s skin is now as {elastic|thicky covered|hard} as it can get.$} {
#variable {gs_dropname} {%1};
#replace {gs_dropname} { } {;};
#foreach {$gs_dropname} {name} {
@ -236,14 +224,6 @@
};
};
};
#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
@ -309,26 +289,6 @@
#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};
#MATH {shieldfile_lastwrite} {$shieldfile_lastwrite - 10};

View File

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

View File

@ -350,16 +350,6 @@
};
};
#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} {
#var {spotname} {%1};
#var {spottime} {%2};