Lone Wolf Development Forums  

Go Back   Lone Wolf Development Forums > Hero Lab Forums > HL - Pathfinder Roleplaying Game
Register FAQ Community Today's Posts Search

Notices

Reply
 
Thread Tools Display Modes
TobyFox2002
Senior Member
 
Join Date: Nov 2013
Location: Andover, Ma
Posts: 632

Old December 24th, 2015, 04:17 PM
I'm going to jump right in by saying the code for the Path of war stuff confuses the heck out of me but in an effort to code a class a player of mine wanted to use I took a shot it.

It is a prestige class that can be blended with any non-martial class to add path of war maneuvers to it. I took the umbral blade and started to tinker with it. After about two days of learning the ins and outs as best I could of the the Path of War code. I was able to create the class with configurable that didnt throw me fifty billion compile errors.

Now I get to the point where I have maneuvers and want to add them to the configurable. . . And I cant because the configurable right across the top says:

"Pick Maneuver List on class tab first."

Well damn, I dont want to. I want to be able to say... Pick an base class, treat the number of class levels in that class as your IL plus those in this prestige class.

But I cant, so I am looking for assistance.

P.S., I have also found a bug, I think. The umbral blade prestige class says all it needs is the ability to use Veiled Moon maneuvers, not a maneuver class. And yet that prestige class has the same problem, it will not let you add to its maneuver list until you have selected a maneuver based, base class first.

I will continue to work on this issue, I need it for a game on the 6th of January. Bleh.

Well, thanks in advance and and have a Merry Christmas (or Happy Holidays) and Happy New Year.
TobyFox2002 is offline   #1 Reply With Quote
TheIronGolem
Senior Member
 
Join Date: Feb 2015
Posts: 676

Old December 25th, 2015, 09:51 PM
Hi there, I wrote most of the Path of War content*, including the prestige classes.

Initiating PrC's add to the "maneuver pool" of a previously-existing initiating class (Warder, Stalker, etc), rather than having a pool of their own. This is the reason for the "pick a maneuver list" behavior; you're being asked to choose what class to add maneuvers for.

That behavior is described in the file COM_3PPPack_PathOfWar - Components.str, approx lines 249-257:

Code:
      ~ If we're a prestige class, make sure we have chosen an existing maneuver list to work from, otherwise don't allow picking any maneuvers yet
      if (linkage[powClass].tagis[ClassType.Prestige] = 1) then
        if (hero.childfound[cPWP1Man].field[usrChosen1].ischosen = 0) then
          linkage[powCfg].field[cfgMax1].value = 0
          linkage[powCfg].field[cfgMax2].value = 0
          linkage[powCfg].field[livename].text = linkage[powCfg].tagnames[ClsCountAs.?] & " Maneuvers: Pick Maneuver List on class tab first!"
          done
        endif
      endif
If you're trying to make an initiating PrC that is available to non-initiators, that's not something it's set up to do out of the box. But the code I showed you is where you'd want to start. The way I would probably do this is to create a new tag that indicates a PrC with "independent" maneuvers (something like "PathOfWar.PrCIndMan"), add it to your new class, and then add a check for that tag to this code that will skip the "pick a maneuver list" behavior if it's there. You might need to do more than that, not sure off the top of my head.

Quote:
I want to be able to say... Pick an base class, treat the number of class levels in that class as your IL plus those in this prestige class.
Hmm. Well, all classes add to IL already, though non-initiating classes only add 1/2 IL each. So what you'd want here is a class special for the PrC that gives you a class selector, and the selected class would grant an additional 1/2 IL per level (paying careful attention to the rounding). The selector should probably filter out initiating classes, since they already add a full IL.


*If you count "by volume", anyway. ShadowChemosh laid the really important groundwork that made it possible.
TheIronGolem is offline   #2 Reply With Quote
TobyFox2002
Senior Member
 
Join Date: Nov 2013
Location: Andover, Ma
Posts: 632

Old December 26th, 2015, 07:13 AM
I wouldnt have the faintest idea how to manipulate that sort of file. I can do small time editing in the text editior. But something like that could cause the whole compiler to crash and burn in a spectacular fashion.

Sigh, I guess I cant set this up then, unless there is a way I can override this from the editor. I dont suppose there is a way I could code this in the editor, which pick would I use if this is possible? I assume it would have to be very, very late, at least Final/15000 probably. Which would make this very tight.

I will make some tests on the Configurable, and hope that works but beyond that, its probably the limited of my current skill.

----------------------------------------
I feel however, I need to point out that it is possible to qualify for many of these prestige classes without taking a maneuvering class, through feats. However, the way this is set up doesn't seem to allow for that. Take a look at the Umbral Blade. It only requires access to 3rd level Veiled Moon. Which can be obtain by feats.
TobyFox2002 is offline   #3 Reply With Quote
TheIronGolem
Senior Member
 
Join Date: Feb 2015
Posts: 676

Old December 26th, 2015, 01:41 PM
Quote:
Originally Posted by TobyFox2002 View Post
I wouldnt have the faintest idea how to manipulate that sort of file. I can do small time editing in the text editior. But something like that could cause the whole compiler to crash and burn in a spectacular fashion.
Oh no, not at all! It's all just XML. I think HL just uses the different extensions to decide in what order to load/process the files. You can use just any old text editor (I use Notepad++ myself). Even if you mess up in a way that completely breaks the XML structure, the worst thing that can happen is that HL will load in "safe mode" (i.e. with no user-defined content enabled). That said, a common practice around here is to make an "experimental" copy of your game system to work on, and then port stuff back to your "working" copy once you finish working on it.

Quote:
Originally Posted by TobyFox2002 View Post
I feel however, I need to point out that it is possible to qualify for many of these prestige classes without taking a maneuvering class, through feats. However, the way this is set up doesn't seem to allow for that. Take a look at the Umbral Blade. It only requires access to 3rd level Veiled Moon. Which can be obtain by feats.
Ah, I see what you mean now. I had thought at first that you meant that Martial Training maneuvers wouldn't let you qualify for the PrC, which they do (and correctly so). But I see that the selector isn't letting you choose Martial Training as your maneuver pool, which is definitely wrong. I will have to look into that when I get a chance.
TheIronGolem is offline   #4 Reply With Quote
TobyFox2002
Senior Member
 
Join Date: Nov 2013
Location: Andover, Ma
Posts: 632

Old December 26th, 2015, 02:17 PM
Quote:
Originally Posted by TheIronGolem View Post
Oh no, not at all! It's all just XML. I think HL just uses the different extensions to decide in what order to load/process the files. You can use just any old text editor (I use Notepad++ myself). Even if you mess up in a way that completely breaks the XML structure, the worst thing that can happen is that HL will load in "safe mode" (i.e. with no user-defined content enabled). That said, a common practice around here is to make an "experimental" copy of your game system to work on, and then port stuff back to your "working" copy once you finish working on it.
That is what I have been doing all day, and had some limited success in getting some things to work, but breaking others. It mostly loads properly. But, I truly dont understand much of the code you have used in the scripting section.

After all day of work this is what I have come up with:


Code:
   <eval phase="Final" priority="11000" index="3"><![CDATA[
      var level as number
	  
	  ~ Calculate the array value which is class level minus one as we start at zero
      field[AryLevel].value += linkage[powClass].field[cTotalLev].value - 1     
      level = field[AryLevel].value

      ~ If we're a prestige class and dont have its own maneuver lists, make sure we have chosen an existing maneuver list to work from,
	  ~ otherwise don't allow picking any maneuvers yet
      if (tagcount[ClassType.Prestige] = 1) then
        if (hero.childfound[cPWP1Man].field[usrChosen1].ischosen = 0) then
          linkage[powCfg].field[cfgMax1].value = 0
          linkage[powCfg].field[cfgMax2].value = 0
          linkage[powCfg].field[livename].text = linkage[powCfg].tagnames[ClsCountAs.?] & " Maneuvers: Pick Maneuver List on class tab first!"
          done
	  ~ If a prestige class isn't linked to an initiator class in and of itself apply its correct values f
        elseif (tagcount[PathOfWar.PrCIndMan] = 1) then
          linkage[powCfg].field[cfgMax1].value = 22
          linkage[powCfg].field[cfgMax2].value = 22
          linkage[powCfg].field[livename].text = linkage[powCfg].tagnames[ClsCountAs.?] & " TEST"
          done
	    endif
      endif
	
      ~ If no disciplines setup then display error and stop!
      ~ But don't display the error if this class has to choose disciplines (like the Pathwalker archetype)
      if (tagcount[Discipline.?] = 0) then
        if (linkage[powClass].tagis[PathOfWar.selDisc] = 0) then
          notify "Your class has no Disciplines defined. Please define Disciplines in the editor 'zCommunity->PoW Class Setup'"
        endif
        done
      endif
	  
      ~ If no disciplines setup then display error and stop!
      ~ But don't display the error if this class has to choose disciplines (like the Pathwalker archetype)
      if (tagcount[Discipline.?] = 0) then
        if (linkage[powClass].tagis[PathOfWar.selDisc] = 0) then
          notify "Your class has no Disciplines defined. Please define Disciplines in the editor 'zCommunity->PoW Class Setup'"
        endif
        done
      endif

      ~ Set to pull anything that is not a stance
      linkage[powCfg].field[cfgAllow1].text = "PathOfWar.Manuever & (" & tagids[Discipline.?,"|"] & ")"
      ~ Set to pull all the stances 
      linkage[powCfg].field[cfgAllow2].text = "PathOfWar.Stance & (" & tagids[Discipline.?,"|"] & ")"
      
      ~ Enforce maximum maneuver level, if we have a custom progression
      if (tagis[PathOfWar.CstManProg] <> 0) then
        linkage[powCfg].field[cfgAllow1].text &= " & (mLevel.0"
        var i as number
        i = 1
        while (i <= field[cMaxManLvl].arrayvalue[field[cIL].value - 1])
          linkage[powCfg].field[cfgAllow1].text &= " | mLevel." & i
          i += 1
        loop
        linkage[powCfg].field[cfgAllow1].text &= ")"
      endif
    
      ~ Set the configurator's number of manuevers known
      linkage[powCfg].field[cfgMax1].value += field[cManKnown].arrayvalue[level]

      ~ Set the configurator's number of stances known
      linkage[powCfg].field[cfgMax2].value += field[cStances].arrayvalue[level]

      ~ Set the live name to inform the number of manuevers that can be readied
      linkage[powCfg].field[livename].text = linkage[powCfg].tagnames[ClsCountAs.?] & " Maneuvers Readied: " & linkage[powCfg].tagcount[PathOfWar.ManueverOn] & " of " & field[cManReady].arrayvalue[level]
      ]]></eval>
I've rearranged some things, and sofar it seems to work mostly but the fact is it doesn't seem to count the difference properly between having just the ClassType.Prestige and having both ClassType.Prestige AND PathOfWar.PrCIndMan. (Which I was able to add to the PathOfWar.1st file).

So.. entially what I'm trying that works like the following:

IF (linkage[powClass].tagis[ClassType.Prestige] = 1 AND linkage[powClass].tagis[PathOfWar.PrCIndMan] = 1) then

do everything in the lower section of the code.
ELSEIF (linkage[powClass].tagis[ClassType.Prestige] = 1 AND linkage[powClass].tagis[PathOfWar.PrCIndMan] = 0) then

do everything you had in the code

-----------
I have tried that but, I am hindered by the fact that I am not very good with manipulating tags and my knowledge of whatever the heck this 'linkage' stuff is is just some form of wierd connector. I understand that linkage[powClass] is referring to class levels; and linkage[powCfg] is referring to the initiator manuverables, in away that it doesnt need to call each of them by their seperate unique id. But beyond that. I really am just poking at the code with a stick.

My next step is to try and manually add the Martial Training configurable to the chooser manually as an appropriate choice and see what I get. Perhaps if I do that I will be able to use that as a base.

But all in all this day has been quite the learning experience, sort of...
TobyFox2002 is offline   #5 Reply With Quote
ShadowChemosh
Senior Member
Volunteer Data File Contributor
 
Join Date: Jan 2010
Location: Chicago, IL (USA)
Posts: 10,729

Old December 28th, 2015, 10:25 AM
Will take a look as soon as I can. I got the bug report from TheIronGolem about the martial training feat not working with the umbral blade PrC. Maybe once I do that it will fix your issue also.

P.S. - Please note if you made changes directly to the files from the 3PP Pack that those will be lost as soon as you bring down the next update. You will need to make sure you have a new copy and then "manually" merge in your changes again. I say manually because if you just replace the new file with your old one its very likely to break other stuff as it will be the wrong version.

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   #6 Reply With Quote
TobyFox2002
Senior Member
 
Join Date: Nov 2013
Location: Andover, Ma
Posts: 632

Old December 28th, 2015, 11:03 AM
Quote:
Originally Posted by ShadowChemosh View Post
Will take a look as soon as I can. I got the bug report from TheIronGolem about the martial training feat not working with the umbral blade PrC. Maybe once I do that it will fix your issue also.
The feat isn't going to help me create a prestige class that acts as its own martial class. Though if the changes allow me to alter the progression of the feat helper, then that might. But it would be rather convoluted.

Quote:
P.S. - Please note if you made changes directly to the files from the 3PP Pack that those will be lost as soon as you bring down the next update. You will need to make sure you have a new copy and then "manually" merge in your changes again. I say manually because if you just replace the new file with your old one its very likely to break other stuff as it will be the wrong version.
Nothing I have done has worked anyway. So its not like that really matters. The only success I have had was in creating a new PathOfWar tag called: PathOfWar.PrCIndMan.

I've created a temporary prestige class that uses class custom abilities and filled those, using the identical code to the 3.5 version and it works (And is a lot more user friendly, tbh). It doesn't have any of the path of war disciplines, only the unique ones for the prestige class, nothing I can do about that. It means I'll have to redo EVERYTHING when I can get it going but, I needed it for a game and so did my player so meh.

Anyways, I appreciate the help.
-------------
TobyFox2002 is offline   #7 Reply With Quote
ShadowChemosh
Senior Member
Volunteer Data File Contributor
 
Join Date: Jan 2010
Location: Chicago, IL (USA)
Posts: 10,729

Old December 30th, 2015, 10:53 AM
So wait I am confused even though I read your posts like three times now.

Are you trying to make a new PrC that does NOT link to a an existing IL class. So you have fighter levels only and you take your TobyFox PrC and now you gain IL and Maneuvers from the PrC only? If that is the case I you just create a Configurable and make a new PoW Class Setup helper Thing that links your PrC to your Configurable. Boom done. The last part seems to be increasing the IL by the the full amount of the other classes. In which case a simple script that increases the IL of the Configurable by 1/2 the levels of other classes is all that is needed.

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   #8 Reply With Quote
TobyFox2002
Senior Member
 
Join Date: Nov 2013
Location: Andover, Ma
Posts: 632

Old December 30th, 2015, 10:57 PM
Sort of.

I have this prestige class that I want to have its own independent progression (albiet rather limited). So that part is correct.

Ultimately, once all is said and done, I wanted it to pull the number of level in a single chosen base class and count those towards IL. But, I cant even get a prestige class to use its own progression. The way that it is currently coded--hard coded in the structure file is that if the ClassType is a Prestige class then it MUST always link to a per-existing initiation class configurable to set its details.

I dont know enough about how the code works to change that, I've tried and tried for days. And eventually kinda gave up. The code I posted was my last attempt which doesn't work.
TobyFox2002 is offline   #9 Reply With Quote
ShadowChemosh
Senior Member
Volunteer Data File Contributor
 
Join Date: Jan 2010
Location: Chicago, IL (USA)
Posts: 10,729

Old December 31st, 2015, 10:58 AM
So that I can fully understand the issue I went ahead and made a new PrC that is made be able to use its own independent maneuver list. I finally see the issue here. Sorry about that. I made the original base components but never really saw all the changes that TheIronGolem made to it. Now that I am on the same page I was able to modify the component to understand the new tag PathOfWar.PrCIndMan which will allow a PrC to use its own independent maneuver list instead of "inheriting" one.

How do you make use of this? You will need to download and install two new files from the GitHub repository.
COM_3PPPack_PathOfWar - Components.str
COM_3PPPack_PathOfWar - Tags.1st

Follow those links which will open as text files in your browser. Go to "File->Save As" to save them as text files with .str or .1st to your PC. Place them into your Pathfinder folder overwriting what already exists.

Then on your PrC Class Helper Thing (editor tab "Class->Class") Place the tag "PathOfWar.PrCIndMan".

I am adding an example PrC I used for making this to this post. So look at it if you have any issues.

You will still need to do any adjustments to the IL that you wish based upon your own houserules. Currently the PrC is added 1:1 and any non-PoW class is added at 2:1 ratios to the IL. IL is calculated at a timing of Post-Levels/10 with a script name of "PoW Calc IL". Feel free to adjust this value after that runs.
Attached Files
File Type: email ~TobyFox PrC.user (2.4 KB, 2 views)

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   #10 Reply With Quote
Reply


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:00 AM.


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