Lone Wolf Development Forums

Lone Wolf Development Forums (http://forums.wolflair.com/index.php)
-   HL - D&D 5th Edition SRD (http://forums.wolflair.com/forumdisplay.php?f=89)
-   -   Community Effort: Feats (http://forums.wolflair.com/showthread.php?t=54849)

daplunk January 30th, 2016 01:44 PM

Community Effort: Feats
 
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.

daplunk 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.

daplunk 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.
https://scontent.fmel1-1.fna.fbcdn.n...90912005_o.jpg

12. This is what the Eval Scripts screen looks like.
https://scontent.fmel1-1.fna.fbcdn.n...9d&oe=5743E6D7

13. This is what the Expr-reqs screen looks like.
https://scontent.fmel1-1.fna.fbcdn.n...10&oe=572B082D

MNBlockHead January 30th, 2016 06:29 PM

Thanks for posting this. Very helpful!

Elindor 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


Elindor 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.

daplunk January 31st, 2016 12:32 AM

Thanks Elindor!

They both work wonderfully :D

If anyone has knowledge they can share please don't be shy!

daplunk January 31st, 2016 12:54 AM

Quote:

Originally Posted by Elindor (Post 222971)
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

Elindor 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


daplunk 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


All times are GMT -8. The time now is 10:25 PM.

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