• Please note: In an effort to ensure that all of our users feel welcome on our forums, we’ve updated our forum rules. You can review the updated rules here: http://forums.wolflair.com/showthread.php?t=5528.

    If a fellow Community member is not following the forum rules, please report the post by clicking the Report button (the red yield sign on the left) located on every post. This will notify the moderators directly. If you have any questions about these new rules, please contact support@wolflair.com.

    - The Lone Wolf Development Team

Having trouble using the ROUND function.

Bob G

Well-known member
I’m writing an eval script that grants a 5’ bonus to base speed. This ability scales with level. The first 5’ bonus is granted at 1st level, and then again at every 4 class levels (i.e. 4th, 8th, 12th, etc.)
The script I first came up with was:

field[abValue].value += round(field[xTotalLev].value / 4, 0, -1) + 5

It worked for 1st level (changed 30’ speed to 35’ speed), but at 4th level the speed became 36’. So I changed the script to:

field[abValue].value += round(field[xTotalLev].value / 4, 0, -1) * 5

This worked at all levels except 1st.

Then I thought “What if I round up instead of down?”:
field[abValue].value += round(field[xTotalLev].value / 4, 0, 1) + 5

This resulted in a +6’ movement speed at 1st level.

field[abValue].value += round(field[xTotalLev].value / 4, 0, 1) * 5

This resulted in a 5’ increase at 1st level, but no increase at 4th.

What is the magic formula to make this work?
Thanks^7
 
At 1st level, level/4 = 0, but you want to add +5 at 1st level, so you want to add 1 to the total you're calculating, and then multiply it.

Code:
field[abValue].value += (round(field[xTotalLev].value / 4, 0, -1) + 1) * 5
 
At 1st level, level/4 = 0, but you want to add +5 at 1st level, so you want to add 1 to the total you're calculating, and then multiply it.

Code:
field[abValue].value += (round(field[xTotalLev].value / 4, 0, -1) + 1) * 5

Yes! That made it work. You guys must work on this a lot :D
 
Another Round function challenge for you all: Ability that grants +1 to perception skill at 3rd level, and gains an additional +1 at 7th, 11th, 15th and 19th levels.

field[abValue].value += round(field[xTotalLev].value-2 / 4, 0, -1) + 1

~Apply bonus to Perception skill
hero.child[skPercep].field[Bonus].value += field[abValue].value

Somehow, the bonus at 3rd level delivers a result of +3. I am baffled as to how it arrived at that result. Any ideas?
 
Well, I suspect it is doing 3 - 2 / 4; so that becomes 3 - 0.

You need the field...value - 2 in parentheses so that the minus gets done before the divide.

BODMAS
 
Another Round function challenge for you all: Ability that grants +1 to perception skill at 3rd level, and gains an additional +1 at 7th, 11th, 15th and 19th levels.

field[abValue].value += round(field[xTotalLev].value-2 / 4, 0, -1) + 1

~Apply bonus to Perception skill
hero.child[skPercep].field[Bonus].value += field[abValue].value

Somehow, the bonus at 3rd level delivers a result of +3. I am baffled as to how it arrived at that result. Any ideas?

I would also put the value you want to round in a variable first. Then round the variable. I've found that to eliminate a lot of issues.

Code:
var bonus as number
var roundbonus as number

bonus = field[xTotalLev].value-2
roundbonus = round(bonus/4,0,-1) + 1

field[abValue].value += roundbonus

~Apply bonus to Perception skill
hero.child[skPercep].field[Bonus].value += field[abValue].value

It's a few more lines, but it makes things more readable.
 
Back
Top