Invoker marker feats

Setup Invoker marker feats in 2DA, tlk, constants & scripts.  Removed left over Frost Mage class abilities from FMM & Wild Mage.
This commit is contained in:
Jaysyn904
2023-09-02 18:40:13 -04:00
parent 3e9bc37d6d
commit 5d520112ab
30 changed files with 2470 additions and 2079 deletions

View File

@@ -288,14 +288,132 @@ int GetInvocationPRCLevels(object oCaster)
+ GetLevelByClass(CLASS_TYPE_ELDRITCH_DISCIPLE, oCaster)
+ GetLevelByClass(CLASS_TYPE_ELDRITCH_THEURGE, oCaster);
//_some_ arcane spellcasting levels boost invocations
if(GetLocalInt(oCaster, "INV_Caster") == 2)
nLevel += (GetLevelByClass(CLASS_TYPE_ACOLYTE, oCaster) + 1) / 2
+ (GetLevelByClass(CLASS_TYPE_DISCIPLE_OF_ASMODEUS, oCaster) + 1) / 2
+ GetLevelByClass(CLASS_TYPE_ENLIGHTENEDFIST, oCaster)
+ GetLevelByClass(CLASS_TYPE_MAESTER, oCaster)
+ (GetLevelByClass(CLASS_TYPE_TALON_OF_TIAMAT, oCaster) + 1) / 2;
//:: Some Arcane PrCs boost invocations
/* if(GetLocalInt(oCaster, "INV_Caster") == 2)
nLevel += (GetLevelByClass(CLASS_TYPE_ACOLYTE, oCaster) + 1) / 2
+ (GetLevelByClass(CLASS_TYPE_DISCIPLE_OF_ASMODEUS, oCaster) + 1) / 2
+ GetLevelByClass(CLASS_TYPE_ENLIGHTENEDFIST, oCaster)
+ GetLevelByClass(CLASS_TYPE_MAESTER, oCaster)
+ (GetLevelByClass(CLASS_TYPE_TALON_OF_TIAMAT, oCaster) + 1) / 2; */
if(GetLocalInt(oCaster, "INV_Caster") == 2)
{
//:: Abjurant Champion Invoking
if(GetHasFeat(FEAT_ABCHAMP_INVOKING_WARLOCK, oCaster))
nLevel += GetLevelByClass(CLASS_TYPE_ABJURANT_CHAMPION, oCaster);
if(GetHasFeat(FEAT_ABCHAMP_INVOKING_DFA, oCaster))
nLevel += GetLevelByClass(CLASS_TYPE_ABJURANT_CHAMPION, oCaster);
if(GetHasFeat(FEAT_ABCHAMP_INVOKING_DRAGON_SHAMAN, oCaster))
nLevel += GetLevelByClass(CLASS_TYPE_ABJURANT_CHAMPION, oCaster);
//:: Acolyte of the Skin Invoking
if(GetHasFeat(FEAT_AOTS_INVOKING_WARLOCK, oCaster))
nLevel += (GetLevelByClass(CLASS_TYPE_ACOLYTE, oCaster) + 1) / 2;
if(GetHasFeat(FEAT_AOTS_INVOKING_DFA, oCaster))
nLevel += (GetLevelByClass(CLASS_TYPE_ACOLYTE, oCaster) + 1) / 2;
//:: Anima Mage Invoking
if(GetHasFeat(FEAT_ANIMA_INVOKING_WARLOCK, oCaster))
nLevel += GetLevelByClass(CLASS_TYPE_ANIMA_MAGE, oCaster);
if(GetHasFeat(FEAT_ANIMA_INVOKING_DFA, oCaster))
nLevel += GetLevelByClass(CLASS_TYPE_ANIMA_MAGE, oCaster);
//:: Arcane Trickster Invoking
if(GetHasFeat(FEAT_ARCTRICK_INVOKING_WARLOCK, oCaster))
nLevel += GetLevelByClass(CLASS_TYPE_ARCTRICK, oCaster);
if(GetHasFeat(FEAT_ARCTRICK_INVOKING_DFA, oCaster))
nLevel += GetLevelByClass(CLASS_TYPE_ARCTRICK, oCaster);
//:: Disciple of Asmodeus Invoking
if(GetHasFeat(FEAT_ASMODEUS_INVOKING_WARLOCK, oCaster))
nLevel += (GetLevelByClass(CLASS_TYPE_DISCIPLE_OF_ASMODEUS, oCaster) + 1) / 2;
if(GetHasFeat(FEAT_ASMODEUS_INVOKING_DFA, oCaster))
nLevel += (GetLevelByClass(CLASS_TYPE_DISCIPLE_OF_ASMODEUS, oCaster) + 1) / 2;
if(GetHasFeat(FEAT_ASMODEUS_INVOKING_DRAGON_SHAMAN, oCaster))
nLevel += (GetLevelByClass(CLASS_TYPE_DISCIPLE_OF_ASMODEUS, oCaster) + 1) / 2;
//:: Blood Magus Invoking
if(GetHasFeat(FEAT_BLDMAGUS_INVOKING_WARLOCK, oCaster))
nLevel += (GetLevelByClass(CLASS_TYPE_BLOOD_MAGUS, oCaster) + 1) / 2;
if(GetHasFeat(FEAT_BLDMAGUS_INVOKING_DFA, oCaster))
nLevel += (GetLevelByClass(CLASS_TYPE_BLOOD_MAGUS, oCaster) + 1) / 2;
//:: Enlightened Fist Invoking
if(GetHasFeat(FEAT_ENLIGHTENEDFIST_INVOKING_WARLOCK, oCaster))
nLevel += GetLevelByClass(CLASS_TYPE_ENLIGHTENEDFIST, oCaster);
if(GetHasFeat(FEAT_ENLIGHTENEDFIST_INVOKING_DFA, oCaster))
nLevel += GetLevelByClass(CLASS_TYPE_ENLIGHTENEDFIST, oCaster);
if(GetHasFeat(FEAT_ENLIGHTENEDFIST_INVOKING_DRAGON_SHAMAN, oCaster))
nLevel += GetLevelByClass(CLASS_TYPE_ENLIGHTENEDFIST, oCaster);
//:: Maester Invoking
if(GetHasFeat(FEAT_MAESTER_INVOKING_WARLOCK, oCaster))
nLevel += GetLevelByClass(CLASS_TYPE_MAESTER, oCaster);
if(GetHasFeat(FEAT_MAESTER_INVOKING_DFA, oCaster))
nLevel += GetLevelByClass(CLASS_TYPE_MAESTER, oCaster);
//:: Talon of Tiamat Invoking
if(GetHasFeat(FEAT_TIAMAT_INVOKING_WARLOCK, oCaster))
nLevel += (GetLevelByClass(CLASS_TYPE_TALON_OF_TIAMAT, oCaster) + 1) / 2;
if(GetHasFeat(FEAT_TIAMAT_INVOKING_DFA, oCaster))
nLevel += (GetLevelByClass(CLASS_TYPE_TALON_OF_TIAMAT, oCaster) + 1) / 2;
if(GetHasFeat(FEAT_TIAMAT_INVOKING_DRAGON_SHAMAN, oCaster))
nLevel += (GetLevelByClass(CLASS_TYPE_TALON_OF_TIAMAT, oCaster) + 1) / 2;
//:: Unseen Seer Invoking
if(GetHasFeat(FEAT_UNSEEN_INVOKING_WARLOCK, oCaster))
nLevel += GetLevelByClass(CLASS_TYPE_UNSEEN_SEER, oCaster);
if(GetHasFeat(FEAT_UNSEEN_INVOKING_DFA, oCaster))
nLevel += GetLevelByClass(CLASS_TYPE_UNSEEN_SEER, oCaster);
if(GetHasFeat(FEAT_UNSEEN_INVOKING_DRAGON_SHAMAN, oCaster))
nLevel += GetLevelByClass(CLASS_TYPE_UNSEEN_SEER, oCaster);
//:: Virtuoso Invoking
if(GetHasFeat(FEAT_VIRTUOSO_INVOKING_WARLOCK, oCaster))
nLevel += GetLevelByClass(CLASS_TYPE_VIRTUOSO, oCaster);
if(GetHasFeat(FEAT_VIRTUOSO_INVOKING_DFA, oCaster))
nLevel += GetLevelByClass(CLASS_TYPE_VIRTUOSO, oCaster);
if(GetHasFeat(FEAT_VIRTUOSO_INVOKING_DRAGON_SHAMAN, oCaster))
nLevel += GetLevelByClass(CLASS_TYPE_VIRTUOSO, oCaster);
//:: Wild Mage Invoking
if(GetHasFeat(FEAT_WILDMAGE_INVOKING_WARLOCK, oCaster))
{
int nClass = GetLevelByClass(CLASS_TYPE_WILD_MAGE, oCaster);
if (nClass)
nLevel += nClass - 3 + d6();
}
if(GetHasFeat(FEAT_WILDMAGE_INVOKING_DFA, oCaster))
{
int nClass = GetLevelByClass(CLASS_TYPE_WILD_MAGE, oCaster);
if (nClass)
nLevel += nClass - 3 + d6();
}
if(GetHasFeat(FEAT_WILDMAGE_INVOKING_DRAGON_SHAMAN, oCaster))
{
int nClass = GetLevelByClass(CLASS_TYPE_WILD_MAGE, oCaster);
if (nClass)
nLevel += nClass - 3 + d6();
}
}
return nLevel;
}
@@ -493,4 +611,4 @@ void ClearInvocationLocalVars(object oPC)
}
// Test main
//void main(){}
// void main(){}

View File

@@ -1745,7 +1745,7 @@ const int FEAT_SPELLDANCER_SPELLCASTING_VASSAL=26636;
const int FEAT_SWIFT_WING_SPELLCASTING_VASSAL=26637;
const int FEAT_WARPRIEST_SPELLCASTING_VASSAL=26638;
//Missed Marker feats : (
//:: Missed Spellcasting Marker feats : (
const int FEAT_ORCUS_SPELLCASTING_ABERRATION=26639;
const int FEAT_ORCUS_SPELLCASTING_ASSASSIN=26640;
const int FEAT_ORCUS_SPELLCASTING_BEGUILER=26641;
@@ -1769,6 +1769,49 @@ const int FEAT_MHARPER_SPELLCASTING_SUEL_ARCHANAMACH=26658;
const int FEAT_ORCUS_SPELLCASTING_SUEL_ARCHANAMACH=26659;
const int FEAT_ORCUS_SPELLCASTING_WARMAGE=26660;
//:: Warlock invoking marker feats
const int FEAT_ABCHAMP_INVOKING_WARLOCK = 26681;
const int FEAT_AOTS_INVOKING_WARLOCK = 26682;
const int FEAT_ANIMA_INVOKING_WARLOCK = 26683;
const int FEAT_ARCTRICK_INVOKING_WARLOCK = 26684;
const int FEAT_BLDMAGUS_INVOKING_WARLOCK = 26685;
const int FEAT_ASMODEUS_INVOKING_WARLOCK = 26686;
const int FEAT_ELDISCIPLE_INVOKING_WARLOCK = 26687;
const int FEAT_ETHEURGE_INVOKING_WARLOCK = 26688;
const int FEAT_ENLIGHTENEDFIST_INVOKING_WARLOCK = 26689;
const int FEAT_HELLFIRE_INVOKING_WARLOCK = 26690;
const int FEAT_MAESTER_INVOKING_WARLOCK = 26691;
const int FEAT_TIAMAT_INVOKING_WARLOCK = 26692;
const int FEAT_UNSEEN_INVOKING_WARLOCK = 26693;
const int FEAT_VIRTUOSO_INVOKING_WARLOCK = 26694;
const int FEAT_WILDMAGE_INVOKING_WARLOCK = 26695;
//:: Dragonfire Adept invoking marker feats
const int FEAT_ABCHAMP_INVOKING_DFA = 26696;
const int FEAT_AOTS_INVOKING_DFA = 26697;
const int FEAT_ANIMA_INVOKING_DFA = 26698;
const int FEAT_ARCTRICK_INVOKING_DFA = 26699;
const int FEAT_BLDMAGUS_INVOKING_DFA = 26700;
const int FEAT_ASMODEUS_INVOKING_DFA = 26701;
const int FEAT_ENLIGHTENEDFIST_INVOKING_DFA = 26702;
const int FEAT_MAESTER_INVOKING_DFA = 26703;
const int FEAT_TIAMAT_INVOKING_DFA = 26704;
const int FEAT_UNSEEN_INVOKING_DFA = 26705;
const int FEAT_VIRTUOSO_INVOKING_DFA = 26706;
const int FEAT_WILDMAGE_INVOKING_DFA = 26707;
//:: Dragon Shaman invoking marker feats
const int FEAT_ABCHAMP_INVOKING_DRAGON_SHAMAN = 26708;
const int FEAT_ASMODEUS_INVOKING_DRAGON_SHAMAN = 26709;
const int FEAT_ENLIGHTENEDFIST_INVOKING_DRAGON_SHAMAN = 26710;
const int FEAT_TIAMAT_INVOKING_DRAGON_SHAMAN = 26711;
const int FEAT_UNSEEN_INVOKING_DRAGON_SHAMAN = 26712;
const int FEAT_VIRTUOSO_INVOKING_DRAGON_SHAMAN = 26713;
const int FEAT_WILDMAGE_INVOKING_DRAGON_SHAMAN = 26714;
// skill based feats

View File

@@ -572,13 +572,79 @@ void EvalPRCFeats(object oPC)
//:: [PRC .35] Needs marker feats
// Classes an invoker can take
if(GetLevelByClass(CLASS_TYPE_MAESTER, oPC) ||
GetLevelByClass(CLASS_TYPE_ACOLYTE, oPC) ||
GetLevelByClass(CLASS_TYPE_ENLIGHTENEDFIST, oPC) ||
GetLevelByClass(CLASS_TYPE_DISCIPLE_OF_ASMODEUS, oPC))
{
//Set arcane or invocation bonus caster levels
if (GetLevelByClass(CLASS_TYPE_MAESTER, oPC)
&& GetHasFeat(FEAT_MAESTER_INVOKING_WARLOCK, oPC)
|| GetHasFeat(FEAT_MAESTER_INVOKING_DFA, oPC))
{SetLocalInt(oPC, "INV_Caster", 2);}
else if (GetLevelByClass(CLASS_TYPE_ACOLYTE, oPC)
&& GetHasFeat(FEAT_AOTS_INVOKING_WARLOCK, oPC)
|| GetHasFeat(FEAT_AOTS_INVOKING_DFA, oPC))
{SetLocalInt(oPC, "INV_Caster", 2);}
else if (GetLevelByClass(CLASS_TYPE_ABJURANT_CHAMPION, oPC)
&& GetHasFeat(FEAT_ABCHAMP_INVOKING_WARLOCK, oPC)
|| GetHasFeat(FEAT_ABCHAMP_INVOKING_DFA, oPC)
|| GetHasFeat(FEAT_ABCHAMP_INVOKING_DRAGON_SHAMAN, oPC))
{SetLocalInt(oPC, "INV_Caster", 2);}
else if (GetLevelByClass(CLASS_TYPE_ANIMA_MAGE, oPC)
&& GetHasFeat(FEAT_ANIMA_INVOKING_WARLOCK, oPC)
|| GetHasFeat(FEAT_ANIMA_INVOKING_DFA, oPC))
{SetLocalInt(oPC, "INV_Caster", 2);}
else if (GetLevelByClass(CLASS_TYPE_ARCTRICK, oPC)
&& GetHasFeat(FEAT_ARCTRICK_INVOKING_WARLOCK, oPC)
|| GetHasFeat(FEAT_ARCTRICK_INVOKING_DFA, oPC))
{SetLocalInt(oPC, "INV_Caster", 2);}
else if (GetLevelByClass(CLASS_TYPE_BLOOD_MAGUS, oPC)
&& GetHasFeat(FEAT_BLDMAGUS_INVOKING_WARLOCK, oPC)
|| GetHasFeat(FEAT_BLDMAGUS_INVOKING_DFA, oPC))
{SetLocalInt(oPC, "INV_Caster", 2);}
else if (GetLevelByClass(CLASS_TYPE_TALON_OF_TIAMAT, oPC)
&& GetHasFeat(FEAT_TIAMAT_INVOKING_WARLOCK, oPC)
|| GetHasFeat(FEAT_TIAMAT_INVOKING_DFA, oPC)
|| GetHasFeat(FEAT_TIAMAT_INVOKING_DRAGON_SHAMAN, oPC))
{SetLocalInt(oPC, "INV_Caster", 2);}
else if (GetLevelByClass(CLASS_TYPE_UNSEEN_SEER, oPC)
&& GetHasFeat(FEAT_UNSEEN_INVOKING_WARLOCK, oPC)
|| GetHasFeat(FEAT_UNSEEN_INVOKING_DFA, oPC)
|| GetHasFeat(FEAT_UNSEEN_INVOKING_DRAGON_SHAMAN, oPC))
{SetLocalInt(oPC, "INV_Caster", 2);}
else if (GetLevelByClass(CLASS_TYPE_VIRTUOSO, oPC)
&& GetHasFeat(FEAT_VIRTUOSO_INVOKING_WARLOCK, oPC)
|| GetHasFeat(FEAT_VIRTUOSO_INVOKING_DFA, oPC)
|| GetHasFeat(FEAT_VIRTUOSO_INVOKING_DRAGON_SHAMAN, oPC))
{SetLocalInt(oPC, "INV_Caster", 2);}
else if (GetLevelByClass(CLASS_TYPE_WILD_MAGE, oPC)
&& GetHasFeat(FEAT_WILDMAGE_INVOKING_WARLOCK, oPC)
|| GetHasFeat(FEAT_WILDMAGE_INVOKING_DFA, oPC)
|| GetHasFeat(FEAT_WILDMAGE_INVOKING_DRAGON_SHAMAN, oPC))
{SetLocalInt(oPC, "INV_Caster", 2);}
else if (GetLevelByClass(CLASS_TYPE_ENLIGHTENEDFIST, oPC)
&& GetHasFeat(FEAT_ENLIGHTENEDFIST_INVOKING_WARLOCK, oPC)
|| GetHasFeat(FEAT_ENLIGHTENEDFIST_INVOKING_DFA, oPC)
|| GetHasFeat(FEAT_ENLIGHTENEDFIST_INVOKING_DRAGON_SHAMAN, oPC))
{SetLocalInt(oPC, "INV_Caster", 2);}
else if (GetLevelByClass(CLASS_TYPE_DISCIPLE_OF_ASMODEUS, oPC)
&& GetHasFeat(FEAT_ASMODEUS_INVOKING_WARLOCK, oPC)
|| GetHasFeat(FEAT_ASMODEUS_INVOKING_DFA, oPC)
|| GetHasFeat(FEAT_ASMODEUS_INVOKING_DRAGON_SHAMAN, oPC))
{SetLocalInt(oPC, "INV_Caster", 2);}
else
{
SetLocalInt(oPC, "INV_Caster", 1);
}
/* //Set arcane or invocation bonus caster levels -- All handled via marker feats now.
//Arcane caster first class position, take arcane
if(GetFirstArcaneClassPosition(oPC) == 1)
SetLocalInt(oPC, "INV_Caster", 1);
@@ -591,7 +657,7 @@ void EvalPRCFeats(object oPC)
//last cas would be Non-invoker first class position, arcane second position. take arcane.
else
SetLocalInt(oPC, "INV_Caster", 1);
}
}*/
}
void DelayedAddIPFeats(int nExpectedGeneration, object oPC)