Lone Wolf Development Forums

Lone Wolf Development Forums (http://forums.wolflair.com/index.php)
-   HL - d20 System (http://forums.wolflair.com/forumdisplay.php?f=46)
-   -   Arcane Thesis (http://forums.wolflair.com/showthread.php?t=44854)

CptCoots July 6th, 2013 06:37 PM

Arcane Thesis
 
I've seen some old posts about this feat, but looking at the d20 feat it really does nothing as far as game mechanics (just fills in the text). This is fine if I'm not memorizing any metamagic feats with the spell in question but otherwise it is useless.

As a reminder here is Arcane Thesis:
Prerequisite: Knowledge (arcana) 9 ranks; ability to cast arcane spells.
Benefits: Choose one arcane spell that you can cast to be your thesis spell. When casting that spell, you do so at +2 caster level. When you apply any metamagic feats other than Heighten Spell to that spell, the enhanced spell uses up a spell slot one level lower than normal. Thus if you were to prepare an empowered maximized magic missile (assuming magic missile is the spell you choose for your Arcane Thesis), it would be prepared as a 4th level spell (+1 level for empowered, down from +2; and +2 levels for maximized, down from +3).

A spell cannot be reduced to below its original level with the use of this feat.

Special: Can be taken more than once, but you apply it to a new spell.

I'm not really sure where to start with this mostly because I'm not super savvy with a lot of PrC abilities that may mimic this feat. If anyone has done the Easy Metamagic feat then that would give me a head start.

Sendric July 7th, 2013 05:17 PM

Putting in a chooser is pretty straight forward. You'll need to use the Custom Expression field to do it. I'll take a look at it tomorrow if you need help putting it together. The +2 to caster level will have to be text-only, but you could make it show in specials so its more obvious to the user. The last one doesn't sound like it would be hard, but I've never really done anything with the metamagic feats. I'll take a look at this too, but I imagine there's a field that can be altered for the chosen spell.

Sendric July 8th, 2013 06:19 AM

For the custom expression, the simplest thing to do is to choose "Picks on Hero" in the Restrict To... dropdown then put 'component.BaseSpell'. This won't differentiate between arcane and divine spells if your character has classes in both, but depending on your situation, that may not matter. This will choose any spell your characters can cast.

Sendric July 8th, 2013 06:29 AM

To reduce the sLevel, this code does work, but I haven't been able to figure out the timing needed for use with a metamagic feat:

Code:

field[fChosen].chosen.field[sLevel].value -= 1
You would also need if statements and whatnot to only apply this when using a metamagic feat, but not Heighten Spell.

If you need more help, let me know.

FYI, timing for most spells to set their sLevel is First 10000, so this would have to be after that. It may have to be later for metamagic spells (possibly even Final Phase).

CptCoots July 8th, 2013 06:37 PM

Okay, so metamagic feats on spells are a damn mess. I first chucked in a script that did a foreach through my custom spells. The idea was to find the ones whose base spell is the right one and then to check what metamagic feat is applied, then I was going to go through each metamagic feat and apply a -1 to sLevel if it wasn't heighten... the problem is that I find it unclear how the metamagic feat is stored. I will provide a detailed dump in a second.

CptCoots July 8th, 2013 07:24 PM

Okay so here is the full deal. Eval Script 1 is bad, but works for me for now. In Eval Script 2 what I'm trying to do is to go to the gizmo for each CustomSpl and then check for specific pick id's... but that part is broken. Shown is my script just testing how to get to the gizmo (just checking to see if Heighten Spell is on it, and yeah, it ain't working.

Main Screen Stuff -
Feat Category: General
Restrict To...: Picks on Hero
Custom Expression: component.BaseSpell
<Checked> Show in Specials List?

Eval Script 1 -
Final Phase: 1000
~Script to alter the text shown on the fly for the spell chosen
~Not all that good, probably only works when Arcane is highest total
~caster level

var CL as number
CL = 2 + herofield[tMaxCaster].value

if (field[fChosen].ischosen <> 0) then
field[livename].text = "Arcane Thesis: " & field[fChosen].chosen.field[name].text & " CL +" & CL
endif

Eval Script 2 -
Final Phase: 1000
~Go through each Custom Spell in my BaseSpells
var test as number
foreach pick in Hero from BaseSpell where "NeedHelper.CustomSpl"
test=eachpick.gizmo.childfound[mmHeighten]
nexteach

CptCoots July 8th, 2013 10:08 PM

Got it. It mostly works but there are two things: I keep getting "Attempt to access non-existent containing entity from script" error AND in the metamagic window shows the wrong Total Spell Level. Incidentally, this is going to form the start of my Easy Metamagic feats!

This is Eval Script 2- (timing is pretty arbitrarily chosen) Pre-levels: 5000
~Set up vaiables
var id as string
var nlvl as number
var spell as string
var normLvl as number
var LvlRed as number
var strcom as string
var result as number

~Exit if nothing chosen
doneif (field[fChosen].ischosen = 0)

~Set some things
id = field[fChosen].chosen.idstring
~the spell we're looking for, because it was chosen
spell = "thingid." & id
~the minimum level of the spell
normLvl=field[fChosen].chosen.field[sLevel].value
~we do not count Heighten in the entire calculation
strcom="Height"

~look through each spell memorized that matches chosen
foreach pick in hero where spell
LvlRed=0
~Goto the gizmos and look at the metamagics on them
foreach pick in eachpick.gizmo from BaseMetamg
~If it is not heighten (compare works like a child made it)
if (compare(eachpick.field[mmAbbr].text,strcom) <>0) then
~Increase potential level reduction by 1
LvlRed += 1
endif
nexteach
~Once all metamagics have been looked at the new level is either the
~base level or newly adjusted level
nlvl=maximum(normLvl,eachpick.field[sLevel].value-LvlRed)
~Delete the tag (Important because the metamagic spell shows the
~field value while the tag is what the spell list uses).
result=eachpick.delete[sLevel.?]
~Set the field.
eachpick.field[sLevel].value=nlvl
~Set the correct tag
if (eachpick.field[sLevel].value = 0) then
result = eachpick.assign[sLevel.0]
elseif (eachpick.field[sLevel].value = 1) then
result = eachpick.assign[sLevel.1]
elseif (eachpick.field[sLevel].value = 2) then
result = eachpick.assign[sLevel.2]
elseif (eachpick.field[sLevel].value = 3) then
result = eachpick.assign[sLevel.3]
elseif (eachpick.field[sLevel].value = 4) then
result = eachpick.assign[sLevel.4]
elseif (eachpick.field[sLevel].value = 5) then
result = eachpick.assign[sLevel.5]
elseif (eachpick.field[sLevel].value = 6) then
result = eachpick.assign[sLevel.6]
elseif (eachpick.field[sLevel].value = 7) then
result = eachpick.assign[sLevel.7]
elseif (eachpick.field[sLevel].value = 8) then
result = eachpick.assign[sLevel.8]
else
result = eachpick.assign[sLevel.9]
endif
nexteach

CptCoots July 8th, 2013 11:01 PM

Yeah so... Easy Metamagic is not really so easy off of this. The selector is fCategory.Metamagic but then there is no real slick way that I can find to connect any fields associated with the selected feat and any metamagic picks in the custom spell's gizmo. Any ideas?

Sendric July 9th, 2013 05:30 AM

I did a quick search for that error message, and fortunately found another thread that covers it. I have updated the code to reflect the necessary change (change in bold)

Code:

~Set up variables
var id as string
var nlvl as number
var spell as string
var normLvl as number
var LvlRed as number
var strcom as string

~Exit if nothing chosen
doneif (field[fChosen].ischosen = 0)
doneif (isgizmo = 0)

~Set some things
id = field[fChosen].chosen.idstring
~the spell we're looking for, because it was chosen
spell = "thingid." & id
~the minimum level of the spell
normLvl=field[fChosen].chosen.field[sLevel].value
~we do not count Heighten in the entire calculation
strcom="Height"

~look through each spell memorized that matches chosen
foreach pick in hero where spell
LvlRed=0

~Goto the gizmos and look at the metamagics on them
foreach pick in eachpick.gizmo from BaseMetamg

~If it is not heighten (compare works like a child made it)
if (compare(eachpick.field[mmAbbr].text,strcom) <> 0) then
~Increase potential level reduction by 1
LvlRed += 1
endif
nexteach

~Once all metamagics have been looked at the new level is either the
~base level or newly adjusted level
nlvl=maximum(normLvl,eachpick.field[sLevel].value-LvlRed)

~Delete the tag (Important because the metamagic spell shows the
~field value while the tag is what the spell list uses).
perform eachpick.delete[sLevel.?]

~Set the field.
eachpick.field[sLevel].value=nlvl

~Set the correct tag
if (eachpick.field[sLevel].value = 0) then
 perform eachpick.assign[sLevel.0]
elseif (eachpick.field[sLevel].value = 1) then
 perform eachpick.assign[sLevel.1]
elseif (eachpick.field[sLevel].value = 2) then
 perform eachpick.assign[sLevel.2]
elseif (eachpick.field[sLevel].value = 3) then
 perform eachpick.assign[sLevel.3]
elseif (eachpick.field[sLevel].value = 4) then
 perform eachpick.assign[sLevel.4]
elseif (eachpick.field[sLevel].value = 5) then
 perform eachpick.assign[sLevel.5]
elseif (eachpick.field[sLevel].value = 6) then
 perform eachpick.assign[sLevel.6]
elseif (eachpick.field[sLevel].value = 7) then
 perform eachpick.assign[sLevel.7]
elseif (eachpick.field[sLevel].value = 8) then
 perform eachpick.assign[sLevel.8]
else
 perform eachpick.assign[sLevel.9]
endif
nexteach

You may also notice one other change. The function "result =" is obsolete and has been replaced with "perform". So, you can remove the "result as number" and replace all "result = " items in your script. Ultimately, this changes nothing, but its been pointed out to me so I am carrying that forward.

Incidentally, I tested this out on a CLR 2 WIZ 1. When I added the above doneif line, the cleric spells disappeared from the dropdown menu. This seems like a positive thing, but may be something to keep an eye on in case you use something other than a wizard.

Sendric July 9th, 2013 05:57 AM

Quote:

Originally Posted by CptCoots (Post 160573)
Yeah so... Easy Metamagic is not really so easy off of this. The selector is fCategory.Metamagic but then there is no real slick way that I can find to connect any fields associated with the selected feat and any metamagic picks in the custom spell's gizmo. Any ideas?

Unfortunately, I'm at a loss on this one. The problem is there are two separate things with metamagic feats. There's the feat you select, then there's the metamagic item you select when creating a metamagic spell (ie fChainSpl and mmChainSpl). I don't see an easy way to use the selected item (fChainSpl) to change the other (mmChainSpl).

CptCoots July 9th, 2013 08:39 AM

Sendric, Thank you so much!

Well there is a straightforward way that is very prone to breaking should any of the tags change. The chosen pick will have the correct feat tag, e.g., fChainSpl, field. One can then code another huge if-statement block that goes through and if the chosen matches a particular one then set a string for the metamagic item.

Pseudo code example:
var str1 as string
var str2 as string
str1=field[fChosen].chosen.idstring

if (str1="fHeightenSpl") then
str2="mmHeighten"
elseif (str1="fQuickenSpl") then
str2="mmQuicken"
elseif...
...
endif

Problem is (1) this feat will not function for a new metamagic feat unless it is added and (2) it will be a HUGE script.

Quote:

Originally Posted by Sendric (Post 160579)
Unfortunately, I'm at a loss on this one. The problem is there are two separate things with metamagic feats. There's the feat you select, then there's the metamagic item you select when creating a metamagic spell (ie fChainSpl and mmChainSpl). I don't see an easy way to use the selected item (fChainSpl) to change the other (mmChainSpl).


Sendric July 9th, 2013 08:45 AM

Right. Here's another option. Use this feat to assign a tag to the spell. Then in the editor, go to each metamagic item and write a script to reduce the level adjustment by 1 if the tag exists. It would be a little tedious, but it should do the trick.

That's something I would be willing to add for the next community set (as well as the change to Arcane Thesis).

CptCoots July 9th, 2013 08:59 AM

I just did something similar, can you tell I'm avoiding work? I added a User.metaitem tag to mmQuicken. Then the pull down menu can be User.metaitem instead of the feats.

Each way is a pain in the butt...

What if one were to standardize that each metamagic feat was named like fQuicken and each metamagic gizmo thingy was named mmQuicken. could you strip off the f in hero lab? Something like

str="fQuicken"
str=str(1-end) ~starting index at 0
str="mm"&str

CptCoots July 9th, 2013 09:02 AM

Quote:

Originally Posted by Sendric (Post 160590)
Right. Here's another option. Use this feat to assign a tag to the spell.

Wait, that is the problem! starting from fQuickenSpl (what is chosen) how can I look at spells (sCustomSpl) to tell if they have mmQuicken on them?

Sendric July 9th, 2013 09:15 AM

Quote:

Originally Posted by CptCoots (Post 160591)
I just did something similar, can you tell I'm avoiding work? I added a User.metaitem tag to mmQuicken. Then the pull down menu can be User.metaitem instead of the feats.

Each way is a pain in the butt...

What if one were to standardize that each metamagic feat was named like fQuicken and each metamagic gizmo thingy was named mmQuicken. could you strip off the f in hero lab? Something like

str="fQuicken"
str=str(1-end) ~starting index at 0
str="mm"&str

What's work?

Yes, you could do that, but I'm not sure how that's necessarily easier/better than what I suggested.

Sendric July 9th, 2013 09:16 AM

Quote:

Originally Posted by CptCoots (Post 160592)
Wait, that is the problem! starting from fQuickenSpl (what is chosen) how can I look at spells (sCustomSpl) to tell if they have mmQuicken on them?

I don't know. Let me work something up real quick.

CptCoots July 9th, 2013 09:23 AM

Quote:

Originally Posted by Sendric (Post 160593)
What's work?

Yes, you could do that, but I'm not sure how that's necessarily easier/better than what I suggested.

The difference is then you shoot for the same naming convention between the feats and the mm items and then this is done with a few string manipulations rather that a giant and breakable if elseif statement.

Sendric July 9th, 2013 09:41 AM

1 Attachment(s)
Ok, here's an idea. I'm attaching a file for you that includes the Easy Metamagic feat and a new version of the Quicken Spell metamagic item. I threw in a test to see if you could read the mmLevel value (which you can). You should be able to use this as a starting point. I think it will be easier, though of course we'd still have to modify all of the metamagic items. That's something I can do, though. Let me know what you think.

CptCoots July 9th, 2013 09:46 AM

Sendric, I like this. I'll implement this on my side in my custom feats file. Look forward to seeing it in distro and I'll let you know if I hit a speed bump.

Sendric July 9th, 2013 09:55 AM

Quote:

Originally Posted by CptCoots (Post 160599)
Sendric, I like this. I'll implement this on my side in my custom feats file. Look forward to seeing it in distro and I'll let you know if I hit a speed bump.

Cool. If you can post the final eval script you use to reduce the sLevel, that would be helpful. I'll start working on the metamagic items so that they are all tagged correctly.

CptCoots July 9th, 2013 10:43 AM

doneif (isgizmo <> 0)

this actually breaks the entire script. It always seems to make it fail.

EDIT: changed the spell string that we're using for the top foreach loop to
spell = "thingid." & id&" & Helper.CustomItem"

CptCoots July 9th, 2013 11:16 AM

Easy Metamagic eval
 
So popping in the tag on the Metamagic feat and testing it out worked. As usual I put my timing in Final with a huge number.

First - Grab the metamagic feat chosen
Second - Grab customized spells
Third - Grab customized spell's level
Fourth - Grab the original spell's level
Fifth- Is our metamagic feat there? ->increment level reduction
sixth - overhead.

var Lvl as number
var LvlRed as number
var MMg as string
var nlvl as number
var BLvl as number

doneif (field[fChosen].ischosen = 0)

MMg = field[fChosen].chosen.field[mmAbbr].text

foreach pick in hero where "NeedHelper.CustomSpl"
~Grab current level of the customized spell
Lvl = eachpick.field[sLevel].value
LvlRed=0
~Need the level of the base spell; I anticipate that this foreach
~will only find one thing.

foreach pick in eachpick.gizmo from BaseSpell
BLvl=eachpick.field[sLevel].value
nexteach

~Look for the metamagic chosen within the gizmos
foreach pick in eachpick.gizmo from BaseMetamg
if (compare(eachpick.field[mmAbbr].text,MMg) = 0) then
LvlRed += 1
endif
nexteach

nlvl=maximum(Lvl-LvlRed,BLvl)
perform eachpick.delete[sLevel.?]

~Set the field.
eachpick.field[sLevel].value=nlvl

~Set the correct tag
if (eachpick.field[sLevel].value = 0) then
perform eachpick.assign[sLevel.0]
elseif (eachpick.field[sLevel].value = 1) then
perform eachpick.assign[sLevel.1]
elseif (eachpick.field[sLevel].value = 2) then
perform eachpick.assign[sLevel.2]
elseif (eachpick.field[sLevel].value = 3) then
perform eachpick.assign[sLevel.3]
elseif (eachpick.field[sLevel].value = 4) then
perform eachpick.assign[sLevel.4]
elseif (eachpick.field[sLevel].value = 5) then
perform eachpick.assign[sLevel.5]
elseif (eachpick.field[sLevel].value = 6) then
perform eachpick.assign[sLevel.6]
elseif (eachpick.field[sLevel].value = 7) then
perform eachpick.assign[sLevel.7]
elseif (eachpick.field[sLevel].value = 8) then
perform eachpick.assign[sLevel.8]
else
perform eachpick.assign[sLevel.9]
endif
nexteach

Sendric July 9th, 2013 11:24 AM

Quote:

Originally Posted by CptCoots (Post 160602)
doneif (isgizmo <> 0)

this actually breaks the entire script. It always seems to make it fail.

EDIT: changed the spell string that we're using for the top foreach loop to
spell = "thingid." & id&" & Helper.CustomItem"

Awesome. I was trying to figure this one out, but was getting nowhere. Sorry about that.

And thanks for the Easy Metamagic script. Looks good.

CptCoots July 9th, 2013 11:31 AM

The timing has to be adjusted to get all the levels to change correctly:
Pre-levels 5000 works

Oh and the custom metamagic items are throwing:
Live state of gizmo 'CustSpell' is being tested before live state of parent pick 'sCustomSpl' is resolved

Sendric July 9th, 2013 11:59 AM

Quote:

Originally Posted by CptCoots (Post 160610)
The timing has to be adjusted to get all the levels to change correctly:
Pre-levels 5000 works

Oh and the custom metamagic items are throwing:
Live state of gizmo 'CustSpell' is being tested before live state of parent pick 'sCustomSpl' is resolved

I'm not seeing this error, though I did realize that a script on a metamagic item doesn't seem to do anything. It looks like I will just have to add the tags to every available metamagic feat.

CptCoots July 9th, 2013 12:02 PM

I did:
Final Phase 30000
if (hero.pickexists[fRepeatSpl] <>0) then
perform assign[User.EasyMM]
endif

and added the User Tags via the gui button and made sure to replace the stock metamagic item... it is working for me, except for the error.

Sendric July 9th, 2013 12:09 PM

Quote:

Originally Posted by CptCoots (Post 160612)
I did:
Final Phase 30000
if (hero.pickexists[fRepeatSpl] <>0) then
perform assign[User.EasyMM]
endif

and added the User Tags via the gui button and made sure to replace the stock metamagic item... it is working for me, except for the error.

Yea. I think you can ignore the script and just add the tag through the gui. Also, Repeat Spell isn't a stock item. You can just modify the existing one in the Complete Arcane file. I only used replace thingid on Quicken cause its an original d20 metamagic feat and we can't modify that one.

Note: I am seeing the error now.

Update: Reload the code (ctrl-r) and the error goes away.

CptCoots July 9th, 2013 12:19 PM

Hey Sendric, we just kicked those feats' ass.

Sendric July 9th, 2013 12:21 PM

Quote:

Originally Posted by CptCoots (Post 160614)
Hey Sendric, we just kicked those feats' ass.

I feel pretty good about that. Especially since I accomplished absolutely nothing else at work today. Drinks all around.

Lord Magus July 9th, 2013 04:43 PM

You guys just might have solved my years-old quandary about how to code the Forgotten Realms PrC Incantatrix' capstone power, which I had tried to script years ago but was told then that it probably couldn't be done without shenanigans such as rescripting the entire metamagic feats.

Kudos for that! Please try to craft your system so that said PrC could use it as well. Thanks.

*the power in question reduces the cost of all metamagic used by the character by 1 level, without bringing it lower than 1

CptCoots July 9th, 2013 08:53 PM

Quote:

Originally Posted by Lord Magus (Post 160627)
You guys just might have solved my years-old quandary about how to code the Forgotten Realms PrC Incantatrix' capstone power, which I had tried to script years ago but was told then that it probably couldn't be done without shenanigans such as rescripting the entire metamagic feats.

Kudos for that! Please try to craft your system so that said PrC could use it as well. Thanks.

*the power in question reduces the cost of all metamagic used by the character by 1 level, without bringing it lower than 1

Attach the .user file that you have the PrC, special abilities, etc.. and I can write all the other stuff you need into it and re-attach in a day or so.

Lord Magus July 9th, 2013 09:02 PM

1 Attachment(s)
Quote:

Originally Posted by CptCoots (Post 160632)
Attach the .user file that you have the PrC, special abilities, etc.. and I can write all the other stuff you need into it and re-attach in a day or so.

Thanks! Here it is. The troublesome ability is "improved metamagic"

CptCoots July 9th, 2013 09:10 PM

Quote:

Originally Posted by Lord Magus (Post 160633)
Thanks! Here it is. The troublesome ability is "improved metamagic"

I'm going to do two things. First I'm going to do up the Improved Metamagic. Second I'm going to clean up Focused Studies and then give the whole thing an overhaul. Probably be done by Friday. I'll let you know.

CptCoots July 10th, 2013 03:00 AM

1 Attachment(s)
Okay so a few things.
  1. Updated Arcane Thesis
  2. Finished Incantatrix

Arcane Thesis: I saw something really weird when I was testing this with the finished Incantatrix. It was allowing metamagic feats that do not adjust level to incur a -1 to the level, but only when they were not the only metamagic feat on the spell. I think this is not okay. In no way should it be easier. So I adjusted the code slightly to check to make sure the mmLevel>=1 before incrementing the potential level reduction (LvlRed). Example: You put City Spell and Maximize on a Ray of Frost and you have the Arcane Thesis: Ray of Frost feat. Normally Maximize gives a +3 level adjustment (LA) and City Spell gives a +0 LA incurring a total of +3 LA. But with arcane thesis each takes a -1 bonus so now the LA is +1. Compare this to when you just Maximize the spell as incur a +2 LA. See? That is stupid.
Arcane Thesis also currently has an annoying functionality where all versions of spells in your spellbook and memorized are available for selection. Anyone know how to restrict this to just spellbook or known?

Incantatrix: Holy crap what a bear.
(1) Changed all the Focus Studies Custom Abilities to have Pick-reqs instead of Pre-reqs. This will prevent the selected school to go red once chosen (this happens because it is NOW on the forbidden list and is no longer eligable to be selected. Thus selecting it made it unselectable.). This way makes it less clear why a school is unselectable in the Add More Focused Studies window (now it only reads Precluded by XXX), but I think it is cleaner.
(2) Deleted the Improved Metamagic feat and Improved Metamagic metamagic.
(3) Added Arcane Thesis (fArcaneThe) and Easy Metamagic (fEasyMetaM).
(4) Added mmQuicken2. This should serve as a template on how to get metamagic picks to agree with how we did Easy Metamagic. I believe Sendric will be supplying a full replacement of these in the future, or you can do them yourself. I just set them to Replace Thing Id the previous mmXXX and add the User Tag EasyMM.
(5) Improved Metamagic now has a huge script which I provide here for people to make fun of, and the code in the Class Special is uncommented:
Prelevels 5000
~Set up Variables
var LvlRed as number
var OLvl as number
var spell as string
var ArcThe as number
var spellid as string
var MMg as string
var MMg2 as string
var EasyMM as number

~Go through each Spell with custom crap on it
foreach pick in Hero from BaseSpell where "NeedHelper.CustomSpl"
~Level Reduction is 0 so far
LvlRed=0
~Unknown if this spell has Arcane Thesis associated with it
ArcThe=0
~Grab the old level
OLvl=eachpick.field[sLevel].value

~Check for Arcane Thesis!!
~If you have the feat...
if (#hasfeat[fArcaneThe] <> 0) then
~Grab the original spell name
foreach pick in eachpick.gizmo from BaseSpell
spell=eachpick.idstring
nexteach
~Look through the Arcane Thesis Feats
foreach pick in Hero from BaseFeat where "HasFeat.fArcaneThe"
spellid=eachpick.field[fChosen].chosen.idstring
~If the current spell is the same as one we have Arcane Thesis for then set ArcThe to 1.
if (compare(spellid,spell)=0) then
ArcThe=1
endif
nexteach
endif
~Now go through all the metamagic feats applied to current spell
foreach pick in eachpick.gizmo from BaseMetamg
~unsure if this metamagic feat is associated with the Easy Metamagic feat
EasyMM=0
~Grab the abbreviation of the current Metamagic on the spell
MMg=eachpick.field[mmAbbr].text
~Look through each Easy Metamagic feat
foreach pick in hero from BaseFeat where "HasFeat.fEasyMetaM"
MMg2=eachpick.field[fChosen].chosen.field[mmAbbr].text
~if this matches the current metamagic ON the current spell set EasyMM=1
if (compare(MMg,MMg2)=0) then
EasyMM=1
endif
nexteach

~Now this is awesome...
~If the current spell is not arcane thesisized and if the current metamagic is not easy then so long as it incurs a +2 LA we subtract 1.
~If it is not thesisized and is easy then Easy Metamagic will already be taking 1 off so we need an LA of atleast 3 to bother
~If it is thesisized but not easy then Arcane Thesis will already be taking 1 off so we need an LA of atleast 3 to bother
~If it is thesisized and easy then they both will be taking 1 off so we need an LA of atleast 4 to bother
if (ArcThe=0) then
if (EasyMM=0) then
if (eachpick.field[mmLevel].value>=2) then
LvlRed +=1
endif
else
if (eachpick.field[mmLevel].value>=3) then
LvlRed +=1
endif
endif
else
if (EasyMM=0) then
if (eachpick.field[mmLevel].value>=3) then
LvlRed +=1
endif
else
if (eachpick.field[mmLevel].value>=4) then
LvlRed +=1
endif
endif
endif
nexteach
~Delete all sLevel tags
perform eachpick.delete[sLevel.?]
~Take off all level reductions due to metamagics and put into field
eachpick.field[sLevel].value=OLvl-LvlRed
~Assign the correct tag
if (eachpick.field[sLevel].value = 0) then
perform eachpick.assign[sLevel.0]
elseif (eachpick.field[sLevel].value = 1) then
perform eachpick.assign[sLevel.1]
elseif (eachpick.field[sLevel].value = 2) then
perform eachpick.assign[sLevel.2]
elseif (eachpick.field[sLevel].value = 3) then
perform eachpick.assign[sLevel.3]
elseif (eachpick.field[sLevel].value = 4) then
perform eachpick.assign[sLevel.4]
elseif (eachpick.field[sLevel].value = 5) then
perform eachpick.assign[sLevel.5]
elseif (eachpick.field[sLevel].value = 6) then
perform eachpick.assign[sLevel.6]
elseif (eachpick.field[sLevel].value = 7) then
perform eachpick.assign[sLevel.7]
elseif (eachpick.field[sLevel].value = 8) then
perform eachpick.assign[sLevel.8]
else
perform eachpick.assign[sLevel.9]
endif
nexteach

Lord Magus July 10th, 2013 04:19 AM

Thanks a million times! Considering this was the first project I tried when I got HeroLab, I guess I now see it was way more than I could chew then... And even now.

Sendric July 11th, 2013 05:30 AM

Lord Magus,

Is this or anything else you have something you would be willing to share with the community? There's someone working on some Forgotten Realms stuff, but its largely not been covered in the community set. I would like to change that if possible.

CptCoots July 11th, 2013 11:05 AM

Doh! there is a mistake in all this that I hadn't noticed. Easy Metamagic cannot reduce a modified spell to less than one level higher than normal... so each metamagic has to add at least 1.

Sendric July 11th, 2013 11:14 AM

Quote:

Originally Posted by CptCoots (Post 160746)
Doh! there is a mistake in all this that I hadn't noticed. Easy Metamagic cannot reduce a modified spell to less than one level higher than normal... so each metamagic has to add at least 1.

I noticed that and didn't include any metamagics that increase spell level by less than 2 when tagging them with User.EasyMM. :D

CptCoots July 11th, 2013 01:11 PM

Quote:

Originally Posted by Sendric (Post 160749)
I noticed that and didn't include any metamagics that increase spell level by less than 2 when tagging them with User.EasyMM. :D

Well ain't you friggen smart? :D

Lord Magus July 11th, 2013 05:35 PM

Quote:

Originally Posted by Sendric (Post 160709)
Lord Magus,

Is this or anything else you have something you would be willing to share with the community? There's someone working on some Forgotten Realms stuff, but its largely not been covered in the community set. I would like to change that if possible.

Incantatrix was the only HL project I did for d20 that got anywhere. After that, my group converted to Pathfinder; I have a few half-finished PF projects lying around, but RL has gotten in the way quite a bit in the past months


All times are GMT -8. The time now is 07:48 AM.

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