Fixed Shaman Bonus Domain issue

Fixed bug where a Shaman could still take bonus domains early, which would break the PC when they hit 11th level.  Updated Abjurant Champion description.  Updated weapon size checks for maul & falchion (thanks @barmlot).  Updated release archive.
This commit is contained in:
Jaysyn904 2024-10-13 14:13:25 -04:00
parent f9f4d2c220
commit dcc9a5a305
8 changed files with 138 additions and 4 deletions

BIN
Release/PRC8_20241013.7z Normal file

Binary file not shown.

View File

@ -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;
}

View File

@ -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;

View File

@ -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);

View File

@ -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.</entry>
5: Feat - Martial Arcanist - Use your base attack bonus as your caster level if it is the higher of the two.</entry>
<entry id="70440" lang="en" sex="m">Abjurant Armor</entry>
<entry id="70441" lang="en" sex="m">Type of Feat: Class
Prerequisite: Abjurant Champion 1