@program stats.ffa2rps.muf 1 10000 d i $include $lib/RP $include $lib/Alynna $def PARANOIA prog "?" flag? $def DIRS { "m" } array_make $def MODE_PROVE 0 $def MODE_ADJUST 1 $def MODE_SET 2 $def MODE_RESET 3 $def MODE_GIVEDP 4 $def MODE_GIVEXP 5 $def MODE_ADJUSTDP 6 $def MODE_ADJUSTXP 7 lvar mode lvar param : translate[ s:input -- s:output ] input @ "defense" "defence" subst "initiative" "init" subst ; : authorize[ s:stat -- b:granted ] stat @ { "{" { "System" "Stats" "Adjustable" }rpinfo mklist "|" array_join "}" }join smatch ; : resetter[ s:stat ] stat @ translate me @ stat @ me @ "$lib/rp" match "m" stat @ strcat call setstat ; : main param ! var mode command @ case "*adjust" smatch when MODE_ADJUST mode ! end "*reset" smatch when MODE_RESET mode ! end "*set" smatch when MODE_SET mode ! end "*prove" smatch when MODE_PROVE mode ! end "@givexp" smatch when MODE_GIVEXP mode ! end "@givedp" smatch when MODE_GIVEDP mode ! end "@adjustxp" smatch when MODE_ADJUSTXP mode ! end "@adjustdp" smatch when MODE_ADJUSTDP mode ! end default pop end endcase param @ "=" split tofloat var! value translate var! item mode @ MODE_PROVE = if var targetdir var tmp item @ not if "Invalid syntax, +prove " "Prove" pretty tellme exit then 0 targetdir ! me @ "/@rp/" item @ strcat getprop value ! value @ not if me @ "/@rp/" array_get_propdirs DIRS array_union foreach tmp ! me @ "/@rp/" tmp @ "/" item @ strcat strcat strcat getprop dup if value ! tmp @ targetdir ! else pop then repeat then value @ if { "<^YELLOW^*^GREEN^Official^YELLOW^*^NORMAL^> " me @ " proves that they posess a stat named ^CYAN^" item @ "^NORMAL^" " with a value of ^GREEN^" value @ "^NORMAL^" value @ int? if value @ 16777215 > if " (^YELLOW^Date value: " "%X %x" value @ timefmt ", " systime value @ - timex " ago^NORMAL^)" then then "." targetdir @ if " [Found in: " targetdir @ "]" then }cat tellhere else { "<^YELLOW^*^GREEN^Official^YELLOW^*^NORMAL^> " me @ " proves that they do ^RED^NOT^NORMAL^ possess any stats named ^CYAN^" item @ "^NORMAL^." }cat tellhere then exit then mode @ MODE_GIVEXP = if me @ mlevel 5 >= me @ "staff" power? or if else { "^RED^Permission denied." }tell exit then param @ not if "@givexp =" "Give" pretty tellme exit then item @ " " explode_array foreach pmatch var! target pop target @ int 0 < if { "I dont know who to give XP to! (" item @ ")" }cat "Give" pretty tellme continue then target @ "XP" over over getstat value @ + setstat value @ 0 < if #55 { "!wc #" me @ " takes " value @ fabs " XP from " target @ }cat force { "^RED^You take " value @ fabs " XP from " target @ }cat tellme target @ { "^RED^" me @ " takes " value @ fabs " XP from you." }cat ansi_notify else #55 { "!wc #" me @ " gives " value @ fabs " XP to " target @ }cat force { "^GREEN^You give " value @ fabs " XP to " target @ }cat tellme target @ { "^GREEN^" me @ " gives " value @ fabs " XP to you." }cat ansi_notify then repeat exit then mode @ MODE_GIVEDP = if me @ mlevel 5 >= me @ "staff" power? or if else { "^RED^Permission denied." }tell exit then param @ not if "@givedp =" "Give" pretty tellme exit then item @ " " explode_array foreach pmatch var! target pop target @ int 0 < if { "I dont know who to give XP to! (" item @ ")" }cat "Give" pretty tellme continue then target @ "DP" over over getstat value @ + setstat value @ 0 < if #55 { "!wc #" me @ " takes " value @ fabs " DP from " target @ }cat force { "^RED^You take " value @ fabs " DP from " target @ }cat tellme target @ { "^RED^" me @ " takes " value @ fabs " DP from you." }cat ansi_notify else #55 { "!wc #" me @ " gives " value @ fabs " DP to " target @ }cat force { "^GREEN^You give " value @ fabs " DP to " target @ }cat tellme target @ { "^GREEN^" me @ " gives " value @ fabs " DP to you." }cat ansi_notify then repeat exit then mode @ MODE_ADJUSTXP = if me @ mlevel 5 >= me @ "staff" power? or if else { "^RED^Permission denied." }tell exit then param @ not if "@adjustxp =" "Give" pretty tellme exit then item @ " " explode_array foreach pmatch var! target pop target @ int 0 < if { "I dont know who to adjust XP to! (" item @ ")" }cat "Give" pretty tellme continue then target @ 0 value @ - spendXP #55 { "!wc #" me @ " adjusts " value @ fabs " XP on " target @ }cat force { "^YELLOW^You adjust " value @ fabs " XP by " target @ }cat tellme target @ { "^YELLOW^" me @ " adjusts your XP by " value @ fabs "." }cat ansi_notify repeat exit then mode @ MODE_ADJUSTDP = if me @ mlevel 5 >= me @ "staff" power? or if else { "^RED^Permission denied." }tell exit then param @ not if "@givedp =" "Give" pretty tellme exit then item @ " " explode_array foreach pmatch var! target pop target @ int 0 < if { "I dont know who to give XP to! (" item @ ")" }cat "Give" pretty tellme continue then target @ 0 value @ - spendDP #55 { "!wc #" me @ " adjusts " value @ fabs " DP on " target @ }cat force { "^YELLOW^You adjust " value @ fabs " DP by " target @ }cat tellme target @ { "^YELLOW^" me @ " adjusts your DP by " value @ fabs "." }cat ansi_notify repeat exit then item @ if item @ authorize not if { "^RED^Permission denied." }tell exit then then mode @ MODE_RESET = if param @ not if { "System" "Stats" "Adjustable" }rpinfo mklist foreach swap pop resetter repeat paranoia if #55 { "!wc #" me @ " reset all their adjustable stats to their maximum." }cat force then { "^GREEN^All your adjustable stats have been reset to max. Staff was informed." }tell exit else item @ resetter paranoia if #55 { "!wc #" me @ " reset their (adjustable) " item @ " stat to its maximum." }cat force then { "^GREEN^Your adjustable stat ^CYAN^" item @ "^NORMAL^ has been reset to max. Staff was informed." }tell exit then then me @ item @ mode @ MODE_SET = if item @ not if "Invalid syntax, +set " "Set" pretty tellme exit then value @ else item @ not if "Invalid syntax, +adjust " "Set" pretty tellme exit then over over getstat value @ + then setstat { me @ ansi_name " has " mode @ MODE_SET = if "^YELLOW^set" else "^YELLOW^adjusted" then "^NORMAL^ their ^CYAN^" item @ mode @ MODE_SET = if "^NORMAL^ to ^GREEN^" value @ "^ ^." else "^NORMAL^ by ^GREEN^" value @ "^ ^ to ^GREEN^" me @ item @ getstat "^ ^." then }cat "FFa2.Stat" pretty tellhere ; . c q