Finished Shadowcaster marker feats

Finished Shadowcaster marker feats.  Fixed Fochulan Lyrist not adding usages of Bard Song.  Fixed issue with classes that advance spellcasting, but don't require spellcasting.  Fixed Mystic Theurge & Force Missile Mage prereq functions.
This commit is contained in:
Jaysyn904
2023-10-20 16:21:26 -04:00
parent d8a072f489
commit 99241cf201
20 changed files with 27639 additions and 27118 deletions

View File

@@ -120,6 +120,7 @@ const string ALLOW_CLASS_FISTRAZIEL = "PRC_AllowFistRaz";
const string ALLOW_CLASS_FIST_OF_DAL_QUOR = "PRC_AllowDalQuor";
const string ALLOW_CLASS_FIST_OF_ZUOKEN = "PRC_AllowFoZ";
const string ALLOW_CLASS_FMM = "PRC_AllowFMM";
const string ALLOW_CLASS_FOCHULAN_LYRIST = "PRC_AllowFocLyr";
const string ALLOW_CLASS_FOE_HUNTER = "PRC_AllowFH";
const string ALLOW_CLASS_FORESTMASTER = "PRC_AllowForMast";
const string ALLOW_CLASS_FORSAKER = "PRC_AllowForsaker";

View File

@@ -1768,6 +1768,10 @@ const int FEAT_TNECRO_SPELLCASTING_SUBLIME_CHORD=26657;
const int FEAT_MHARPER_SPELLCASTING_SUEL_ARCHANAMACH=26658;
const int FEAT_ORCUS_SPELLCASTING_SUEL_ARCHANAMACH=26659;
const int FEAT_ORCUS_SPELLCASTING_WARMAGE=26660;
const int FEAT_DSONG_SPELLCASTING_NONE = 26661;
const int FEAT_ASMODEUS_SPELLCASTING_NONE = 26662;
const int FEAT_TIAMAT_SPELLCASTING_NONE = 26663;
const int FEAT_OLLAM_SPELLCASTING_NONE = 26664;
//:: Warlock invoking marker feats
const int FEAT_ABCHAMP_INVOKING_WARLOCK = 26681;
@@ -1811,11 +1815,11 @@ const int FEAT_WILDMAGE_INVOKING_DRAGON_SHAMAN = 26714;
//:: Shadowcaster marker feats
const int FEAT_AOTS_MYSTERY_SHADOWCASTER = 26731;
const int FEAT_ALIEN_MYSTERY_SHADOWCASTER = 26732;
const int FEAT_ALIENIST_MYSTERY_SHADOWCASTER = 26732;
const int FEAT_CHILDNIGHT_MYSTERY_SHADOWCASTER = 26733;
const int FEAT_ASMODEUS_MYSTERY_SHADOWCASTER = 26734;
const int FEAT_DRAGONSONG_MYSTERY_SHADOWCASTER = 26735;
const int FEAT_ESAVANT_MYSTERY_SHADOWCASTER = 26736;
const int FEAT_DSONG_MYSTERY_SHADOWCASTER = 26735;
const int FEAT_ELESAVANT_MYSTERY_SHADOWCASTER = 26736;
const int FEAT_MASTERSHADOW_MYSTERY_SHADOWCASTER = 26737;
const int FEAT_MYSTICTHEURGE_MYSTERY_SHADOWCASTER = 26738;
const int FEAT_NOCTUMANCER_MYSTERY_SHADOWCASTER = 26739;
@@ -1825,11 +1829,11 @@ const int FEAT_ORCUS_MYSTERY_SHADOWCASTER = 26742;
//:: Shadowsmith marker feats
const int FEAT_AOTS_MYSTERY_SHADOWSMITH = 26743;
const int FEAT_ALIEN_MYSTERY_SHADOWSMITH = 26744;
const int FEAT_ALIENIST_MYSTERY_SHADOWSMITH = 26744;
const int FEAT_CHILDNIGHT_MYSTERY_SHADOWSMITH = 26745;
const int FEAT_ASMODEUS_MYSTERY_SHADOWSMITH = 26746;
const int FEAT_DRAGONSONG_MYSTERY_SHADOWSMITH = 26747;
const int FEAT_ESAVANT_MYSTERY_SHADOWSMITH = 26748;
const int FEAT_DSONG_MYSTERY_SHADOWSMITH = 26747;
const int FEAT_ELESAVANT_MYSTERY_SHADOWSMITH = 26748;
const int FEAT_MASTERSHADOW_MYSTERY_SHADOWSMITH = 26749;
const int FEAT_MYSTICTHEURGE_MYSTERY_SHADOWSMITH = 26750;
const int FEAT_NOCTUMANCER_MYSTERY_SHADOWSMITH = 26751;

View File

@@ -1389,10 +1389,11 @@ void BardSong(object oPC)
// or other classes can grant it on their own
if(!GetHasFeat(FEAT_BARD_SONGS, oPC)) return;
int nTotal = GetLevelByClass(CLASS_TYPE_BARD, oPC);
nTotal += GetLevelByClass(CLASS_TYPE_DIRGESINGER, oPC);
nTotal += GetLevelByClass(CLASS_TYPE_VIRTUOSO, oPC);
nTotal += GetLevelByClass(CLASS_TYPE_SUBLIME_CHORD, oPC) / 2;
int nTotal = GetLevelByClass(CLASS_TYPE_BARD, oPC);
nTotal += GetLevelByClass(CLASS_TYPE_DIRGESINGER, oPC);
nTotal += GetLevelByClass(CLASS_TYPE_VIRTUOSO, oPC);
nTotal += GetLevelByClass(CLASS_TYPE_FOCHLUCAN_LYRIST, oPC);
nTotal += GetLevelByClass(CLASS_TYPE_SUBLIME_CHORD, oPC) / 2;
if(GetHasFeat(FEAT_EXTRA_MUSIC, oPC)) nTotal += 4;

View File

@@ -16,7 +16,7 @@
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////
//:: Updated for .35 by Jaysyn 2023/03/10
//:: Updated for .35 by Jaysyn 2023/10/19
//:: Test Void
// void main (){}
@@ -376,22 +376,88 @@ int GetPathByMystery(int nMystId)
return nReturn;
}
/*
The following PrCs will need to be added to Shadowcasting:
Disciple of Asmodeus, Thrall of Orcus, Ollam, Acolyte of the Skin,
Alienist, Elemental Savant, Dragonsong Lyrist, Talon of Tiamat &
Mystic Theurge
*/
int GetShadowMagicPRCLevels(object oShadow)
{
int nLevel = GetLevelByClass(CLASS_TYPE_NOCTUMANCER, oShadow);
// These two don't add at 1st level
if (GetLevelByClass(CLASS_TYPE_CHILD_OF_NIGHT, oShadow))
nLevel += GetLevelByClass(CLASS_TYPE_CHILD_OF_NIGHT, oShadow) - 1;
if (GetLevelByClass(CLASS_TYPE_MASTER_OF_SHADOW, oShadow))
nLevel += GetLevelByClass(CLASS_TYPE_MASTER_OF_SHADOW, oShadow) - 1;
int nLevel;
int nShadowClass = GetPrimaryShadowMagicClass(oShadow);
if (nShadowClass == CLASS_TYPE_SHADOWCASTER)
{
if(GetHasFeat(FEAT_AOTS_MYSTERY_SHADOWCASTER, oShadow))
nLevel += (GetLevelByClass(CLASS_TYPE_ACOLYTE, oShadow) + 1) / 2;
if(GetHasFeat(FEAT_ALIENIST_MYSTERY_SHADOWCASTER, oShadow))
nLevel += GetLevelByClass(CLASS_TYPE_ALIENIST, oShadow);
if(GetHasFeat(FEAT_CHILDNIGHT_MYSTERY_SHADOWCASTER, oShadow))
nLevel += GetLevelByClass(CLASS_TYPE_CHILD_OF_NIGHT, oShadow) -1; //:: No increase @ 1st level
if(GetHasFeat(FEAT_ASMODEUS_MYSTERY_SHADOWCASTER, oShadow))
nLevel += (GetLevelByClass(CLASS_TYPE_DISCIPLE_OF_ASMODEUS, oShadow) + 1) / 2;
if(GetHasFeat(FEAT_DSONG_MYSTERY_SHADOWCASTER, oShadow))
nLevel += (GetLevelByClass(CLASS_TYPE_DRAGONSONG_LYRIST, oShadow) + 1) / 2;
if(GetHasFeat(FEAT_ELESAVANT_MYSTERY_SHADOWCASTER, oShadow))
nLevel += GetLevelByClass(CLASS_TYPE_ELEMENTAL_SAVANT, oShadow);
if(GetHasFeat(FEAT_MASTERSHADOW_MYSTERY_SHADOWCASTER, oShadow))
nLevel += GetLevelByClass(CLASS_TYPE_MASTER_OF_SHADOW, oShadow) -1; //:: No increase @ 1st level
if(GetHasFeat(FEAT_MYSTICTHEURGE_MYSTERY_SHADOWCASTER, oShadow))
nLevel += GetLevelByClass(CLASS_TYPE_MYSTIC_THEURGE, oShadow);
if(GetHasFeat(FEAT_NOCTUMANCER_MYSTERY_SHADOWCASTER, oShadow))
nLevel += GetLevelByClass(CLASS_TYPE_NOCTUMANCER, oShadow);
if(GetHasFeat(FEAT_OLLAM_MYSTERY_SHADOWCASTER, oShadow))
nLevel += (GetLevelByClass(CLASS_TYPE_OLLAM, oShadow) + 1 / 2);
if(GetHasFeat(FEAT_TIAMAT_MYSTERY_SHADOWCASTER, oShadow))
nLevel += (GetLevelByClass(CLASS_TYPE_TALON_OF_TIAMAT, oShadow) + 1 / 2);
if(GetHasFeat(FEAT_ORCUS_MYSTERY_SHADOWCASTER, oShadow))
nLevel += (GetLevelByClass(CLASS_TYPE_ORCUS, oShadow) + 1 / 2);
}
if (nShadowClass == CLASS_TYPE_SHADOWSMITH)
{
if(GetHasFeat(FEAT_AOTS_MYSTERY_SHADOWSMITH, oShadow))
nLevel += (GetLevelByClass(CLASS_TYPE_ACOLYTE, oShadow) + 1) / 2;
if(GetHasFeat(FEAT_ALIENIST_MYSTERY_SHADOWSMITH, oShadow))
nLevel += GetLevelByClass(CLASS_TYPE_ALIENIST, oShadow);
if(GetHasFeat(FEAT_CHILDNIGHT_MYSTERY_SHADOWSMITH, oShadow))
nLevel += GetLevelByClass(CLASS_TYPE_CHILD_OF_NIGHT, oShadow) -1; //:: No increase @ 1st level
if(GetHasFeat(FEAT_ASMODEUS_MYSTERY_SHADOWSMITH, oShadow))
nLevel += (GetLevelByClass(CLASS_TYPE_DISCIPLE_OF_ASMODEUS, oShadow) + 1) / 2;
if(GetHasFeat(FEAT_DSONG_MYSTERY_SHADOWSMITH, oShadow))
nLevel += (GetLevelByClass(CLASS_TYPE_DRAGONSONG_LYRIST, oShadow) + 1) / 2;
if(GetHasFeat(FEAT_ELESAVANT_MYSTERY_SHADOWSMITH, oShadow))
nLevel += GetLevelByClass(CLASS_TYPE_ELEMENTAL_SAVANT, oShadow);
if(GetHasFeat(FEAT_MASTERSHADOW_MYSTERY_SHADOWSMITH, oShadow))
nLevel += GetLevelByClass(CLASS_TYPE_MASTER_OF_SHADOW, oShadow) -1; //:: No increase @ 1st level
if(GetHasFeat(FEAT_MYSTICTHEURGE_MYSTERY_SHADOWSMITH, oShadow))
nLevel += GetLevelByClass(CLASS_TYPE_MYSTIC_THEURGE, oShadow);
if(GetHasFeat(FEAT_NOCTUMANCER_MYSTERY_SHADOWSMITH, oShadow))
nLevel += GetLevelByClass(CLASS_TYPE_NOCTUMANCER, oShadow);
if(GetHasFeat(FEAT_OLLAM_MYSTERY_SHADOWSMITH, oShadow))
nLevel += (GetLevelByClass(CLASS_TYPE_OLLAM, oShadow) + 1 / 2);
if(GetHasFeat(FEAT_TIAMAT_MYSTERY_SHADOWSMITH, oShadow))
nLevel += (GetLevelByClass(CLASS_TYPE_TALON_OF_TIAMAT, oShadow) + 1 / 2);
if(GetHasFeat(FEAT_ORCUS_MYSTERY_SHADOWSMITH, oShadow))
nLevel += (GetLevelByClass(CLASS_TYPE_ORCUS, oShadow) + 1 / 2);
}
return nLevel;
}