miegorengman Wanderer
Joined: 05 Sep 2008 Posts: 52
|
Posted: Fri Sep 02, 2022 6:26 am
using %switch to evaluate numerical values that fall within a range |
I play in a mud where skill levels are textual so you have to to track the numerical values yourself. I created an alias the displays the skill, the current count, and the textual skill level as follows.
--------------------------------------------
>>>>>>>>>>>>Bob's Skill Counts<<<<<<<<<<<<
--------------------------------------------
alchemy 390 Unskilled
channelling 661 Eminent
climbing 241 Good
detect_disease 200 Proficient
--------------------------------------------
in the example above, the numerical values all match the textual reference except alchemy....for some reason it just wants to display as unskilled, no idea why. I have the same issue with several different skills with many different numerical values
here is the code for the alias that creates this output.
Code: |
#show --------------------------------------------
#show >>>>>>>>>>>>Bob's Skill Counts<<<<<<<<<<<<
#show --------------------------------------------
#cr
#LOCAL $skillName,$skillImps,$BobRowNumber
#repeat %numitems(%countlist(@listOfSkills)) {
$BobRowNumber=($BobRowNumber+1)
$skillName=%item(@listOfSkills,$BobRowNumber)
$skillImps=@{$skillName}
#show %concat(%repeat(" ",24-%len(%concat($skillName," ",$skillImps))),$skillName," ",$skillImps," ",%switch($skillImps>0 AND $skillImps<4,"Unskilled",$skillImps>3 AND $skillImps<10,"A tyro",$skillImps>9 AND $skillImps<18,"A novice",$skillImps>17 AND $skillImps<30,"A beginner",$skillImps>29 AND $skillImps<50,"Poor",$skillImps>49 AND $skillImps<70,"Not very good",$skillImps>69 AND $skillImps<90,"Below Average",$skillImps>89 AND $skillImps<110,"Average",$skillImps>109 AND $skillImps<135,"Above Average",$skillImps>134 AND $skillImps<165,"Able",$skillImps>164 AND $skillImps<200,"Fair",$skillImps>199 AND $skillImps<240,"Proficient",$skillImps>239 AND $skillImps<285,"Good",$skillImps>284 AND $skillImps<335,"Adroit",$skillImps>334 AND $skillImps<390,"Very Good",$skillImps>389 AND $skillImps<450,"Excellent",$skillImps>449 AND $skillImps<515,"Expert",$skillImps>514 AND $skillImps<585,"Superb",$skillImps>584 AND $skillImps<660,"Master",$skillImps>659 AND $skillImps<740,"Eminent",$skillImps>739 AND $skillImps<825,"an Adept",$skillImps>824 AND $skillImps<920,"Renowned",$skillImps>919 AND $skillImps<1040,"High Master",$skillImps>1039 AND $skillImps<1200,"Consummate",$skillImps>1199 AND $skillImps<1400,"Virtuoso",$skillImps>1399 AND $skillImps<1700,"A Grandmaster",$skillImps>1699,"Legendary"))}
#cr
#show -------------------------------------------- |
with alchemy's value at 390, it should strip the switch at
Code: |
$skillImps>389 AND $skillImps<450,"Excellent" |
and output Excellent as the textual skill value
I also tried updating the %switch to read as follows
Code: |
%switch($skillImps>=1700,"Legendary",$skillImps>=1400,"A Grandmaster",$skillImps>=1200,"Virtuoso",$skillImps>=1040,"Consummate",$skillImps>=1000,"High 0Master",$skillImps>=825,"Renowned",$skillImps>=740,"an Adept",$skillImps>=660,"Eminent",$skillImps>=585,"Master",$skillImps>=515,"Superb",$skillImps>=450,"Expert",$skillImps>=390,"Excellent",$skillImps>=335,"Very Good",$skillImps>=285,"Adroit",$skillImps>=240,"Good",$skillImps>=200,"Proficient",$skillImps>=165,"Fair",$skillImps>=135,"Able",$skillImps>=110,"Above Average",$skillImps>=90,"Average",$skillImps>=70,"Below Average",$skillImps>=50,"Not very good",$skillImps>=30,"Poor",$skillImps>=18,"A beginner",$skillImps>=10,"A novice",$skillImps>=4,"A tyro",$skillImps>=1,"Unskilled")) |
the output is as follows
-------------------------
>>>Bob's Skill Counts<<<
-------------------------
alchemy 390 Legendary
channelling 661 Eminent
climbing 241 Good
detect_disease 200 Proficient
-------------------------
In this example the same skill is with the same numerical value is evaluating incorrectly, in this case on the opposite of the scale.
and ideas what I broke?
thanks for reading :) |
|