@program project.muf 1 1000000 d i $include $lib/rp $include $lib/alynna $def }tell }cat "Project" pretty tellme $def }otell }cat "Project" pretty tellhere lvar param : pr.view var target me @ mlevel 4 < if "" param ! then param @ not if "me" param ! then param @ resolve target ! target @ int 0 < if { "Ambiguous or unresolvable reference." }tell exit then { "Current project:" }tell { "Roll: " target @ "project/roll" getstat }tell { "Rolls made so far: " target @ "project/rcount" getstat }tell { "Successes: " target @ "project/successes" getstat "/" target @ "project/target" getstat }tell { "Time between rolls: " target @ "project/rolltime" getstat 86400.0 * timex }tell { "Time since project start: " systime target @ "project/start" getstat - timex }tell systime target @ "project/nextroll" getstat - 0 < if { "^RED^Time left till next roll: " systime target @ "project/nextroll" getstat - timex }tell else { "^GREEN^Time since your next roll was due: " systime target @ "project/nextroll" getstat - 0 swap - timex }tell then target @ "project/successes" getstat target @ "project/target" getstat >= if { "^GREEN^Project finished (" target @ "project/successes" getstat target @ "project/target" getstat 1.0 / / 100.0 * "%) since " target @ "project/finishtime" getstat "%X %x" swap timefmt " with " target @ "project/finishrolls" getstat " rolls." }tell else { "^RED^Project not finished (" target @ "project/successes" getstat target @ "project/target" getstat 1.0 / / 100.0 * "%)" }tell then ; : pr.new var ndays var targetsucc var roll var target me @ mlevel 4 < if { "Useless, unwise.." }tell exit then param @ "=" explode 4 = not if { "+project/new ===" }tell exit then resolve target ! roll ! toint targetsucc ! tofloat ndays ! target @ int 0 < if { "Ambiguous or unresolvable reference, argument 1" }tell exit then targetsucc @ 0 999 limit targetsucc ! ndays @ tofloat 0.0 90.0 limit ndays ! target @ "project/roll" roll @ setstat target @ "project/rcount" 0 setstat target @ "project/target" targetsucc @ setstat target @ "project/rolltime" ndays @ setstat target @ "project/start" systime setstat target @ "project/nextroll" 0 setstat target @ "project/successes" 0 setstat target @ name param ! pr.view target @ "You have begun a project, type +project to do your first roll and view its parameters." "Project" pretty ansi_notify ; : pr.roll var successes me @ "project/roll" getstat not if { "No project is set." }tell exit then systime me @ "project/nextroll" getstat - 0 < if { "Its not time to roll yet!" }tell "me" param ! pr.view exit then me @ me @ "project/roll" getstat roller successes ! me @ "project/rcount" over over getstat ++ setstat successes @ 0 < if { "You suffer a major setback on your project! (" successes @ "); " me @ "project/successes" getstat 2 / " of " me @ "project/successes" getstat " successes are lost!" }tell me @ "project/successes" over over getstat 2 / setstat else { "You make progress on your project. (" successes @ ")" }tell me @ "project/successes" over over getstat successes @ + setstat then me @ "project/nextroll" systime 86400.0 me @ "project/rolltime" getstat * + toint setstat me @ "project/successes" getstat me @ "project/target" getstat >= if me @ "project/finishtime" getstat not if me @ "project/finishtime" systime setstat me @ "project/finishrolls" me @ "project/rcount" getstat setstat then else me @ "project/finishtime" 0 setstat then pr.view ; : main param ! command @ tolower case "+project/new" smatch when pr.new end "+project/view" smatch when pr.view end "+project" smatch when pr.roll end endcase ; . c q