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:
parent
f9f4d2c220
commit
dcc9a5a305
BIN
Release/PRC8_20241013.7z
Normal file
BIN
Release/PRC8_20241013.7z
Normal file
Binary file not shown.
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
Binary file not shown.
@ -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
|
||||
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user