Senior Member
Join Date: May 2013
Posts: 240
|
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 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> Code:
WepFocus.wWiSFlmBl,WepFocus.wFlameBlad Code:
Invalid syntax for tag template Location: 'eval' script for Thing 'fwsWepFoc' (Eval Script '#1') near line 34 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? |
#91 |
Senior Member
Join Date: Jan 2007
Location: NW Arkansas
Posts: 1,321
|
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 Working on -
Last edited by TCArknight; February 14th, 2019 at 07:58 AM. |
#92 |
Junior Member
Join Date: Jun 2016
Posts: 7
|
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.
|
#93 |
Senior Member
Join Date: May 2013
Posts: 240
|
@TCArknight - Could do. I'll give it a try either tonight or tomorrow evening.
@Gragan - Thanks! |
#94 |
Senior Member
Volunteer Data File Contributor
Join Date: Jan 2010
Location: Chicago, IL (USA)
Posts: 10,729
|
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. |
#95 |
Senior Member
Join Date: May 2013
Posts: 240
|
I like that, Shadow, it's a lot simpler than what I was doing before. I'll give that a go for sure.
|
#96 |
Senior Member
Join Date: May 2013
Posts: 240
|
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. |
#97 |
Junior Member
Join Date: Feb 2019
Posts: 1
|
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.
|
#98 |
Senior Member
Join Date: May 2013
Posts: 240
|
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. |
#99 |
Senior Member
Join Date: May 2013
Posts: 240
|
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] 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. |
#100 |
Thread Tools | |
Display Modes | |
|
|