• 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

more prestige class woes

Bluephoenix

Well-known member
going through my list of prestige classes to do, found a few things that I either cannot find an example for, or do not have the foggiest how to code (everything else is going well though.)

Wayfarer guide:
specific spell casting ability (ability to cast teleport required): I'm thinking there is something I can do with picks on/in hero, though exactly what hasn't become clear.

also the extra teleportation class feature: the WFG gains an extra 5th level spell slot that only accepts/can be used for teleport.

Ultimate Magus:
Arcane Spell power: caster level for all arcane powers increases by +1 at 1st, 4th, 7th, 10th levels (pretty sure this can be done with an eval script an an xspecial, but when i tried modifying the Frostmage gain knowledge feat which was the closest example, it just gives me compile errors)

Exemplar:
Requirements, any skill 13 ranks and skill focus any
not sure how to make these requirements non-specific, picked through several PrCs and no usable examples.

the class features are also problematic in that they are modifier/level dependent. of particular note:
Skill artistry: chose 1 skill at 1st,4th,7th,10th with at least 13ranks, and gain a +4 bonus to them.
Sustaining Presence: Cha mod added to concentration check and fort saves.
intellectual agility: add int mod to initiative and reflex saves.

***** while I know that its a long list of questions, I do hope you'll bear with a scripting noob. :( *****
 
Wayfarer's guide: Teleport Pre-req... you could do this with a prereq that does a foreach, unfortunately you'll have to track down the Unique ID of every Teleport spell, and update the prereq if any other classes are added which can cast teleport (since each class has it's own version of each spell). May not be worth it.

Off the top of my head:
var result as number
foreach pick in hero from BaseSpell where "thingid.sXXXTelepo|thingid.sXXXTekepo|So on and so forth"
result += 1
nexteach

validif (result <> 0)

Not tested, make sure you test it....
 
Extra teleportation class ability will need an eval script that adds +1 to the slots of a chosen class's spellcasting. Since the spell level of teleportation may vary, the eval script will have to check to see what the class selected is, and then add to the appropriate level.

That this slot is filled with a teleportation spell will be done in an Eval RULE also on the class ability that enforces at least one spell memorized be the Teleportation spell. Again, as above this will have to list every version of teleport in existance, checking for each.

For a somewhat similar thing, look at my Draconic Legacy feat from complete arcane, which adds to spells known based on which dragon type was chosen and also enforces one spell as known for each level.
 
Ultimate Magus: First Part is easy, define and set your bonus based on Prestige class level, I am sure you know how to do that.

Now look at the Practiced Spellcaster feat for starters on how to add to Caster Level. You can modify that (removing the HD cap).

Now your wording was a little confusing to me, when you said arcane powers. I looked it up and it says all arcane spells, which means we need to increase the CL of any class that is an arcane caster. You can do it with a foreach:

foreach pick in hero from BaseClHelp where "CasterSrc.Arcane"

So in summary the Eval should look something like this...

var bonus as number
~ Set our bonus
if (level >= X) then
bonus Y
if (blahblah)..

endif

foreach pick in hero from BaseClHelp where "CasterSrc.Arcane"
each.(the thing modified from feat) += bonus
nexteach
 
just realized I made a dumb, teleport is only learned by sor/wiz as a 5th level spell, and since that slot can only be filled by teleport, I can just set it as a single use charge as part of the class special.

if there are other classes that get it sooner/later, at best this will cover 90% of the likely occurances until I can get the kinks worked out of the eval script
 
Do the skill focus and the 13+ ranks have to be in the same skill? If not then it is very easy.

In a Pre-req
~ We need 13+ ranks in any skill
foreach pick in hero from BaseSkill
validif (each.field[kUserRanks].value >= 13)
nexteach

In an Expr-req
~ We need skill focus and it doesn't matter which
#hasfeat[fSkillFoc] <> 0
 
Skill artistry seems pretty easy, just make one for each time it is gained and have a selector for the skill and add a +4 to the bonus field.

field[usrChosen1].chosen.field[Bonus].value += 4
 
The other two are easy enough once you know how to get an ability modifier:

var bonus as number
bonus = hero.child[aXXX].field[aModBonus].value

XXX is the specific attribute you are shooting for. Make sure this happens at Post Attributes or later. Look at Improved Initiative for adding to Init, any skill boosting feat (like athletic) for adding to skills, and Iron Will/Lightning reflexes for the saves. You didn't mention if the bonus for this ability is typed, but if it is you'll need to modify the script to apply to a different field, and make sure the maximum is applied (since most bonuses don't stack).
 
thanks for the help, Ultimate magus is now working properly, as is wayfarer guide, exemplar requirements script also in and working properly

the skill artistry script works, however it currently allows selection of skills that do not meet the 13 rank requirement, is there any way to restrict this (limit the drop options) or add a warning section to the eval script if the choice doesn't meet. based on my limited knowledge would this work?:

validif (field[usrChosen1.kUserRanks].value >= 13)
 
sorry, tired, and typing before I think, gave it a shot and it ended up crashing HL on the compile after spitting out a syntax error message.

not sure how to fix that, as I do not understand programming languages/coding well at all (mostly learning all of this by doing, and rote/example :( )

will probably leave skill artistry as it is, and come back to it at a later date since the base functionality is at least there.
 
Last edited:
Err.... actually now that I look at it, try this instead...
validif (field[usrChosen1].chosen.field[kUserRanks].value >= 13)
 
on entering the revised version its doesn't crash anymore (yay!)

but does give me the following: Syntax error in 'eval' script for Thing 'cEXMSklArt' (Eval Script #1) on line 3
-> script does not support the '@valid' special symbol so use of 'validif' is illegal.


given that result it seems that either doing something to the available options for user choices (limiting).

I'll stick the script in the eval rule section and see if it likes that instead.

edit: success with the eval rule. testing it in use now to see if it breaks or works correctly

edit #2: works correctly, does not break or throw errors.
 
Last edited:
is there any way to have a user choose multiple items from a single special?

I'm looking at skill mastery and it has the player choose 1 + int mod skills that the exemplar can then take 10 on at any time, I was going to re purpose the skill artistry script, but instead of the script adding a bonus, taking the usrChosen field and iterating the number of those fields by using a variable defined from the mod +1.

however if I understand the expression structure correctly, the usrChosen fields have to be statically defined, which kaputs the idea.

other idea is a foreach expression, but I do not know the trigger to get it to iterate from 1 to a variable value.

any thoughts? (if static is the only option I'll leave it as a normal text special)

edit: example for completeness
intended idea, does not work as written:

var intag as number
intag = hero.child[aINT].field[aModBonus].value + 1

foreach (blah)
field[usrChosen(#s)]
 
Last edited:
Yeah, there are only 2 selections allowed, but you can check the "User Text?" box and have the user type in whichever skills they pick.
 
well, that's everything for now, will be sending off Wayfarer, Magus, Geometer, and Exemplar to Chemosh by the end of the day for inclusion into the files.

thanks so much for all the help, and I would imagine a bit of patience.
 
Back
Top