Code: Select all
#ALIAS Roll {
#T+ Roller
#Reset Roller
#var StatsMin ""
#loop 8 {
#var Temp %ismember( %pick( %concat( "p:Select minimum ", %item( @StatOrder, %i)), "o:1", @StatToNum), @StatToNum)
#if (@Temp = 0) {
#T- Roller
#abort 1
}
#var StatsMin %additem( @Temp, @StatsMin)
}
#status @NoRolls@BestRolls
}
#CLASS {Roller} {disable}
#VAR Rolls {} {}
#VAR StatToNum {bad|mundane|average|fair|good|mighty|heroic|perfect} {bad|mundane|average|fair|good|mighty|heroic|perfect}
#VAR StatOrder {str|pow|dex|int|agi|wis|con|cha} {str|pow|dex|int|agi|wis|con|cha}
#VAR StatsMin {1|1|1|1|1|1|1|1}
#VAR NoRolls {0} {0}
#VAR BestDiff {56} {56}
#VAR BestRolls {} {}
#VAR Num {0} {0}
#VAR Temp {}
#TRIGGER {^Agility:} {
#var Rolls %additem( %ismember( %word( %trigger, 2), @StatToNum), @Rolls)
#var Rolls %additem( %ismember( %word( %trigger, 4), @StatToNum), @Rolls)
}
#TRIGGER {^Constitution:} {
#var Rolls %additem( %ismember( %word( %trigger, 2), @StatToNum), @Rolls)
#var Rolls %additem( %ismember( %word( %trigger, 4), @StatToNum), @Rolls)
}
#TRIGGER {^Dexterity:} {
#var Rolls %additem( %ismember( %word( %trigger, 2), @StatToNum), @Rolls)
#var Rolls %additem( %ismember( %word( %trigger, 4), @StatToNum), @Rolls)
}
#TRIGGER {^Strength:} {
#var Rolls ""
#var Rolls %additem( %ismember( %word( %trigger, 2), @StatToNum), @Rolls)
#var Rolls %additem( %ismember( %word( %trigger, 4), @StatToNum), @Rolls)
}
#TRIGGER {^You may choose to reroll your character at this time.} {
#var Num 0
#loop 8 {
#var Temp %eval( %item( %sort( @StatsMin, 1), %i) - %item( %sort( @Rolls, 1), %i))
#if (@Temp > 0) {#add Num @Temp}
}
#add NoRolls 1
#if (@BestDiff > @Num) {
#var BestDiff @Num
#var BestRolls ""
#loop 8 {#var BestRolls %concat( @BestRolls, " ", %left( %item( @StatToNum, %item( %sort( @Rolls, 1), %i)), 3))}
}
#if (@Num > 3) {
#echo %cr@Num "notchs difference between actually rolls and minimum requirements. Rerolling."
y
} {
#var Temp ""
#loop 8 {#additem Temp %item( @StatsMin, %i)%item( @StatOrder, %i)}
#var Temp %sort( @Temp, 1)
#var Temp %subregex( @Temp, "\d", "")
#loop 7,1 {
#var Num 8
#while (@Num > %i) {
#if (%item( @Rolls, %ismember( %item( @Temp, %i), @StatOrder)) < %item( @Rolls, %ismember( %item( @Temp, @Num), @StatOrder))) {
%item( @Temp, %i) %item( @Temp, @Num)
#abort 1
}
#add Num -1
}
}
n
#loop 8,1 {
#var Num %eval( %item( @StatsMin, %ismember( %item( @Temp, %i), @StatOrder)) - %item( @Rolls, %ismember( %item( @Temp, %i), @StatOrder)))
#if (@Num > 0) {#loop @Num {%item( @Temp, %i)}}
}
#beep 16
#T- Roller
}
}
#TRIGGER {^That swap would fail the minimum class requirements. Please try again.} {y}
#CLASS 0
Just connect to the mud, type Roll, then start the character generation process. You will be asked to select your minimum stat requirements.