If this bothers anyone else, the include file prc_x2_craft.nss can be edited to allow any spells for staves... I mean, what's even the point of epic staff crafting if you're capped at level 4?
Find the function CIGetIsSpellRestrictedFromCraftFeat:
int CIGetIsSpellRestrictedFromCraftFeat(int nSpellID, int nFeatID)
{
string sCol;
switch(nFeatID)
{
case X2_CI_BREWPOTION_FEAT_ID: sCol = "NoPotion"; break;
case X2_CI_SCRIBESCROLL_FEAT_ID: sCol = "NoScroll"; break;
case X2_CI_CRAFTWAND_FEAT_ID:
case X2_CI_CRAFTROD_FEAT_ID:
case X2_CI_CRAFTSTAFF_FEAT_ID: sCol = "NoWand"; break;
}
return !!StringToInt(Get2DACache(X2_CI_CRAFTING_SP_2DA,sCol,nSpellID));
}
edit it to this (comment out everything but the last line and replace sCol in the last line with "NoScroll"):
int CIGetIsSpellRestrictedFromCraftFeat(int nSpellID, int nFeatID)
{
/*string sCol;
switch(nFeatID)
{
case X2_CI_BREWPOTION_FEAT_ID: sCol = "NoPotion"; break;
case X2_CI_SCRIBESCROLL_FEAT_ID: sCol = "NoScroll"; break;
case X2_CI_CRAFTWAND_FEAT_ID:
case X2_CI_CRAFTROD_FEAT_ID:
case X2_CI_CRAFTSTAFF_FEAT_ID: sCol = "NoWand"; break;
}*/
return !!StringToInt(Get2DACache(X2_CI_CRAFTING_SP_2DA,"NoScroll",nSpellID));
}
Now you can also do custom wand levels, however rods won't be properly capped. To do that, you gotta copy and paste this little guy:
// -------------------------------------------------------------------------
// check if spell is below maxlevel for craft want
// -------------------------------------------------------------------------
int nMaxLevel = GetPRCSwitch(X2_CI_CRAFTWAND_MAXLEVEL);
if(nMaxLevel == 0)
nMaxLevel = 4;
if (nLevel > nMaxLevel)
{
FloatingTextStrRefOnCreature(83623, oCaster);
return TRUE;
}
from either here or the wand crafting check function, and put it after this part in CICraftCheckCraftRod:
int nLevel = CIGetSpellInnateLevel(nSpellID,TRUE);
if(GetPRCSwitch(PRC_CRAFT_ROD_CASTER_LEVEL))
{
switch(nMetaMagic)
{
case METAMAGIC_EMPOWER:
nLevel += 2;
break;
case METAMAGIC_EXTEND:
nLevel += 1;
break;
case METAMAGIC_MAXIMIZE:
nLevel += 3;
break;
/* case METAMAGIC_QUICKEN:
nLevel += 1;
break;
case METAMAGIC_SILENT:
nLevel += 5;
break;
case METAMAGIC_STILL:
nLevel += 6;
break;
These dont work as IPs since they are hardcoded */
}
}
then recompile prc_scripts. Now you not only have uncapped staff crafting but can set the wand/rod level cap to whatever you want with switches. I wouldn't recommend altering the brew potion max level unless you want to do extra editing of CICraftCheckBrewPotion to work properly with the master alchemist class.
edit: I suppose the quicker and dirtier method would be to simply move case X2_CI_CRAFTSTAFF_FEAT_ID: to the line before case X2_CI_SCRIBESCROLL_FEAT_ID:, but then you can't raise the wand/rod max crafting level.