Lone Wolf Development Forums (http://forums.wolflair.com/index.php)
-   HL - Pathfinder Roleplaying Game (http://forums.wolflair.com/forumdisplay.php?f=62)
-   -   Having trouble using the ROUND function. (http://forums.wolflair.com/showthread.php?t=59700)

 Bob G December 4th, 2017 01:12 PM

Having trouble using the ROUND function.

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

 Mathias December 4th, 2017 01:48 PM

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`

 Bob G December 4th, 2017 09:10 PM

Quote:
 Originally Posted by Mathias (Post 259825) 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

 Bob G December 7th, 2017 10:31 PM

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?

 Farling December 8th, 2017 12:51 AM

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

 EightBitz December 8th, 2017 04:13 AM

Quote:
 Originally Posted by Bob G (Post 259976) 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.

 All times are GMT -8. The time now is 02:14 AM.