diff --git a/Release/PRC8_20241013.7z b/Release/PRC8_20241013.7z new file mode 100644 index 00000000..bfe90f3b Binary files /dev/null and b/Release/PRC8_20241013.7z differ diff --git a/Release/PRC8_20241011.7z b/_backup/PRC8_20241011.7z similarity index 100% rename from Release/PRC8_20241011.7z rename to _backup/PRC8_20241011.7z diff --git a/nwn/nwnprc/trunk/include/prc_inc_combat.nss b/nwn/nwnprc/trunk/include/prc_inc_combat.nss index f9228b24..e7f20d84 100644 --- a/nwn/nwnprc/trunk/include/prc_inc_combat.nss +++ b/nwn/nwnprc/trunk/include/prc_inc_combat.nss @@ -1080,6 +1080,8 @@ int GetIsTwoHandedMeleeWeaponType(int iWeaponType) case BASE_ITEM_HALBERD: return TRUE; case BASE_ITEM_SHORTSPEAR: return TRUE; case BASE_ITEM_HEAVYFLAIL: return TRUE; + case BASE_ITEM_MAUL: return TRUE; + case BASE_ITEM_FALCHION: return TRUE; } return FALSE; } diff --git a/nwn/nwnprc/trunk/include/prc_inc_fork.nss b/nwn/nwnprc/trunk/include/prc_inc_fork.nss index a8ed65e2..2cacbfeb 100644 --- a/nwn/nwnprc/trunk/include/prc_inc_fork.nss +++ b/nwn/nwnprc/trunk/include/prc_inc_fork.nss @@ -664,6 +664,8 @@ int GetWeaponSize(object oWeapon) case BASE_ITEM_SHORTSPEAR: case BASE_ITEM_TRIDENT: case BASE_ITEM_ELVEN_COURTBLADE: + case BASE_ITEM_MAUL: + case BASE_ITEM_FALCHION: return 4; } @@ -699,6 +701,8 @@ int PRCLargeWeaponCheck(int iBaseType, int nSize) case BASE_ITEM_SHORTSPEAR: case BASE_ITEM_TRIDENT: case BASE_ITEM_ELVEN_COURTBLADE: + case BASE_ITEM_MAUL: + case BASE_ITEM_FALCHION: { sTest = Get2DAString("baseitems", "WeaponSize", iBaseType); break; diff --git a/nwn/nwnprc/trunk/scripts/prc_enforce_feat.nss b/nwn/nwnprc/trunk/scripts/prc_enforce_feat.nss index aeaa320d..7823005f 100644 --- a/nwn/nwnprc/trunk/scripts/prc_enforce_feat.nss +++ b/nwn/nwnprc/trunk/scripts/prc_enforce_feat.nss @@ -1326,8 +1326,8 @@ int BonusDomains() nMin += 1;//1 domain at 1st level } - if(!nMin) - return FALSE; +/* if(!nMin) + return FALSE; */ //: This check made it so you couldn't catch PCs having bonus domains before they should. -Jaysyn int dPC; // Blightbringer Prestige domain can only be taken by Blightlord class so it's not added here @@ -1398,6 +1398,132 @@ int BonusDomains() } int Shaman() +{ + int nClass = GetLevelByClass(CLASS_TYPE_SHAMAN); + + if(nClass) + { + int nIS = GetHasFeat(FEAT_DODGE) + + GetHasFeat(FEAT_STUNNING_FIST) + + GetHasFeat(FEAT_EXPERTISE) + + GetHasFeat(FEAT_IMPROVED_EXPERTISE) + + GetHasFeat(FEAT_IMPROVED_TRIP) + + GetHasFeat(FEAT_IMPROVED_GRAPPLE) + + GetHasFeat(FEAT_EARTHS_EMBRACE) + + GetHasFeat(FEAT_PRC_IMP_DISARM) + + GetHasFeat(FEAT_MOBILITY) + + GetHasFeat(FEAT_SPRING_ATTACK) + + GetHasFeat(FEAT_BLIND_FIGHT) + + GetHasFeat(FEAT_DEFLECT_ARROWS); + + int requiredFeats = nClass / 4; // Shaman gets a bonus feat every 4 levels + + if(DEBUG) DoDebug("Shaman Level: " + IntToString(nClass)); + if(DEBUG) DoDebug("Current Bonus Feats: " + IntToString(nIS)); + if(DEBUG) DoDebug("Required Bonus Feats: " + IntToString(requiredFeats)); + + if(nIS < requiredFeats) { + FloatingTextStringOnCreature("You do not have the correct amount of bonus feats. Please reselect your feats.", OBJECT_SELF, FALSE); + return TRUE; + } + } + return FALSE; +} + +/* int BonusDomains() +{ + //Determine minimum number of bonus domains (selected by player) + int nMin; + if(GetLevelByClass(CLASS_TYPE_MYSTIC)) + nMin += 1;//1 domain at 1st level + if(GetLevelByClass(CLASS_TYPE_TEMPLAR)) + nMin += 2;//2 domains at 1st level + if(GetLevelByClass(CLASS_TYPE_SHAMAN)) + { + if(GetLevelByClass(CLASS_TYPE_SHAMAN) > 10) + nMin += 1;//1 PRC domain at 11th level + } + if(GetLevelByClass(CLASS_TYPE_CONTEMPLATIVE)) + { + if(GetLevelByClass(CLASS_TYPE_CONTEMPLATIVE) > 5) + nMin += 2;//2 domains at 6th level + else + nMin += 1;//1 domain at 1st level + } + + if(!nMin) + return FALSE; + + int dPC; + // Blightbringer Prestige domain can only be taken by Blightlord class so it's not added here + dPC = GetHasFeat(FEAT_BONUS_DOMAIN_AIR) + + GetHasFeat(FEAT_BONUS_DOMAIN_ANIMAL) + + GetHasFeat(FEAT_BONUS_DOMAIN_DEATH) + + GetHasFeat(FEAT_BONUS_DOMAIN_DESTRUCTION) + + GetHasFeat(FEAT_BONUS_DOMAIN_EARTH) + + GetHasFeat(FEAT_BONUS_DOMAIN_EVIL) + + GetHasFeat(FEAT_BONUS_DOMAIN_FIRE) + + GetHasFeat(FEAT_BONUS_DOMAIN_GOOD) + + GetHasFeat(FEAT_BONUS_DOMAIN_HEALING) + + GetHasFeat(FEAT_BONUS_DOMAIN_KNOWLEDGE) + + GetHasFeat(FEAT_BONUS_DOMAIN_MAGIC) + + GetHasFeat(FEAT_BONUS_DOMAIN_PLANT) + + GetHasFeat(FEAT_BONUS_DOMAIN_PROTECTION) + + GetHasFeat(FEAT_BONUS_DOMAIN_STRENGTH) + + GetHasFeat(FEAT_BONUS_DOMAIN_SUN) + + GetHasFeat(FEAT_BONUS_DOMAIN_TRAVEL) + + GetHasFeat(FEAT_BONUS_DOMAIN_TRICKERY) + + GetHasFeat(FEAT_BONUS_DOMAIN_WAR) + + GetHasFeat(FEAT_BONUS_DOMAIN_WATER) + + GetHasFeat(FEAT_BONUS_DOMAIN_DARKNESS) + + GetHasFeat(FEAT_BONUS_DOMAIN_STORM) + + GetHasFeat(FEAT_BONUS_DOMAIN_METAL) + + GetHasFeat(FEAT_BONUS_DOMAIN_PORTAL) + + GetHasFeat(FEAT_BONUS_DOMAIN_FORCE) + + GetHasFeat(FEAT_BONUS_DOMAIN_SLIME) + + GetHasFeat(FEAT_BONUS_DOMAIN_TYRANNY) + + GetHasFeat(FEAT_BONUS_DOMAIN_DOMINATION) + + GetHasFeat(FEAT_BONUS_DOMAIN_SPIDER) + + GetHasFeat(FEAT_BONUS_DOMAIN_UNDEATH) + + GetHasFeat(FEAT_BONUS_DOMAIN_TIME) + + GetHasFeat(FEAT_BONUS_DOMAIN_DWARF) + + GetHasFeat(FEAT_BONUS_DOMAIN_CHARM) + + GetHasFeat(FEAT_BONUS_DOMAIN_ELF) + + GetHasFeat(FEAT_BONUS_DOMAIN_FAMILY) + + GetHasFeat(FEAT_BONUS_DOMAIN_FATE) + + GetHasFeat(FEAT_BONUS_DOMAIN_GNOME) + + GetHasFeat(FEAT_BONUS_DOMAIN_ILLUSION) + + GetHasFeat(FEAT_BONUS_DOMAIN_HATRED) + + GetHasFeat(FEAT_BONUS_DOMAIN_HALFLING) + + GetHasFeat(FEAT_BONUS_DOMAIN_NOBILITY) + + GetHasFeat(FEAT_BONUS_DOMAIN_OCEAN) + + GetHasFeat(FEAT_BONUS_DOMAIN_ORC) + + GetHasFeat(FEAT_BONUS_DOMAIN_RENEWAL) + + GetHasFeat(FEAT_BONUS_DOMAIN_RETRIBUTION) + + GetHasFeat(FEAT_BONUS_DOMAIN_RUNE) + + GetHasFeat(FEAT_BONUS_DOMAIN_SPELLS) + + GetHasFeat(FEAT_BONUS_DOMAIN_SCALEYKIND) + + GetHasFeat(FEAT_BONUS_DOMAIN_DRAGON) + + GetHasFeat(FEAT_BONUS_DOMAIN_COLD) + + GetHasFeat(FEAT_BONUS_DOMAIN_WINTER); + + int nMax = nMin; + //Determine maximum number of bonus domains (domains added automatically) + if(GetLevelByClass(CLASS_TYPE_MASTER_OF_SHROUDS)) + nMax += 3;//3 domains at 1st level + if(GetLevelByClass(CLASS_TYPE_SWIFT_WING)) + nMax += 1;//1 domain at 1st level + + if(nMin > dPC || dPC > nMax) + { + FloatingTextStringOnCreature("You have wrong amount of bonus domains. Please reselect your feats.", OBJECT_SELF, FALSE); + return TRUE; + } + return FALSE; +} + */ + +/* int Shaman() { int nClass = GetLevelByClass(CLASS_TYPE_SHAMAN); if(nClass) @@ -1423,7 +1549,7 @@ int Shaman() } return FALSE; } - + */ int RacialFeats() { int nRace = GetRacialType(OBJECT_SELF); diff --git a/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk b/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk index 98ee1c63..ff0acbf8 100644 Binary files a/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk and b/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk differ diff --git a/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk.xml b/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk.xml index 75e8d66e..bf09e403 100644 --- a/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk.xml +++ b/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk.xml @@ -69668,13 +69668,15 @@ Special: Must be proficient with at least one martial weapon. ABILITIES: +Spellcasting: At each level, you gain new spells per day and an increase in caster level (and spells known, if applicable) as if you had also gained a level in an arcane spellcasting class to which you belonged before adding the prestige class level. You do not, however, gain any other benefit a character of that class would have gained. If you had more than one arcane spellcasting class before becoming an abjurant champion, you must decide to which class to add each level for the purpose of determining spells per day, caster level, and spells known. + Level 1: Feat - Abjurant Armor - Any time you cast an abjuration spell that grants you an armor bonus or shield bonus to AC, you can increase the value of the bonus by your abjurant champion class level. Feat - Extended Abjuration - Any abjuration spell you cast is extended. 2: Feat - Swift Abjuration - You cast Abjuration spells as a swift action (NOT IMPLEMENTED). 3: 4: Feat - Arcane Boost - Expend a spell to improve some abilities. -5: Feat - Martial Arcanist - Use your attack bonus as your caster level if it is the higher of the two. +5: Feat - Martial Arcanist - Use your base attack bonus as your caster level if it is the higher of the two. Abjurant Armor Type of Feat: Class Prerequisite: Abjurant Champion 1 diff --git a/nwn/nwnprc/trunk/tlk/prc_consortium.tlk b/nwn/nwnprc/trunk/tlk/prc_consortium.tlk index 98ee1c63..ff0acbf8 100644 Binary files a/nwn/nwnprc/trunk/tlk/prc_consortium.tlk and b/nwn/nwnprc/trunk/tlk/prc_consortium.tlk differ