Lone Wolf Development Forums  

Go Back   Lone Wolf Development Forums > Hero Lab Forums > HL - D&D 5th Edition SRD

Notices

Reply
 
Thread Tools Display Modes
daplunk
Senior Member
 
Join Date: Jan 2016
Location: Adelaide, Australia
Posts: 2,294

Old January 30th, 2016, 01:44 PM
Hi Everyone,

This is a listing of the scripts required to add the missing 5e feats into Hero Labs 5e SRD. This does not list the feat descriptions. You will need to copy those in from your PHB.

GREEN = Functional
ORANGE = Partially Functional
RED = Yet to be automated.

To complete this WE NEED YOUR HELP.

Please take the time to look over the scripts provided. If you have the required knowledge to resolve some of the Orange and Red entries please post them in the comments below so that the master list can be updated.

See below (post 3) for a tutorial on how to add these in using the Hero Labs. Adding these in requires only your time and no programming knowledge.

CURRENT STATUS
COMPLETE: 87%
PARTIALLY COMPLETE: 4%
PENDING COMPLETION: 0%

OUTSTANDING
Spell Sniper - Currently does not restrict spell choice to only those with attack roles. To be implemented after next official patch.

COMMUNITY FILES
These feats are all currently being added to a Community Pack that will be made available in the near future. We have replaced all known missing functionality from the PHB and are preparing the files for release. Watch the forum boards for an announcement.

Last edited by daplunk; February 20th, 2016 at 12:45 PM.
daplunk is offline   #1 Reply With Quote
daplunk
Senior Member
 
Join Date: Jan 2016
Location: Adelaide, Australia
Posts: 2,294

Old January 30th, 2016, 01:44 PM
FEAT LIST

PLAYER HAND BOOK

Actor
ADD Eval Scripts:
Quote:
hero.child[aCHA].field[aStartMod].value += 1
Alert
ADD Eval Scripts:
Quote:
#skillbonus[Initiative] = #skillbonus[Initiative] + 5
Athlete
ADD Array-Based Menu?
Row 0: Strength
Row 1: Dexterity
ADD Eval Scripts
Quote:
if (field[usrIndex].value = 0) then
hero.child[aSTR].field[aStartMod].value += 1
elseif (field[usrIndex].value = 1) then
hero.child[aDEX].field[aStartMod].value += 1
endif
Charger
TICK: Show in Activated Abilities List?
Activation Name: Activate Charge (+5 bonus attack / ignore if pushing)
Eval Script:
Quote:
doneif (field[abilActive].value = 0)
foreach pick in hero from BaseWep where "(wCategory.Melee)"
eachpick.field[atmBonus].value += 5
nexteach
Crossbow Expert
Just Text

Defensive Duelist
Add Expr-reqs:
Message: Dexterity 13 required.
Pre-requisite Expression:
Quote:
#attrvalue[aDEX] >= 13
Tick: is Error? and Highlight Panel?
Add Eval Scripts
Phase: Post-attributes
Script:
Quote:
doneif (tagis[Helper.ShowSpec] = 0)

doneif (tagis[Helper.Disable] <> 0)

doneif (field[abilActive].value = 0)

hero.childfound[ArmorClass].field[Bonus].value += hero.child[ProfBonus].field[tProfBonus].value
Duel Wielder
ADD Eval-Script:
Phase: Post-Attributes
Script:
Quote:
doneif (tagis[Helper.ShowSpec] = 0)

doneif (tagis[Helper.Disable] <> 0)

field[abValue].value = 0

foreach pick in hero from BaseWep where "(Hero.OffHand & !wProperty.TwoHanded)"
perform eachpick.assign[wProperty.Light]
field[abValue].value = 1
nexteach

hero.childfound[ArmorClass].field[Bonus].value += field[abValue].value
Dungeon Delver
Just Text

Durable
Add Eval Scripts: hero.child[aCON].field[aStartMod].value += 1

Elemental Adept
Coming in the community pack. Has dependencies on multiple files / things.

Great Weapon Master
TICK: Show in Activated Abilities List?
ADD Activation Name: Activate Great Weapon Master (-5 to hit, +10 dmg)
ADD Eval Script:
Quote:
doneif (field[abilActive].value = 0)
foreach pick in hero from BaseWep where "(wProperty.Heavy)"
eachpick.field[atmBonus].value -= 5
eachpick.field[dmmBonus].value += 10
nexteach
Healer
Just Text

Heavily Armored
Add Eval Scripts:
Quote:
hero.child[aSTR].field[Bonus].value += 1
perform hero.assign[ArmProfGrp.ArmorHeavy]
Add Expre-reqs
Message: Proficiency with medium armor required.
Is Error: Ticked
Highlight Panel: Ticket
Pre-requisite Expression:
Quote:
tagis[ArmProfGrp.ArmorMed] <> 0
Heavy Armor Master
ADD Eval Scripts:
Quote:
#skillbonus[aSTR] = #skillbonus[aSTR] + 1
ADD Expr-reqs:
Quote:
Message: Proficiency with heavy armor required.
Is Error: Ticked
Highlight Panel: Ticket
Pre-requisite Expression: tagis[ArmProfGrp.ArmorHeavy] <> 0
Inspiring Leader
Add Expr-reqs:
Message: Charisma 13 required.
Pre-requisite Expression: #attrvalue[aCHA] >= 13
Tick: is Error? and Highlight Panel?
Keen Mind
Add Eval Scripts: #skillbonus[aINT] = #skillbonus[aINT] + 1

Lightly Armored
ADD Array-Based Menu?
Row 0: Strength
Row 1: Dexterity
ADD Eval Scripts
Quote:
if (field[usrIndex].value = 0) then
hero.child[aSTR].field[aStartMod].value += 1
elseif (field[usrIndex].value = 1) then
hero.child[aDEX].field[aStartMod].value += 1
endif

perform hero.assign[ArmProfGrp.ArmorLight]
Linguist
Add Eval Scripts:
Quote:
#skillbonus[aINT] = #skillbonus[aINT] + 1
hero.child[resLangBck].field[resMax].value += 3
Lucky
Charge Information:
TICK: Show in Tracked Resources List?
Base Charges: 3
Usage period: /long rest
Mage Slayer
Text Only

Magic Initiate
Complete: Coming in the Community pack

Martial Adept
Implemented as part of the community pack.

Medium Armor Master
ADD Eval-Script:
Phase: Final
Priority: 1000
Script:
Quote:
field[abValue].value = 0
foreach pick in hero from BaseArmor where "ArmorClass.Medium & Helper.CurrArmor"
field[abValue].value = 1
perform eachpick.delete[Helper.StealthDis]
nexteach
hero.childfound[ArmorClass].field[tACDexMod].value = minimum(hero.childfound[ArmorClass].field[tACDexMod].value + field[abValue].value, hero.childfound[aDEX].field[aModBonus].value)
ADD Expr-reqs
Message: Proficiency with medium armor required.
Is Error: Ticked
Highlight Panel: Ticked
Pre-requisite Expression:
Quote:
tagis[Hero.ProfMedium] <> 0
Mobile
Add Eval Scripts:
Quote:
hero.child[Speed].field[tSpeed].value += 10
Moderately Armored
ADD Array-Based Menu?
Row 0: Strength
Row 1: Dexterity
ADD Eval Scripts
Quote:
if (field[usrIndex].value = 0) then
hero.child[aSTR].field[aStartMod].value += 1
elseif (field[usrIndex].value = 1) then
hero.child[aDEX].field[aStartMod].value += 1
endif

perform hero.assign[ArmProfGrp.ArmorMed]
perform hero.assign[ArmProfGrp.Shields]
ADD Expr-reqs:
Quote:
Message: Proficiency with heavy armor required.
Is Error: Ticked
Highlight Panel: Ticket
Pre-requisite Expression: tagis[ArmProfGrp.ArmorLight] <> 0
TO DO: Add Proficiency with Shields

Mounted Combatant
Text Only

Observant
ADD Array-Based Menu?
Row 0: Intelligence
Row 1: Wisdom
ADD Eval Scripts
Quote:
if (field[usrIndex].value = 0) then
hero.child[aINT].field[aStartMod].value += 1
elseif (field[usrIndex].value = 1) then
hero.child[aWIS].field[aStartMod].value += 1
endif

ADD Eval Script #2
Phase: Post-attributes, Priority: 1000
Note: This makes it so you can hover over the skill and see the passive skill.

Quote:
var sPPercept as string
var sPInvest as string
var iPPercept as number
var iPInvest as number

iPPercept = hero.child[skPercep].field[skAttrBon].value+10+5
iPInvest = hero.child[skInvestig].field[skAttrBon].value+10+5
sPPercept = "passive Perception (" & iPPercept & ") [+5 bonus to your passive Wisdom (Perception)]"
sPInvest = "passive Investigation ("& iPInvest &") [+5 bonus to your passive Intelligence (Investigation)]"

#situational[hero.child[skPercep], sPPercept,field[thingname].text]
#situational[hero.child[skInvestig], sPInvest,field[thingname].text]

~#situational[hero.child[skPercep], "+5 bonus to your passive Wisdom (Perception)",field[thingname].text]
~#situational[hero.child[skInvestig], "+5 bonus to your passive Intelligence (Investigate)",field[thingname].text]
Polearm Master
Text only

Resilient
ADD Array Based Menu
Quote:
Row 0: Strength
Row 1: Dexterity
Row 2: Constitution
Row 3: Intelligence
Row 4: Wisdom
Row 5: Charisma
ADD Eval Script
Quote:
if (field[usrIndex].value = 0) then
hero.child[aSTR].field[aStartMod].value += 1
perform hero.assign[ProfSave.svSTR]

elseif (field[usrIndex].value = 1) then
hero.child[aDEX].field[aStartMod].value += 1
perform hero.assign[ProfSave.svDEX]

elseif (field[usrIndex].value = 2) then
hero.child[aCON].field[aStartMod].value += 1
perform hero.assign[ProfSave.svCON]

elseif (field[usrIndex].value = 3) then
hero.child[aINT].field[aStartMod].value += 1
perform hero.assign[ProfSave.svINT]

elseif (field[usrIndex].value = 4) then
hero.child[aWIS].field[aStartMod].value += 1
perform hero.assign[ProfSave.svWIS]

elseif (field[usrIndex].value = 5) then
hero.child[aCHA].field[aStartMod].value += 1
perform hero.assign[ProfSave.svCHA]

endif
Ritual Caster
We have added the ability to select the 2 ritual spells.

To Do: Once initial spells are selected unlock ability to add higher level spells.

Savage Attacker
Text only

Sentinel
Text only

Sharpshooter
TICK Show in Activated Abilities List?
Activation Name: Activate Sharpshooter (-5 to hit, +10 dmg)
ADD Eval Script:
Quote:
doneif (field[abilActive].value = 0)
foreach pick in hero from BaseWep where "(wCategory.RangeProj | wCategory.RangeThrow | wCategory.Firearm)"
eachpick.field[atrBonus].value -= 5
eachpick.field[dmrBonus].value += 10
nexteach
Shield Master
Text only

Skilled
Implemented, coming as part of the community pack.

Skulker
Add Expr-reqs:
Message: Dexterity 13 required.
Pre-requisite Expression: #attrvalue[aDEX] >= 13
Tick: is Error? and Highlight Panel?
Spell Sniper
This is now complete and will be included in the community pack. Has a number of dependencies thus not copied here.
Currently does not restrict spell choice to only those with attack roles. To be implemented after next official patch.

Tavern Brawler
This is now complete and will be included in the community pack. Has a number of dependencies thus not copied here.

Tough
ADD Eval Script #1:
Phase: Post-Levels
Priority: 5000
Script:
Quote:
field[abValue].value += maximum(herofield[tHitDice].value, 1)*2
ADD Eval Script #2:
Phase: Post-Levels
Priority: 15000
Script:
Quote:
~if we've been disabled, get out now
doneif (tagis[Helper.Disable] <> 0)

herofield[tBonusHP].value += field[abValue].value
War Caster

ADD Pre-reqs
Message: You must be able to cast at least one spell.
Is Error: Ticked
Highlight Panel: Ticked
Pre-requisite Script:
Quote:
var iTotal as number

iTotal = iTotal + #levelcount[Bard]
iTotal = iTotal + #levelcount[Cleric]
iTotal = iTotal + #levelcount[Druid]
iTotal = iTotal + #levelcount[Sorcerer]
iTotal = iTotal + #levelcount[Warlock]
iTotal = iTotal + #levelcount[Wizard]

if (#levelcount[Paladin] >1) then
iTotal = iTotal + #levelcount[Paladin]
endif
if (#levelcount[Ranger] >1) then
iTotal = iTotal + #levelcount[Ranger]
endif
if (hero.child[RaceHelper].field[rSpAtk].value >0) then
iTotal = iTotal + 1
endif

@valid = 0
if (iTotal >0) then
@valid = 1
endif
Weapon Master
We have this functioning however it is quite involved. We will release this shortly as part of the community pack.

Last edited by daplunk; February 20th, 2016 at 12:42 PM.
daplunk is offline   #2 Reply With Quote
daplunk
Senior Member
 
Join Date: Jan 2016
Location: Adelaide, Australia
Posts: 2,294

Old January 30th, 2016, 01:46 PM
HOW TO ADD A CUSTOM FEAT

1. Open Hero Labs
2. Click Tools > Show Editor
3. Click File > New Data File
4. Select Feat tab.
5. Click New(Blank)
6. Enter Name
7. Enter Unique ID
8. Enter Summary Text
9. Enter Description Text
10. See post above for unique changes that need to be made.
11. Some of the common sections that require changes per above have been highlighted in pink.


12. This is what the Eval Scripts screen looks like.


13. This is what the Expr-reqs screen looks like.

Last edited by daplunk; January 31st, 2016 at 01:04 PM.
daplunk is offline   #3 Reply With Quote
MNBlockHead
Senior Member
 
Join Date: Dec 2014
Location: Twin Cities Area, MN, USA
Posts: 1,325

Old January 30th, 2016, 06:29 PM
Thanks for posting this. Very helpful!

RW Project: Dungeons & Dragons 5th edition homebrew world
Other Tools: CampaignCartographer, Cityographer, Dungeonographer, Evernote
MNBlockHead is offline   #4 Reply With Quote
Elindor
Member
 
Join Date: Feb 2013
Posts: 67

Old January 30th, 2016, 07:04 PM
Tough - cribbed from Hill Dwarf's Toughness

2 evaluation scripts, both Post-levels phase.
Priority 5000
Code:
field[abValue].value += maximum(herofield[tHitDice].value, 1)*2
Priority 15000
Code:
~if we've been disabled, get out now
doneif (tagis[Helper.Disable] <> 0)

herofield[tBonusHP].value += field[abValue].value

Last edited by Elindor; January 30th, 2016 at 07:05 PM. Reason: Incorrect feat name
Elindor is offline   #5 Reply With Quote
Elindor
Member
 
Join Date: Feb 2013
Posts: 67

Old January 30th, 2016, 10:21 PM
I've almost got Sharpshooter (and, by extension, Great Weapon Master) nailed for scripting the mechanics. You will need to check "Show in Activated Ability List" and set an Activation Name.

Code:
doneif (field[abilActive].value = 0)
foreach pick in hero from BaseWep where "(wCategory.RangeProj | wCategory.RangeThrow | wCategory.Firearm)"
eachpick.field[atrBonus].value -= 5
eachpick.field[dmrBonus].value += 10
nexteach
Now, when you have Sharpshooter selected, a check box will appear on the in play tab. Checking the box will change the attack/damage values automatically. It does not, however, test for proficiency - not sure how to do that yet.

For Great Weapon Master, replace (wCategory.RangeProj etc) with wProperty.Heavy, and use atmBonus and dmmBonus.

Once the Weapon Proficiency test is sorted, it should hopefully slot into the where expression - but for now, it'll do - just hold the honour system there.
Elindor is offline   #6 Reply With Quote
daplunk
Senior Member
 
Join Date: Jan 2016
Location: Adelaide, Australia
Posts: 2,294

Old January 31st, 2016, 12:32 AM
Thanks Elindor!

They both work wonderfully

If anyone has knowledge they can share please don't be shy!
daplunk is offline   #7 Reply With Quote
daplunk
Senior Member
 
Join Date: Jan 2016
Location: Adelaide, Australia
Posts: 2,294

Old January 31st, 2016, 12:54 AM
Quote:
Originally Posted by Elindor View Post
For Great Weapon Master, replace (wCategory.RangeProj etc) with wProperty.Heavy, and use atmBonus and dmmBonus.
Have you got this working? My attempts are failing No changes are being made to anything visible on the In-Play tab.

Quote:
doneif (field[abilActive].value = 0)
foreach pick in hero from BaseWep where "(wCategory.Heavy)"
eachpick.field[atmBonus].value -= 5
eachpick.field[dmmBonus].value += 10
nexteach

Last edited by daplunk; January 31st, 2016 at 01:10 AM.
daplunk is offline   #8 Reply With Quote
Elindor
Member
 
Join Date: Feb 2013
Posts: 67

Old January 31st, 2016, 01:14 AM
Here's the codeblock

Code:
doneif (field[abilActive].value = 0)

foreach pick in hero from BaseWep where "wProperty.Heavy"
eachpick.field[atmBonus].value -= 5
eachpick.field[dmmBonus].value += 10
nexteach
Elindor is offline   #9 Reply With Quote
daplunk
Senior Member
 
Join Date: Jan 2016
Location: Adelaide, Australia
Posts: 2,294

Old January 31st, 2016, 01:17 AM
Got it. Change wCategory.Heavy to wProperty.Heavy

Quote:
doneif (field[abilActive].value = 0)
foreach pick in hero from BaseWep where "(wProperty.Heavy)"
eachpick.field[atmBonus].value -= 5
eachpick.field[dmmBonus].value += 10
nexteach
daplunk is offline   #10 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 02:39 AM.


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