Lone Wolf Development Forums  

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

Notices

Reply
 
Thread Tools Display Modes
wdmartin
Senior Member
 
Join Date: May 2013
Posts: 240

Old February 13th, 2019, 08:30 PM
Well, I've spent some time looking at them, and there's nothing wrong with Dazzling Display or Shatter Defenses.

The system was set up so that when you pick a weapon group, it tags you as having Weapon Focus with every weapon in that group. That way feats that make you pick a weapon -- like Dazzling Display or Shatter Defenses -- would check for Weapon Focus, find it, and be happy.

That said, it was definitely broken. I was easily able to reproduce the error.

But it only happens with the "Heavy Blades" weapon group. Every other group works fine. If you pick "Axes" with Weapon Focus, then add Dazzling Display and pick "Greataxe", all is well. And so on.

It took several hours of debugging, but I've finally got a solid ID on the problem: it was caused by the Flame Blade contribution from Fuzzy.

And now that I read over Fuzzy's post more carefully, I think what Fuzzy was trying to say was that he was posting his code so I could maybe poke at it and figure out why it broke things for him.

But I misread that. I thought he was offering a fix for a problem, not a problem to be diagnosed, and so I integrated his code into my code base and pushed it out to everyone. Thus, you know, breaking things. For everyone.

*head desk*

In positive news, I have figured out why his Flame Blade modification breaks things! Here's the chunk of code that assigns Weapon Focus tags to the hero for every weapon in a group:

Code:
~ Get the list of weapons in the group.
var searchexp as string
searchexp = tagids[wFtrGroup.?,"|"]

~ Tag the hero has having weapon focus for each weapon
~ in order to satisfy pre-requisites for feats that
~ require weapon focus with a specific weapon.
foreach thing in BaseWep where searchexp
	if (eachthing.tagis[WepFocus.?] <> 0) then
		perform hero.assignstr[eachthing.tagids[WepFocus.?, ","]]
	endif
nexteach
Note the line highlighted in red. That's the one that broke.

And here is the code for the Flame Blade fix (the original XML):

Code:
<thing id="wWiSFlmBl" name="Flame Blade" description="." compset="Weapon" replaces="wFlameBlad">
<tag group="Helper" tag="FixSizeDmg" name="FixSizeDmg" abbrev="FixSizeDmg"/>
<tag group="Helper" tag="Helper" name="Helper" abbrev="Helper"/>
<tag group="Helper" tag="NoOutGear" name="NoOutGear" abbrev="NoOutGear"/>
<tag group="Helper" tag="NoSelect" name="NoSelect" abbrev="NoSelect"/>
<tag group="IsWeapon" tag="wScimitar" name="Scimitar" abbrev="Scimitar"/>
<tag group="SpInfo" tag="spFlamBla2" name="Flame Blade" abbrev="Flame Blade"/>
<tag group="wCategory" tag="Melee" name="Melee Weapon" abbrev="Melee"/>
<tag group="wClass" tag="OneHanded" name="One-Handed" abbrev="One-Handed"/>
<tag group="wCritMin" tag="20" name="20" abbrev="20"/>
<tag group="wCritMult" tag="2" name="2" abbrev="2"/>
<tag group="wFtrGroup" tag="BladeHeavy" name="Heavy Blades" abbrev="Heavy Blades"/>
<tag group="wMain" tag="1d8" name="1d8" abbrev="1d8"/>
<tag group="wMaxStrBon" tag="0"/>
<tag group="wProfReq" tag="Martial" name="Martial" abbrev="Martial"/>
<tag group="wType" tag="Fire" name="Fire" abbrev="Fire"/>
<tag group="Helper" tag="Finesse"/>
<tag group="wMaxStrPen" tag="0"/>
</thing>
This is fine as far as it goes; but when the script above executes, the red line assembles this tag expression when it comes to the new Flame Blade:

Code:
WepFocus.wWiSFlmBl,WepFocus.wFlameBlad
That's not a valid tag expression. It's supposed to be just one group.tag pair, like WepFocus.wGreatswd or such. Having two of them mashed together with a comma doesn't work. Hence, it generates this error:

Code:
Invalid syntax for tag template
Location: 'eval' script for Thing 'fwsWepFoc' (Eval Script '#1') near line 34
As a point of interest, this error message could have been a tad more specific. For one thing, the actual point of failure was on line 27, seven lines earlier than reported. For another, it would have been nice if it could report what the invalid tag template was rather than just that it existed. If it had reported the invalid tag template, I'd have known immediately to go look at the Flame Blade thing, instead of having to painstakingly disable and re-enable things.

Anyway! I'm not 100% sure why the call to tagids generates a tag expression that concatenates the two WepFocus tags together. But it's probably something to do with the configuration of the Flame Blade replacement.

I'm inclined just to remove the Flame Blade replacement and call it good, but having gotten this far I'm morbidly fascinated to know what would need to happen to fix it. Any suggestions? Aaron? Shadow? Fuzzy?
wdmartin is offline   #91 Reply With Quote
TCArknight
Senior Member
 
Join Date: Jan 2007
Location: NW Arkansas
Posts: 1,321

Old February 14th, 2019, 07:52 AM
If I understand it correctly, because the new Flame Blade replaces wFlameBlad it has to get the WepFocus tag for itself and the item it replaces so that anything which looks for tags on the old version will see the new version instead.

I’m not on laptop at home, but I think you need to do this where the assignstr statement is:

Code:
var tagString as string
var myTag as string
tagString = eachthing.tagids[WepFocus.?, "|"]

if (pos(tagString, “|”) = -1) then
  ~ there is just one WepFocus tag on item, so assign it to the hero
  perform hero.assignstr[tagString]
else
  ~ parse out each tag and assign them seperately
  <parsing code here>
  endif
That help?

Working on -
  • (SWADE) WIP Savage Rifts
  • Savage Rifts (Deluxe): Update link in This post
  • Star Trek Adventures: Update link in This post

Last edited by TCArknight; February 14th, 2019 at 07:58 AM.
TCArknight is offline   #92 Reply With Quote
Gragan
Junior Member
 
Join Date: Jun 2016
Posts: 7

Old February 14th, 2019, 08:49 AM
Sorry not been on the forums in a while. had totally forgot i had requested a feature, then came across it while googling, life eh? Just wanted to say thanks for all your hard work, only bug ive noticed so far is the unchained rogue one already mentioned. I dont make very unusual characters so some of the outlier bugs would probably miss me.
Gragan is offline   #93 Reply With Quote
wdmartin
Senior Member
 
Join Date: May 2013
Posts: 240

Old February 14th, 2019, 01:54 PM
@TCArknight - Could do. I'll give it a try either tonight or tomorrow evening.

@Gragan - Thanks!
wdmartin is offline   #94 Reply With Quote
ShadowChemosh
Senior Member
Volunteer Data File Contributor
 
Join Date: Jan 2010
Location: Chicago, IL (USA)
Posts: 10,729

Old February 14th, 2019, 03:28 PM
Keep in mind tags are much easier for HL to work with than strings. The simple way here is pull all the tags to yourself and then simply push them all at once to the hero. This way you don't have to deal with strings and don't care if you get one or two tags pulled.

The whole script becomes this:
Code:
~ Tag the hero has having weapon focus for each weapon
~ in order to satisfy pre-requisites for feats that
~ require weapon focus with a specific weapon.
foreach thing in BaseWep where tagids[wFtrGroup.?,"|"]
  
  ~ Pull each tag from the Thing to ourself
  perform eachthing.pulltags[WepFocus.?]
nexteach

~ Push all pulled tags to the hero
perform hero.pushtags[WepFocus.?]

Hero Lab Resources:
Pathfinder - d20pfsrd and Pathfinder Pack Setup
3.5 D&D (d20) - Community Server Setup
5E D&D - Community Server Setup
Hero Lab Help - Hero Lab FAQ, Editor Tutorials and Videos, Editor & Scripting Resources.
Created by the community for the community
- Realm Works kickstarter backer (Alpha Wolf) and Beta tester.
- d20 HL package volunteer editor.
ShadowChemosh is offline   #95 Reply With Quote
wdmartin
Senior Member
 
Join Date: May 2013
Posts: 240

Old February 14th, 2019, 03:53 PM
I like that, Shadow, it's a lot simpler than what I was doing before. I'll give that a go for sure.
wdmartin is offline   #96 Reply With Quote
wdmartin
Senior Member
 
Join Date: May 2013
Posts: 240

Old February 14th, 2019, 06:55 PM
Okay, Shadow's method worked beautifully.

Now I have to decide whether to keep Fuzzy's Flame Blade modification. On closer inspection, it's identical to the stock Flame Blade with two exceptions:

1) It's tagged with a wMaxStrPen of zero, meaning that the weapon doesn't apply any strength penalties to its damage rolls.

2) It has Helper.Finesse, allowing it to work with Weapon Finesse.

The first of these makes sense; the stock Flame Blade already has wMaxStrBon to prevent strength bonuses, and since it's a spell whose additional damage is based on caster level, it shouldn't take a penalty from Strength either.

The second is clearly a house rule. Per RAW, Flame Blades wield like a scimitar, and would not count as a light weapon. I think allowing them to work as Finesse weapons would be reasonable, but that's not official.

So I think I'll remove the Flame Blade modification, and put in a bug report on the strength penalty.

I'll push out fixes later.
wdmartin is offline   #97 Reply With Quote
Demoyn
Junior Member
 
Join Date: Feb 2019
Posts: 1

Old February 15th, 2019, 08:21 PM
I'm not 100% sure this is a bug, because it's plainly listed in the feat list when I turn WiS rules off (I'm pretty sure it's a bug) that they're forbidden by WiS rules, but when choosing a paladin with the tempered champion archetype weapon focus, greater weapon focus, weapon specialization, and greater weapon specialization are removed as options. I believe this is probably due to tempered champion requiring that you must choose the deity's favored weapon when selecting these feats and you can't do that when there are only weapon groups to choose from.
Demoyn is offline   #98 Reply With Quote
wdmartin
Senior Member
 
Join Date: May 2013
Posts: 240

Old February 19th, 2019, 11:55 AM
So I see. Yes, the archetype will need to be modified to add the modified feats to the list of valid bonus feats. I've been doing that sort of thing on a case-by-case basis as people request them, because there are so many archetypes these changes affect that I didn't really want to crawl through and rewrite all of them.

I'll take a look at that in the next few days.
wdmartin is offline   #99 Reply With Quote
wdmartin
Senior Member
 
Join Date: May 2013
Posts: 240

Old February 20th, 2019, 01:53 PM
Okay, I've been working on the Tempered Champion. The problem is that the World is Square variant versions of the Greater/Normal Weapon Focus/Specialization feats are not part of the list of bonus feats available to the archetype. All that really needs to happen, I think, is to add them to that list so that the player can pick them normally.

My first attempt at doing so involved assigning the tag fInclude.fwsWepFoc (and the ones for the other three) to the hero at First/1000 using a mechanic that checks for levels in Tempered Champion Paladin. But it didn't work; the fInclude tags were successfully assigned to the hero, but had no effect.

I went and looked up how Ranger fighting styles do it, which seems to revolve around assigning BonusFor.Whatever tags to the hero and the feat. So I tried to replicate that by:

1. Adding a custom tag BonusFor.wsTempChamp to Weapon Focus.
2. Compiling.

3. Reloading the data files.

4. Adding BonusFor.wsTempChamp to the other three feats.

5. Compiling.

6. Cursing because HL ran out of memory and dumped everything necessitating a restart. I don't know why this surprised me, it happens literally every other compile, like clockwork.

7. Restarting, compiling, loading.

8. Added a mechanic that runs this script at First/1000:

Code:
doneif (hero.tagis[source.WiSRules] + hero.tagis[source.WiSWeapons] = 0)

~ We're an NPC, and subject to feat taxes, so we're done
doneif (hero.tagis[WiSRules.PayFeatTax] <> 0)

~ Check if we're a Tempered Champion
doneif (hero.tagcount[ClassVary.arPalTmpCh] = 0)

perform hero.assign[BonusFor.wsTempChamp]
9. Compile, reload.

And the feats still don't show up. Not sure what I'm doing wrong.

I suppose I could make a new copy of the entire archetype just so I could go check the appropriate boxes on its bonus feats list, but A) I'd rather not, and B) it's marked as non-copyable and I don't want to violate term of use by copying it and then distributing the modified variant. Pretty sure that's not kosher.
wdmartin is offline   #100 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 11:58 PM.


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