diff --git a/Release/PRC4_NWN35.7z b/Release/PRC4_NWN35.7z index 8d35de88..bcb7998a 100644 Binary files a/Release/PRC4_NWN35.7z and b/Release/PRC4_NWN35.7z differ diff --git a/nwn/nwnprc/trunk/include/prc_inc_castlvl.nss b/nwn/nwnprc/trunk/include/prc_inc_castlvl.nss index 212dc6ec..e267a61d 100644 --- a/nwn/nwnprc/trunk/include/prc_inc_castlvl.nss +++ b/nwn/nwnprc/trunk/include/prc_inc_castlvl.nss @@ -595,7 +595,7 @@ int PRCGetCasterLevel(object oCaster = OBJECT_SELF) } else if(GetPrimaryArcaneClass(oCaster) == iCastingClass) - iReturnLevel += GetArcanePRCLevels(oCaster); + iReturnLevel += GetArcanePRCLevels(oCaster, iCastingClass); else if(GetLevelByClass(CLASS_TYPE_ULTIMATE_MAGUS, oCaster)) iReturnLevel += GetArcanePRCLevels(oCaster, iCastingClass); diff --git a/nwn/nwnprc/trunk/include/prc_inc_core.nss b/nwn/nwnprc/trunk/include/prc_inc_core.nss index 3ab2def1..04454ac0 100644 --- a/nwn/nwnprc/trunk/include/prc_inc_core.nss +++ b/nwn/nwnprc/trunk/include/prc_inc_core.nss @@ -532,7 +532,7 @@ int UseNewSpellBook(object oCreature) if(nPrimaryArcane != CLASS_TYPE_BARD && nPrimaryArcane != CLASS_TYPE_SORCERER) return FALSE; //check they have arcane PrC or Draconic Breath/Arcane Grace - if(!GetArcanePRCLevels(oCreature) + if(!GetArcanePRCLevels(oCreature, nPrimaryArcane) && !(GetHasFeat(FEAT_DRACONIC_GRACE, oCreature) || GetHasFeat(FEAT_DRACONIC_BREATH, oCreature))) return FALSE; //check if the newspellbooks are disabled diff --git a/nwn/nwnprc/trunk/include/prc_inc_spells.nss b/nwn/nwnprc/trunk/include/prc_inc_spells.nss index 5c0ebf33..afec6750 100644 --- a/nwn/nwnprc/trunk/include/prc_inc_spells.nss +++ b/nwn/nwnprc/trunk/include/prc_inc_spells.nss @@ -382,12 +382,12 @@ int GetPrCAdjustedClassLevel(int nClass, object oCaster = OBJECT_SELF) if(GetIsArcaneClass(nClass, oCaster) && nClass != CLASS_TYPE_SUBLIME_CHORD) { if (GetPrimaryArcaneClass(oCaster) == nClass) // adjust for any PrCs - iTemp = GetArcanePRCLevels(oCaster); + iTemp = GetArcanePRCLevels(oCaster, nClass); } else if(GetIsDivineClass(nClass, oCaster)) { if (GetPrimaryDivineClass(oCaster) == nClass) // adjust for any PrCs - iTemp = GetDivinePRCLevels(oCaster); + iTemp = GetDivinePRCLevels(oCaster, nClass); } else // a non-caster class or a PrC { @@ -516,11 +516,11 @@ int GetLevelByTypeArcaneFeats(object oCaster = OBJECT_SELF, int iSpellID = -1) iClass1Lev += PracticedSpellcasting(oCaster, iClass1, iClass1Lev); iClass2Lev += PracticedSpellcasting(oCaster, iClass2, iClass2Lev); iClass3Lev += PracticedSpellcasting(oCaster, iClass3, iClass3Lev); - iClass4Lev += PracticedSpellcasting(oCaster, iClass4, iClass1Lev); - iClass5Lev += PracticedSpellcasting(oCaster, iClass5, iClass2Lev); - iClass6Lev += PracticedSpellcasting(oCaster, iClass6, iClass3Lev); - iClass7Lev += PracticedSpellcasting(oCaster, iClass7, iClass1Lev); - iClass8Lev += PracticedSpellcasting(oCaster, iClass8, iClass2Lev); + iClass4Lev += PracticedSpellcasting(oCaster, iClass4, iClass4Lev); + iClass5Lev += PracticedSpellcasting(oCaster, iClass5, iClass5Lev); + iClass6Lev += PracticedSpellcasting(oCaster, iClass6, iClass6Lev); + iClass7Lev += PracticedSpellcasting(oCaster, iClass7, iClass7Lev); + iClass8Lev += PracticedSpellcasting(oCaster, iClass8, iClass8Lev); if (!GetIsArcaneClass(iClass1, oCaster)) iClass1Lev = 0; if (!GetIsArcaneClass(iClass2, oCaster)) iClass2Lev = 0; diff --git a/nwn/nwnprc/trunk/include/x2_inc_spellhook.nss b/nwn/nwnprc/trunk/include/x2_inc_spellhook.nss index a12c4afa..e70ba21e 100644 --- a/nwn/nwnprc/trunk/include/x2_inc_spellhook.nss +++ b/nwn/nwnprc/trunk/include/x2_inc_spellhook.nss @@ -1353,7 +1353,7 @@ int BardSorcPrCCheck(object oCaster, int nCastingClass, object oSpellCastItem) if(GetLocalInt(oCaster, "NSB_Class") == CLASS_TYPE_SORCERER) return TRUE; //check they have arcane PrC or Draconic Arcane Grace/Breath - if(!(GetArcanePRCLevels(oCaster) - GetLevelByClass(CLASS_TYPE_SUBLIME_CHORD, oCaster)) + if(!(GetArcanePRCLevels(oCaster, nCastingClass) - GetLevelByClass(CLASS_TYPE_SUBLIME_CHORD, oCaster)) && !(GetHasFeat(FEAT_DRACONIC_GRACE, oCaster) || GetHasFeat(FEAT_DRACONIC_BREATH, oCaster))) return TRUE; //check they have sorc in first arcane slot @@ -1380,7 +1380,7 @@ int BardSorcPrCCheck(object oCaster, int nCastingClass, object oSpellCastItem) if(GetLocalInt(oCaster, "NSB_Class") == CLASS_TYPE_BARD) return TRUE; //check they have arcane PrC or Draconic Arcane Grace/Breath - if(!(GetArcanePRCLevels(oCaster) - GetLevelByClass(CLASS_TYPE_SUBLIME_CHORD, oCaster)) + if(!(GetArcanePRCLevels(oCaster, nCastingClass) - GetLevelByClass(CLASS_TYPE_SUBLIME_CHORD, oCaster)) && !(GetHasFeat(FEAT_DRACONIC_GRACE, oCaster) || GetHasFeat(FEAT_DRACONIC_BREATH, oCaster))) return TRUE; //check they have bard in first arcane slot