• Please note: In an effort to ensure that all of our users feel welcome on our forums, we’ve updated our forum rules. You can review the updated rules here: http://forums.wolflair.com/showthread.php?t=5528.

    If a fellow Community member is not following the forum rules, please report the post by clicking the Report button (the red yield sign on the left) located on every post. This will notify the moderators directly. If you have any questions about these new rules, please contact support@wolflair.com.

    - The Lone Wolf Development Team

World is Square house rules

For the Weapon Focus, oddly enough, it gives me the error as soon as I choose Heavy Blades int he dropdown - even if that is the only thing I've done in a new blank portfolio. Let me check and see if I've got some funky .user files messing with it and get back to you.
 
Okay, so I identified what .user file was conflicting. It was one where I created a replacement Flame Blade weapon (replacing wFlameBlad) which IS a part of Heavy Blades. Not sure why that would affect the weapon focus feat's coding, but it certainly seems to.

I'll throw it in an attachment so you can maybe get an idea of what's missing from it or whatever. I'll be honest, it was a while ago, and I don't even remember what I was trying to do with this weapon change. Pretty sure I never even used it on a character. But it might provide some insight as to why it triggers this particular error. (I think a previous post had something making the same error).
 

Attachments

Mild bug:

I just tried to build a Kineticist with these rules, and my Kinetic Blade isn't showing the Weapon Finesse bonus. My Kinetic Blade is set to "Light Weapon", my World Is Square Finesse Weapon Attack Attribute is set to Dexterity, but I'm showing +9/+4 in my Weapon. If I remove Enable all World is Square rules, and add Weapon Finesse as a feat, it shows +16/+11.
 
Hmm. Okay, I'll look into it. It'd be helpful if you could please attach a .por demoing the bug so I can poke at it.
 
Well, I've identified the cause of the problem.

The script that assigns which ability score to use with finesse weapons looks like this:


Code:
doneif (field[usrChosen1].ischosen = 0)

perform field[usrChosen1].chosen.pulltags[MelAttOver.?]

foreach pick in hero from BaseWep where "wCategory.Melee & (wClass.Light | Helper.Finesse)"
perform eachpick.pushtags[MelAttOver.?]
nexteach

The culprit is the foreach line, I believe. Kinetic Blade and Kinetic Whip do not appear in the list of items to evaluate because they lack the tag Component.BaseWep.

Obviously the regular Weapon Finesse feat is applying to them correctly, so I thought I'd go look at its code. The feat itself just assigns Hero.Finesse, which presumably triggers a script someplace else. I'll be jiggered if I could locate that script, though. I spent ages poking around in Procedures looking for it. It might be hard-coded into HL.

I'll keep poking at it. Maybe if I add a second foreach loop targeting BaseEquip? They've got that tag.
 
Another minor bug...

Feral Combat Training (the feat) always errors now. Seems that it's not Trained to look at Weapon Foci in a group. :P
 
Well, I've been working on this and just pushed out a new version that I believe fixes all the reported bugs to date. Changes:

  • Suppressed "Rules Changes" in statblock output
  • Made the Finesse Weapon Attack Attribute display your choice in statblock specials
  • Precluded the stock Feral Combat Training and replaced it with a version that understands the WiS modifications. It works identically to the regular one except it doesn't throw errors due to the weapon focus combination.
  • Incorporated Fuzzy's flame blade fix
  • Fixed the kineticist blast (awkwardly)

Fuzzy, I just copied and pasted the XML from your .user file into mine and changed the ID to wWiSFlamBlad. You may need to remove your local FlameBladeFix.user to prevent errors. Sorry I didn't see your post earlier! I'm not sure how I missed that. Anyway, it's integrated now.

After struggling with it for hours, the only way I found to get Kineticist Blast attack values to calculate correctly when using Dexterity for the attack attribute was to assign Hero.Finesse to the hero when the user selects Dexterity as the attack attribute. I just couldn't figure out how to get at the Kineticist Whip/Blade picks to apply MelAttOver to them. They really ought to appear in Component.BaseWep. This feels like an inelegant solution to me, but it does work.
 
You're awesome Martin, thanks for the fixes. I have a few more if you have time you want to spend on them... :P

Dazzling Display, Shatter Defenses. These error now since they require specific weapons rather than grouped weapons as a Weapon Focus prerequisite.
 
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
		[COLOR="Red"]perform hero.assignstr[eachthing.tagids[WepFocus.?, ","]][/COLOR]
	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?
 
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?
 
Last edited:
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.
 
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.?]
 
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.
 
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.
 
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.
 
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.
 
Back
Top