@program +level.muf 1 10000 d i $include $lib/alynna $include $lib/rp $def }tell }cat me @ swap ansi_notify lvar lt : leveltable { 0 99 1 for 0 0 rot 1 for + repeat 10.0 * repeat }array ; : level2xp[ int/float:level -- float:xp ] var clxp var nlxp level @ tofloat level ! lt @ level @ int [] 100.0 + clxp ! lt @ level @ int ++ [] 100.0 + nlxp ! nlxp @ clxp @ - level @ level @ int - * clxp @ swap + ; : tieradj[ int:tiers -- float:bonus ] lt @ tiers @ [] ; : xp2level[ int/float:xp -- float:level ] var clint var nlint 0 99 1 for var! j lt @ j @ [] xp @ 100.0 - > if j @ -- clint ! j @ nlint ! xp @ 100.0 - lt @ clint @ [] - lt @ nlint @ [] lt @ clint @ [] - / clint @ + break then repeat ; : main var tiers var xp var level leveltable lt ! var! param me @ var! target param @ if me @ mlevel 4 >= if param @ resolve target ! target @ int 0 < if me @ target ! then then then target @ "professionlist" getstat dup if "," explode_array array_count else pop 0 then tiers ! target @ "xp" getstat tofloat xp ! target @ "level" getstat tofloat level ! { "Level information for " target @ ansi_unparseobj }cat header tellme { "^GREEN^" { "XP level: " xp @ xp2level 4 fchop 10 rj }cat 39 lj { "Raw XP: " xp @ xp2level level2xp 4 fchop 10 rj }cat 39 rj "^NORMAL^" }tell { "^GREEN^" { "Tier level: " tiers @ float 4 fchop 10 rj }cat 39 lj { "Tier XP: " tiers @ tieradj 4 fchop 10 rj }cat 39 rj "^NORMAL^" }tell { "^YELLOW^" { "Aggregate level: " xp @ tiers @ tieradj + xp2level 4 fchop 10 rj }cat 39 lj { "Aggregate XP: " xp @ tiers @ tieradj + 4 fchop 10 rj }cat 39 rj "^NORMAL^" }tell { "^CYAN^" { "Next tier: " tiers @ float 1.0 + 4 fchop 10 rj }cat 39 lj { "Tier worth: " tiers @ ++ 10.0 * 4 fchop 10 rj }cat 39 rj "^NORMAL^" }tell { "^CYAN^" { "Next level: " xp @ tiers @ tieradj + xp2level int float 1.0 + 4 fchop 10 rj }cat 39 lj { "XP required: " xp @ tiers @ tieradj + xp2level int float 1.0 + level2xp 4 fchop 10 rj }cat 39 rj "^NORMAL^" }tell { "^YELLOW^" { "Progress: " xp @ tiers @ tieradj + xp2level dup int - 100.0 * 4 fchop 10 rj "%" }cat 39 lj { "XP needed to level: " xp @ tiers @ tieradj + xp2level int float 1.0 + level2xp xp @ tiers @ tieradj + - 4 fchop 10 rj }cat 39 rj "^NORMAL^" }tell param @ "*#next5*" smatch if 2 5 1 for var! tmp { "^CYAN^" { "Next level(" tmp @ "): " xp @ tiers @ tieradj + xp2level int float tmp @ + 4 fchop 10 rj }cat 39 lj { "XP required(" tmp @ "): " xp @ tiers @ tieradj + xp2level int float tmp @ + level2xp 4 fchop 10 rj }cat 39 rj "^NORMAL^" }tell { "^YELLOW^" " " 39 rj { "XP needed(" tmp @ "): " xp @ tiers @ tieradj + xp2level int float tmp @ + level2xp xp @ tiers @ tieradj + - 4 fchop 10 rj }cat 39 rj "^NORMAL^" }tell repeat then { target @ "finish" getstat not if "Target not chargenned, values may be invalid - " then "+level 1.0" }cat footer tellme ; . c q