Lone Wolf Development Forums  

Go Back   Lone Wolf Development Forums > Hero Lab Forums > HL - User Projects
Register FAQ Community Today's Posts Search

Notices

Reply
 
Thread Tools Display Modes
Mauron
Junior Member
 
Join Date: Jul 2013
Posts: 26

Old June 7th, 2014, 03:07 PM
I've adapted the Farscape d20 rules to Hero Lab.

In order to make everything work properly, I had to create a new tab for Control (used for roll bonuses, rerolls, and powers).

It does not work with the community created 3.5 content, and I do not intend to change that. I recommend duplicating the d20 system for this purpose.

Download link This should download on a click now. Let me know if it gives you trouble.

Bugs:
- Classes show d0 as hit die, due to hit die being race based.
- Mystic: Wisdom of 10 required. (Minor at best, since Mystics benefit from high Wisdom)
- Intimidate: Only Charisma modifier is included. Depending on the situation, Strength may be used instead.
- An alignment must be chosen.
- Energy and stun damage cannot be chosen as a type.
- Control cannot be tracked in Hero Lab.
- Max HP at additional levels does not currently work.

Incomplete:
- Most of the text.

Last edited by Mauron; June 29th, 2014 at 04:34 PM. Reason: added a bug, removed a bug.
Mauron is offline   #1 Reply With Quote
Mauron
Junior Member
 
Join Date: Jul 2013
Posts: 26

Old June 23rd, 2014, 03:08 PM
I've updated the files with the following:

- Class text added.
- Feat text added.
- Aristocrat specials now show. (they were on the D&D NPC class by mistake.)
- Fixed various feats found in D&D to match how they work in Farscape.
- Added some Rogue specials that were missing.
- Control tab shows as invalid when a control roll is outside the acceptable range.
- An HP calculation bug was fixed.

I realize not many people are interested in the Farscape system, but is anyone interested in how I made some of these changes?
Mauron is offline   #2 Reply With Quote
SAbel
Senior Member
 
Join Date: Jul 2007
Location: Walbridge, Ohio
Posts: 767

Old June 26th, 2014, 07:44 AM
I think that it would be very helpful to people if you had explanations for what you did to adapt material.
SAbel is offline   #3 Reply With Quote
Mauron
Junior Member
 
Join Date: Jul 2013
Posts: 26

Old June 29th, 2014, 04:37 PM
Control

Control was the trickiest part. D&D doesn't have an equivalent, so I had to experiment with ways to handle it. First I found that it was possible to make a new panel with my own data file. With some fiddling, I got it to display a level number and die type with racial modifier. This was far from ideal, but for a long time it was my solution. I couldn't expand the BaseClass component, which is what control would optimally be part of.

Races would assign a tag from the cRaceMod group (valid values 0-3, 0 being treated as -1). Class levels would have a tag from the cDieType group (valid values 6, 8, and 12).

Eventually I stumbled on to the root access functionality (this.root.field[example].value). With that, as long as my control data was bootstrapped to a class level, I could access the class level's data. With a little testing, I got the class name onto the output with the level number and control die type. A thing called ControlVal had to be bootstrapped to every class level thing, and Helper.FixedHP had to be assigned if applicable (Control rolls should probably be max whenever HP is).

With that, I expanded my control component to contain an incrementer and calculated value. It also checks the entered number against the die type, as well as a 0 value.

The final step was getting the total. I needed a new thing on the control panel, and I needed it there all the time, or it would throw errors. I replaced Charisma with my own version that had my ControlTot thing bootstrapped. Hero Lab would then add this at character creation.

Class Defense

This is the only thing I have set as a house rule in the core files. Farscape gave you an average of your multiclass defense bonuses. Having played Star Wars d20, I adopted their rule of -2 to each additional class (which translates into a +2 bonus at first level, essentially). The commented procedure is below.

Code:
<procedure id="clsdefense" scripttype="eval"><![CDATA[
	~ Armor replaces class defense bonus.
	doneif (hero.tagcount[Hero.EquipArmor] <> 0)
	var defense as number
	~ According to Farscape, there's actually supposed to be an average of the bonuses.
	~ I found that too penalizing, so I borrowed from Star Wars d20 (-2 penalty for additional base classes.
	~ In hero lab terms, I gave a +2 to the first level chosen.
	if (this.tagcount[Helper.FirstLevel] <> 0) then
		defense = 2
	else
		defense = 0
	endif
	if (this.tagcount[User.DefGood] <> 0) then
		if (this.field[cThisIndex].value = 1) then
			defense += 2
		elseif (this.field[cThisIndex].value = 2) then
			defense += 1
		elseif (this.field[cThisIndex].value = 4) then
			defense += 1
		elseif (this.field[cThisIndex].value = 6) then
			defense += 1
		elseif (this.field[cThisIndex].value = 8) then
			defense += 1
		elseif (this.field[cThisIndex].value = 10) then
			defense += 1
		elseif (this.field[cThisIndex].value = 12) then
			defense += 1
		elseif (this.field[cThisIndex].value = 14) then
			defense += 1
		elseif (this.field[cThisIndex].value = 16) then
			defense += 1
		elseif (this.field[cThisIndex].value = 18) then
			defense += 1
		elseif (this.field[cThisIndex].value = 20) then
			defense += 1
		endif
	elseif (this.tagcount[User.DefMedium] <> 0) then
		if (this.field[cThisIndex].value = 1) then
			defense += 1
		elseif (this.field[cThisIndex].value = 2) then
			defense += 1
		elseif (this.field[cThisIndex].value = 5) then
			defense += 1
		elseif (this.field[cThisIndex].value = 7) then
			defense += 1
		elseif (this.field[cThisIndex].value = 10) then
			defense += 1
		elseif (this.field[cThisIndex].value = 12) then
			defense += 1
		elseif (this.field[cThisIndex].value = 15) then
			defense += 1
		elseif (this.field[cThisIndex].value = 17) then
			defense += 1
		elseif (this.field[cThisIndex].value = 20) then
			defense += 1
		endif
	elseif (this.tagcount[User.DefPoor] <> 0) then
		if (this.field[cThisIndex].value = 3) then
			defense += 1
		elseif (this.field[cThisIndex].value = 6) then
			defense += 1
		elseif (this.field[cThisIndex].value = 9) then
			defense += 1
		elseif (this.field[cThisIndex].value = 12) then
			defense += 1
		elseif (this.field[cThisIndex].value = 15) then
			defense += 1
		elseif (this.field[cThisIndex].value = 18) then
			defense += 1
		endif
	endif
	~ There isn't a field for class defense bonus, so I put it in Misc.
	hero.child[ArmorClass].field[tACMisc].value += defense
]]></procedure>
Racial HP

According to the Farscape rules, your hit die comes from your race, not your class. Class gives a modifier, so the total calculation is racedie + classmod + conmod. I created a tag group called cRaceHP, with minimum and maximum values of 8 and 12. These are assigned to the race, and forwarded to the hero. A procedure, detailed below, is called by the class helper.

Code:
var hp as number
call racialhp
this.field[cHDSides].value = hp

<procedure id="racialhp" scripttype="eval"><![CDATA[
	var hp as number
	if (hero.tagvalue[cRaceHP.?] <> 0) then
		hp = hero.tagvalue[cRaceHP.?]
	else
		hp = 1
	endif
]]></procedure>
Backgrounds

Backgrounds are chosen at first level, and give certain benefits based on what the hero has done in the past. They are bought with skill points. A character may pick up to two backgrounds.

I set them up as skills. Each background has an eval script that deletes Helper.SklErRanks (many cost more than 4 ranks), and assigns User.Background to the hero. If there are more than two User.Background tags, it throws an error.

The eval rule checks if the hero qualifies for a discounted purchase (most are cheaper for some classes), and how many ranks are put into it. If the number of ranks is equal to the cost of the skill, it is valid.

I think that's all of the major wrinkles I went through with the files.
Mauron is offline   #4 Reply With Quote
Aaron
Senior Member
 
Join Date: Oct 2011
Posts: 6,793

Old July 3rd, 2014, 02:12 PM
Good explanation, and cleverly done!
Aaron is offline   #5 Reply With Quote
Mauron
Junior Member
 
Join Date: Jul 2013
Posts: 26

Old July 3rd, 2014, 08:34 PM
Thanks Aaron. I forgot to mention, I added my own sheet (a copy of the default included in the source folder) that includes control. That was basically a copy and paste of the HP section, with some renaming.

After I'm done with the text I will probably attempt Babylon 5 or Star Wars d20.
Mauron is offline   #6 Reply With Quote
Reply


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 03:49 PM.


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