Lone Wolf Development Forums  

Go Back   Lone Wolf Development Forums > Hero Lab Forums > HL - Pathfinder Roleplaying Game

Notices

Reply
 
Thread Tools Display Modes
Bob G
Member
 
Join Date: Nov 2017
Location: Trafford, PA, USA
Posts: 79

Old December 4th, 2017, 12:12 PM
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
Bob G is offline   #1 Reply With Quote
Mathias
Senior Member
Lone Wolf Staff
 
Join Date: May 2005
Posts: 12,173

Old December 4th, 2017, 12: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
Mathias is offline   #2 Reply With Quote
Bob G
Member
 
Join Date: Nov 2017
Location: Trafford, PA, USA
Posts: 79

Old December 4th, 2017, 08:10 PM
Quote:
Originally Posted by Mathias View Post
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
Bob G is offline   #3 Reply With Quote
Bob G
Member
 
Join Date: Nov 2017
Location: Trafford, PA, USA
Posts: 79

Old December 7th, 2017, 09: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?
Bob G is offline   #4 Reply With Quote
Farling
Senior Member
 
Join Date: Mar 2013
Location: Greater London, UK
Posts: 1,509

Old December 7th, 2017, 11:51 PM
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

Farling

Author of the CSV2RW tool (http://forums.wolflair.com/showthread.php?t=58156) and the RW Output tool (http://forums.wolflair.com/showthread.php?t=59981)
Farling is offline   #5 Reply With Quote
EightBitz
Senior Member
 
Join Date: May 2013
Posts: 1,229

Old December 8th, 2017, 03:13 AM
Quote:
Originally Posted by Bob G View Post
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.
EightBitz is offline   #6 Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -8. The time now is 09:13 AM.


Powered by vBulletin® - Copyright ©2000 - 2018, vBulletin Solutions, Inc.
wolflair.com copyright ©1998-2016 Lone Wolf Development, Inc. View our Privacy Policy here.