8 class slot support for arcane & divine casters

8 class slot support for arcane & divine casters.  Added Marker feat enforcement script.  Expanded LA buyoff to 60 HD.  Marker feat constant bug fixes.
This commit is contained in:
Jaysyn904
2023-08-03 18:47:42 -04:00
parent a701b00420
commit d3de7f3987
20 changed files with 4307 additions and 73264 deletions

View File

@@ -355,6 +355,16 @@ int GetCanBuyoffLA(object oPC)
if (nChar >= StringToInt(Get2DACache("la_buyoff", "4th", nLA)))
nReturn = TRUE;
}
if (nBuyoff == 4) // Purchased fourth already
{
if (nChar >= StringToInt(Get2DACache("la_buyoff", "5th", nLA)))
nReturn = TRUE;
}
if (nBuyoff == 5) // Purchased fifth already
{
if (nChar >= StringToInt(Get2DACache("la_buyoff", "6th", nLA)))
nReturn = TRUE;
}
if (DEBUG) DoDebug("nReturn "+IntToString(nReturn)+" nBuyoff "+IntToString(nBuyoff)+" nChar "+IntToString(nChar)+" nLA "+IntToString(nLA));
return nReturn;

View File

@@ -40,7 +40,7 @@ const int FEAT_BSINGER_SPELLCASTING_FEY=25014;
const int FEAT_BLDMAGUS_SPELLCASTING_FEY=25015;
const int FEAT_CMANCER_SPELLCASTING_FEY=25016;
const int FEAT_COMBAT_MEDIC_SPELLCASTING_FEY=25017;
const int FEAT_DIABO_SPELLCASTING_FEY=25018;
const int FEAT_DIABOLIST_SPELLCASTING_FEY=25018;
const int FEAT_DHEART_SPELLCASTING_FEY=25019;
const int FEAT_DSONG_SPELLCASTING_FEY=25020;
const int FEAT_EKNIGHT_SPELLCASTING_FEY=25021;
@@ -90,7 +90,7 @@ const int FEAT_BSINGER_SPELLCASTING_ABERRATION=25062;
const int FEAT_BLDMAGUS_SPELLCASTING_ABERRATION=25063;
const int FEAT_BONDED_SPELLCASTING_ABERRATION=25064;
const int FEAT_CMANCER_SPELLCASTING_ABERRATION=25065;
const int FEAT_DIABO_SPELLCASTING_ABERRATION=25066;
const int FEAT_DIABOLIST_SPELLCASTING_ABERRATION=25066;
const int FEAT_DHEART_SPELLCASTING_ABERRATION=25067;
const int FEAT_DSONG_SPELLCASTING_ABERRATION=25068;
const int FEAT_EKNIGHT_SPELLCASTING_ABERRATION=25069;
@@ -143,7 +143,7 @@ const int FEAT_BLDMAGUS_SPELLCASTING_MONSTROUS=25113;
const int FEAT_BONDED_SPELLCASTING_MONSTROUS=25114;
const int FEAT_CMANCER_SPELLCASTING_MONSTROUS=25115;
const int FEAT_DHEART_SPELLCASTING_MONSTROUS=25116;
const int FEAT_DIABO_SPELLCASTING_MONSTROUS=25117;
const int FEAT_DIABOLIST_SPELLCASTING_MONSTROUS=25117;
const int FEAT_DSONG_SPELLCASTING_MONSTROUS=25118;
const int FEAT_EKNIGHT_SPELLCASTING_MONSTROUS=25119;
const int FEAT_ENLIGHTENEDFIST_SPELLCASTING_MONSTROUS=25120;
@@ -195,7 +195,7 @@ const int FEAT_BLDMAGUS_SPELLCASTING_OUTSIDER=25163;
const int FEAT_BONDED_SPELLCASTING_OUTSIDER=25164;
const int FEAT_CMANCER_SPELLCASTING_OUTSIDER=25165;
const int FEAT_DHEART_SPELLCASTING_OUTSIDER=25166;
const int FEAT_DIABO_SPELLCASTING_OUTSIDER=25167;
const int FEAT_DIABOLIST_SPELLCASTING_OUTSIDER=25167;
const int FEAT_DSONG_SPELLCASTING_OUTSIDER=25168;
const int FEAT_EKNIGHT_SPELLCASTING_OUTSIDER=25169;
const int FEAT_ENLIGHTENEDFIST_SPELLCASTING_OUTSIDER=25170;
@@ -247,7 +247,7 @@ const int FEAT_BLDMAGUS_SPELLCASTING_SHAPECHANGER=25213;
const int FEAT_BONDED_SPELLCASTING_SHAPECHANGER=25214;
const int FEAT_CMANCER_SPELLCASTING_SHAPECHANGER=25215;
const int FEAT_DHEART_SPELLCASTING_SHAPECHANGER=25216;
const int FEAT_DIABO_SPELLCASTING_SHAPECHANGER=25217;
const int FEAT_DIABOLIST_SPELLCASTING_SHAPECHANGER=25217;
const int FEAT_DSONG_SPELLCASTING_SHAPECHANGER=25218;
const int FEAT_EKNIGHT_SPELLCASTING_SHAPECHANGER=25219;
const int FEAT_ENLIGHTENEDFIST_SPELLCASTING_SHAPECHANGER=25220;
@@ -294,7 +294,7 @@ const int FEAT_ARCTRICK_SPELLCASTING_ASSASSIN=25258;
const int FEAT_ASMODEUS_SPELLCASTING_ASSASSIN=25259;
const int FEAT_BSINGER_SPELLCASTING_ASSASSIN=25260;
const int FEAT_CMANCER_SPELLCASTING_ASSASSIN=25261;
const int FEAT_DIABO_SPELLCASTING_ASSASSIN=25262;
const int FEAT_DIABOLIST_SPELLCASTING_ASSASSIN=25262;
const int FEAT_DHEART_SPELLCASTING_ASSASSIN=25263;
const int FEAT_EKNIGHT_SPELLCASTING_ASSASSIN=25264;
const int FEAT_ENLIGHTENEDFIST_SPELLCASTING_ASSASSIN=25265;
@@ -331,7 +331,7 @@ const int FEAT_BSINGER_SPELLCASTING_BARD=25293;
const int FEAT_BLDMAGUS_SPELLCASTING_BARD=25294;
const int FEAT_CMANCER_SPELLCASTING_BARD=25295;
const int FEAT_COMBAT_MEDIC_SPELLCASTING_BARD=25296;
const int FEAT_DIABO_SPELLCASTING_BARD=25297;
const int FEAT_DIABOLIST_SPELLCASTING_BARD=25297;
const int FEAT_DHEART_SPELLCASTING_BARD=25298;
const int FEAT_DSONG_SPELLCASTING_BARD=25299;
const int FEAT_EKNIGHT_SPELLCASTING_BARD=25300;
@@ -380,7 +380,7 @@ const int FEAT_ASMODEUS_SPELLCASTING_BEGUILER=25340;
const int FEAT_BSINGER_SPELLCASTING_BEGUILER=25341;
const int FEAT_BLDMAGUS_SPELLCASTING_BEGUILER=25342;
const int FEAT_CMANCER_SPELLCASTING_BEGUILER=25343;
const int FEAT_DIABO_SPELLCASTING_BEGUILER=25344;
const int FEAT_DIABOLIST_SPELLCASTING_BEGUILER=25344;
const int FEAT_DHEART_SPELLCASTING_BEGUILER=25345;
const int FEAT_DSONG_SPELLCASTING_BEGUILER=25346;
const int FEAT_EKNIGHT_SPELLCASTING_BEGUILER=25347;
@@ -450,7 +450,7 @@ const int FEAT_ARCTRICK_SPELLCASTING_CULTIST_PEAK=25406;
const int FEAT_ASMODEUS_SPELLCASTING_CULTIST_PEAK=25407;
const int FEAT_BSINGER_SPELLCASTING_CULTIST_PEAK=25408;
const int FEAT_CMANCER_SPELLCASTING_CULTIST_PEAK=25409;
const int FEAT_DIABO_SPELLCASTING_CULTIST_PEAK=25410;
const int FEAT_DIABOLIST_SPELLCASTING_CULTIST_PEAK=25410;
const int FEAT_DSONG_SPELLCASTING_CULTIST_PEAK=25411;
const int FEAT_EKNIGHT_SPELLCASTING_CULTIST_PEAK=25412;
const int FEAT_ENLIGHTENEDFIST_SPELLCASTING_CULTIST_PEAK=25413;
@@ -491,7 +491,7 @@ const int FEAT_ASMODEUS_SPELLCASTING_DNECRO=25445;
const int FEAT_BSINGER_SPELLCASTING_DNECRO=25446;
const int FEAT_BLDMAGUS_SPELLCASTING_DNECRO=25447;
const int FEAT_CMANCER_SPELLCASTING_DNECRO=25448;
const int FEAT_DIABO_SPELLCASTING_DNECRO=25449;
const int FEAT_DIABOLIST_SPELLCASTING_DNECRO=25449;
const int FEAT_DHEART_SPELLCASTING_DNECRO=25450;
const int FEAT_DSONG_SPELLCASTING_DNECRO=25451;
const int FEAT_EKNIGHT_SPELLCASTING_DNECRO=25452;
@@ -536,7 +536,7 @@ const int FEAT_BSINGER_SPELLCASTING_DUSKBLADE=25488;
const int FEAT_BLDMAGUS_SPELLCASTING_DUSKBLADE=25489;
const int FEAT_CMANCER_SPELLCASTING_DUSKBLADE=25490;
const int FEAT_DHEART_SPELLCASTING_DUSKBLADE=25491;
const int FEAT_DIABO_SPELLCASTING_DUSKBLADE=25492;
const int FEAT_DIABOLIST_SPELLCASTING_DUSKBLADE=25492;
const int FEAT_DSONG_SPELLCASTING_DUSKBLADE=25493;
const int FEAT_EKNIGHT_SPELLCASTING_DUSKBLADE=25494;
const int FEAT_ENLIGHTENEDFIST_SPELLCASTING_DUSKBLADE=25495;
@@ -616,7 +616,7 @@ const int FEAT_ASMODEUS_SPELLCASTING_HEXBLADE=25564;
const int FEAT_BONDED_SPELLCASTING_HEXBLADE=25565;
const int FEAT_BSINGER_SPELLCASTING_HEXBLADE=25566;
const int FEAT_CMANCER_SPELLCASTING_HEXBLADE=25567;
const int FEAT_DIABO_SPELLCASTING_HEXBLADE=25568;
const int FEAT_DIABOLIST_SPELLCASTING_HEXBLADE=25568;
const int FEAT_DHEART_SPELLCASTING_HEXBLADE=25569;
const int FEAT_DSONG_SPELLCASTING_HEXBLADE=25570;
const int FEAT_EKNIGHT_SPELLCASTING_HEXBLADE=25571;
@@ -698,7 +698,7 @@ const int FEAT_ARCTRICK_SPELLCASTING_SHADOWLORD=25642;
const int FEAT_ASMODEUS_SPELLCASTING_SHADOWLORD=25643;
const int FEAT_BSINGER_SPELLCASTING_SHADOWLORD=25644;
const int FEAT_CMANCER_SPELLCASTING_SHADOWLORD=25645;
const int FEAT_DIABO_SPELLCASTING_SHADOWLORD=25646;
const int FEAT_DIABOLIST_SPELLCASTING_SHADOWLORD=25646;
const int FEAT_DHEART_SPELLCASTING_SHADOWLORD=25647;
const int FEAT_DSONG_SPELLCASTING_SHADOWLORD=25648;
const int FEAT_EKNIGHT_SPELLCASTING_SHADOWLORD=25649;
@@ -743,7 +743,7 @@ const int FEAT_BSINGER_SPELLCASTING_SORCERER=25685;
const int FEAT_BLDMAGUS_SPELLCASTING_SORCERER=25686;
const int FEAT_BONDED_SPELLCASTING_SORCERER=25687;
const int FEAT_CMANCER_SPELLCASTING_SORCERER=25688;
const int FEAT_DIABO_SPELLCASTING_SORCERER=25689;
const int FEAT_DIABOLIST_SPELLCASTING_SORCERER=25689;
const int FEAT_DHEART_SPELLCASTING_SORCERER=25690;
const int FEAT_DSONG_SPELLCASTING_SORCERER=25691;
const int FEAT_EKNIGHT_SPELLCASTING_SORCERER=25692;
@@ -794,7 +794,7 @@ const int FEAT_ASMODEUS_SPELLCASTING_SUBLIME_CHORD=25734;
const int FEAT_BSINGER_SPELLCASTING_SUBLIME_CHORD=25735;
const int FEAT_BLDMAGUS_SPELLCASTING_SUBLIME_CHORD=25736;
const int FEAT_CMANCER_SPELLCASTING_SUBLIME_CHORD=25737;
const int FEAT_DIABO_SPELLCASTING_SUBLIME_CHORD=25738;
const int FEAT_DIABOLIST_SPELLCASTING_SUBLIME_CHORD=25738;
const int FEAT_DHEART_SPELLCASTING_SUBLIME_CHORD=25739;
const int FEAT_DSONG_SPELLCASTING_SUBLIME_CHORD=25740;
const int FEAT_EKNIGHT_SPELLCASTING_SUBLIME_CHORD=25741;
@@ -840,7 +840,7 @@ const int FEAT_ASMODEUS_SPELLCASTING_SUEL_ARCHANAMACH=25778;
const int FEAT_BSINGER_SPELLCASTING_SUEL_ARCHANAMACH=25779;
const int FEAT_BLDMAGUS_SPELLCASTING_ARCHANAMACH=25780;
const int FEAT_CMANCER_SPELLCASTING_SUEL_ARCHANAMACH=25781;
const int FEAT_DIABO_SPELLCASTING_SUEL_ARCHANAMACH=25782;
const int FEAT_DIABOLIST_SPELLCASTING_SUEL_ARCHANAMACH=25782;
const int FEAT_DHEART_SPELLCASTING_SUEL_ARCHANAMACH=25783;
const int FEAT_DSONG_SPELLCASTING_SUEL_ARCHANAMACH=25784;
const int FEAT_EKNIGHT_SPELLCASTING_SUEL_ARCHANAMACH=25785;
@@ -885,7 +885,7 @@ const int FEAT_BSINGER_SPELLCASTING_WARMAGE=25821;
const int FEAT_BLDMAGUS_SPELLCASTING_WARMAGE=25822;
const int FEAT_BONDED_SPELLCASTING_WARMAGE=25823;
const int FEAT_CMANCER_SPELLCASTING_WARMAGE=25824;
const int FEAT_DIABO_SPELLCASTING_WARMAGE=25825;
const int FEAT_DIABOLIST_SPELLCASTING_WARMAGE=25825;
const int FEAT_DHEART_SPELLCASTING_WARMAGE=25826;
const int FEAT_DSONG_SPELLCASTING_WARMAGE=25827;
const int FEAT_EKNIGHT_SPELLCASTING_WARMAGE=25828;
@@ -935,7 +935,7 @@ const int FEAT_BSINGER_SPELLCASTING_WIZARD=25869;
const int FEAT_BLDMAGUS_SPELLCASTING_WIZARD=25870;
const int FEAT_BONDED_SPELLCASTING_WIZARD=25871;
const int FEAT_CMANCER_SPELLCASTING_WIZARD=25872;
const int FEAT_DIABO_SPELLCASTING_WIZARD=25873;
const int FEAT_DIABOLIST_SPELLCASTING_WIZARD=25873;
const int FEAT_DSONG_SPELLCASTING_WIZARD=25874;
const int FEAT_EKNIGHT_SPELLCASTING_WIZARD=25875;
const int FEAT_ENLIGHTENEDFIST_SPELLCASTING_WIZARD=25876;
@@ -1622,7 +1622,7 @@ const int FEAT_TIAMAT_SPELLCASTING_SOHEI=26522;
const int FEAT_TENEBROUS_APOSTATE_SPELLCASTING_SOHEI=26523;
const int FEAT_WARPRIEST_SPELLCASTING_SOHEI=26524;
//:: Soldier of Light marker feats
const int FEAT_ALCHEM_SPELLCASTING_SOL=26525;
const int FEAT_BRIMSTONE_SPEAKER_SPELLCASTING_SOL=26526;
const int FEAT_COMBAT_MEDIC_SPELLCASTING_SOL=26527;
@@ -1744,7 +1744,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 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,7 @@ const int FEAT_ORCUS_SPELLCASTING_SUEL_ARCHANAMACH=26659;
const int FEAT_ORCUS_SPELLCASTING_WARMAGE=26660;
// skill based feats
const int FEAT_JUMP = 2884;

View File

@@ -101,7 +101,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID);
*
* @return Number of divine caster levels contributed by PrCs.
*/
int GetDivinePRCLevels(object oCaster);
int GetDivinePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID);
/**
* Gets the position of the first arcane base class.
@@ -652,7 +652,7 @@ int PRCGetCasterLevel(object oCaster = OBJECT_SELF)
{
iReturnLevel = GetLevelByClass(iCastingClass, oCaster) / GetCasterLevelModifier(iCastingClass);
if(GetPrimaryDivineClass(oCaster) == iCastingClass)
iReturnLevel += GetDivinePRCLevels(oCaster);
iReturnLevel += GetDivinePRCLevels(oCaster, iCastingClass);
iReturnLevel += PracticedSpellcasting(oCaster, iCastingClass, iReturnLevel);
@@ -789,7 +789,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
int nClass;
int nRace = GetRacialType(oCaster);
if (nCastingClass == CLASS_TYPE_BARD && GetLevelByClass(CLASS_TYPE_BARD))
if (nCastingClass == CLASS_TYPE_BARD || GetLevelByClass(CLASS_TYPE_BARD, oCaster))
{
//:: Includes RHD as bard. If they started with bard levels, then it
//:: counts as a prestige class, otherwise RHD is used instead of bard levels.
@@ -820,7 +820,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_COMBAT_MEDIC_SPELLCASTING_BARD, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_COMBAT_MEDIC, oCaster);
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_BARD, oCaster))
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_BARD, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_BARD, oCaster))
@@ -957,7 +957,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
}
//:: End Bard Arcane PrC casting calculations
if(nCastingClass == CLASS_TYPE_BARD && nRace == RACIAL_TYPE_GLOURA && !GetLevelByClass(CLASS_TYPE_BARD))
if(nCastingClass == CLASS_TYPE_BARD && nRace == RACIAL_TYPE_GLOURA && !GetLevelByClass(CLASS_TYPE_BARD, oCaster))
{
if(GetHasFeat(FEAT_ABCHAMP_SPELLCASTING_FEY, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_ABJURANT_CHAMPION, oCaster);
@@ -983,7 +983,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_COMBAT_MEDIC_SPELLCASTING_FEY, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_COMBAT_MEDIC, oCaster);
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_FEY, oCaster))
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_FEY, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_FEY, oCaster))
@@ -1117,7 +1117,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
}
//:: End Fey Arcane PrC casting calculations
if (nCastingClass == CLASS_TYPE_ASSASSIN)
if (nCastingClass == CLASS_TYPE_ASSASSIN || GetLevelByClass(CLASS_TYPE_ASSASSIN, oCaster))
{
if(GetHasFeat(FEAT_ABCHAMP_SPELLCASTING_ASSASSIN, oCaster)) //:: Requires Assassin 4
nArcane += GetLevelByClass(CLASS_TYPE_ABJURANT_CHAMPION, oCaster);
@@ -1140,7 +1140,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_ASSASSIN, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_ASSASSIN, oCaster))
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_ASSASSIN, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_ASSASSIN, oCaster))
@@ -1298,7 +1298,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_BEGUILER, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_BEGUILER, oCaster))
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_BEGUILER, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_BEGUILER, oCaster))
@@ -1460,7 +1460,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_CELEBRANT_SHARESS, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
/* if(GetHasFeat(FEAT_DIABO_SPELLCASTING_CELEBRANT_SHARESS, oCaster))
/* if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_CELEBRANT_SHARESS, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster); */
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_CELEBRANT_SHARESS, oCaster))
@@ -1608,7 +1608,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_CULTIST_PEAK, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_CULTIST_PEAK, oCaster))
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_CULTIST_PEAK, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
/* if(GetHasFeat(FEAT_DHEART_SPELLCASTING_CULTIST_PEAK, oCaster))
@@ -1771,7 +1771,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_DNECRO, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_DNECRO, oCaster))
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_DNECRO, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_DNECRO, oCaster))
@@ -1930,7 +1930,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_DUSKBLADE, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_DUSKBLADE, oCaster))
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_DUSKBLADE, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_DUSKBLADE, oCaster))
@@ -2096,7 +2096,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_HARPER, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
/* if(GetHasFeat(FEAT_DIABO_SPELLCASTING_HARPER, oCaster))
/* if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_HARPER, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster); */
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_HARPER, oCaster))
@@ -2247,7 +2247,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_HEXBLADE, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_HEXBLADE, oCaster))
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_HEXBLADE, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_HEXBLADE, oCaster))
@@ -2413,7 +2413,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_COMBAT_MEDIC_SPELLCASTING_KNIGHT_WEAVE, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_COMBAT_MEDIC, oCaster);
/* if(GetHasFeat(FEAT_DIABO_SPELLCASTING_KNIGHT_WEAVE, oCaster))
/* if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_KNIGHT_WEAVE, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster); */
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_KNIGHT_WEAVE, oCaster))
@@ -2583,7 +2583,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_SORCERER, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_SORCERER, oCaster))
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_SORCERER, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_SORCERER, oCaster))
@@ -2779,10 +2779,10 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|| GetHasFeat(FEAT_CMANCER_SPELLCASTING_SHAPECHANGER, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_MONSTROUS, oCaster)
|| GetHasFeat(FEAT_DIABO_SPELLCASTING_ABERRATION, oCaster)
|| GetHasFeat(FEAT_DIABO_SPELLCASTING_OUTSIDER, oCaster)
|| GetHasFeat(FEAT_DIABO_SPELLCASTING_SHAPECHANGER, oCaster))
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_MONSTROUS, oCaster)
|| GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_ABERRATION, oCaster)
|| GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_OUTSIDER, oCaster)
|| GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_SHAPECHANGER, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_MONSTROUS, oCaster)
@@ -3064,7 +3064,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_SUBLIME_CHORD, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_SUBLIME_CHORD, oCaster))
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_SUBLIME_CHORD, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_SUBLIME_CHORD, oCaster))
@@ -3228,7 +3228,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_SUEL_ARCHANAMACH, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_SUEL_ARCHANAMACH, oCaster))
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_SUEL_ARCHANAMACH, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_SUEL_ARCHANAMACH, oCaster))
@@ -3392,7 +3392,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_SHADOWLORD, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_SHADOWLORD, oCaster))
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_SHADOWLORD, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_SHADOWLORD, oCaster))
@@ -3555,7 +3555,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_WARMAGE, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_WARMAGE, oCaster))
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_WARMAGE, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
if(GetHasFeat(FEAT_DHEART_SPELLCASTING_WARMAGE, oCaster))
@@ -3719,7 +3719,7 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_CMANCER_SPELLCASTING_WIZARD, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster);
if(GetHasFeat(FEAT_DIABO_SPELLCASTING_WIZARD, oCaster))
if(GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_WIZARD, oCaster))
nArcane += GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster);
/* if(GetHasFeat(FEAT_DHEART_SPELLCASTING_WIZARD, oCaster))
@@ -3860,13 +3860,9 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
return nArcane;
}
int GetDivinePRCLevels(object oCaster)
int GetDivinePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
{
object oCaster = GetLastSpellCaster();
int nCastingClass = PRCGetLastSpellCastClass();
int nDivine = 0;
int nDivine = 0;
if (nCastingClass == CLASS_TYPE_ARCHIVIST)
{
@@ -7114,14 +7110,14 @@ int UrPriestCL(object oCaster, int nCastingClass)
if (iClass7 == CLASS_TYPE_HEXBLADE) iClass7Lev = (iClass7Lev >= 4) ? (iClass7Lev / 2) : 0;
if (iClass8 == CLASS_TYPE_HEXBLADE) iClass8Lev = (iClass8Lev >= 4) ? (iClass8Lev / 2) : 0;
if (iClass1 == iFirstArcane) iClass1Lev += GetArcanePRCLevels(oCaster);
if (iClass2 == iFirstArcane) iClass2Lev += GetArcanePRCLevels(oCaster);
if (iClass3 == iFirstArcane) iClass3Lev += GetArcanePRCLevels(oCaster);
if (iClass4 == iFirstArcane) iClass4Lev += GetArcanePRCLevels(oCaster);
if (iClass5 == iFirstArcane) iClass5Lev += GetArcanePRCLevels(oCaster);
if (iClass6 == iFirstArcane) iClass6Lev += GetArcanePRCLevels(oCaster);
if (iClass7 == iFirstArcane) iClass7Lev += GetArcanePRCLevels(oCaster);
if (iClass8 == iFirstArcane) iClass8Lev += GetArcanePRCLevels(oCaster);
if (iClass1 == iFirstArcane) iClass1Lev += GetArcanePRCLevels(oCaster, iClass1);
if (iClass2 == iFirstArcane) iClass2Lev += GetArcanePRCLevels(oCaster, iClass2);
if (iClass3 == iFirstArcane) iClass3Lev += GetArcanePRCLevels(oCaster, iClass3);
if (iClass4 == iFirstArcane) iClass4Lev += GetArcanePRCLevels(oCaster, iClass4);
if (iClass5 == iFirstArcane) iClass5Lev += GetArcanePRCLevels(oCaster, iClass5);
if (iClass6 == iFirstArcane) iClass6Lev += GetArcanePRCLevels(oCaster, iClass6);
if (iClass7 == iFirstArcane) iClass7Lev += GetArcanePRCLevels(oCaster, iClass7);
if (iClass8 == iFirstArcane) iClass8Lev += GetArcanePRCLevels(oCaster, iClass8);
iClass1Lev += PracticedSpellcasting(oCaster, iClass1, iClass1Lev);
iClass2Lev += PracticedSpellcasting(oCaster, iClass2, iClass2Lev);
@@ -7236,14 +7232,14 @@ int GetLevelByTypeArcane(object oCaster = OBJECT_SELF)
if (iClass7 == CLASS_TYPE_HEXBLADE) iClass7Lev = (iClass7Lev >= 4) ? (iClass7Lev / 2) : 0;
if (iClass8 == CLASS_TYPE_HEXBLADE) iClass8Lev = (iClass8Lev >= 4) ? (iClass8Lev / 2) : 0;
if (iClass1 == iFirstArcane) iClass1Lev += GetArcanePRCLevels(oCaster);
if (iClass2 == iFirstArcane) iClass2Lev += GetArcanePRCLevels(oCaster);
if (iClass3 == iFirstArcane) iClass3Lev += GetArcanePRCLevels(oCaster);
if (iClass4 == iFirstArcane) iClass4Lev += GetArcanePRCLevels(oCaster);
if (iClass5 == iFirstArcane) iClass5Lev += GetArcanePRCLevels(oCaster);
if (iClass6 == iFirstArcane) iClass6Lev += GetArcanePRCLevels(oCaster);
if (iClass7 == iFirstArcane) iClass7Lev += GetArcanePRCLevels(oCaster);
if (iClass8 == iFirstArcane) iClass8Lev += GetArcanePRCLevels(oCaster);
if (iClass1 == iFirstArcane) iClass1Lev += GetArcanePRCLevels(oCaster, iClass1);
if (iClass2 == iFirstArcane) iClass2Lev += GetArcanePRCLevels(oCaster, iClass2);
if (iClass3 == iFirstArcane) iClass3Lev += GetArcanePRCLevels(oCaster, iClass3);
if (iClass4 == iFirstArcane) iClass4Lev += GetArcanePRCLevels(oCaster, iClass4);
if (iClass5 == iFirstArcane) iClass5Lev += GetArcanePRCLevels(oCaster, iClass5);
if (iClass6 == iFirstArcane) iClass6Lev += GetArcanePRCLevels(oCaster, iClass6);
if (iClass7 == iFirstArcane) iClass7Lev += GetArcanePRCLevels(oCaster, iClass7);
if (iClass8 == iFirstArcane) iClass8Lev += GetArcanePRCLevels(oCaster, iClass8);
iClass1Lev += PracticedSpellcasting(oCaster, iClass1, iClass1Lev);
iClass2Lev += PracticedSpellcasting(oCaster, iClass2, iClass2Lev);
@@ -7306,14 +7302,14 @@ int GetLevelByTypeDivine(object oCaster = OBJECT_SELF)
if (iClass7 == CLASS_TYPE_PALADIN || iClass7 == CLASS_TYPE_RANGER) iClass1Lev = (iClass1Lev >= 4) ? (iClass1Lev / 2) : 0;
if (iClass8 == CLASS_TYPE_PALADIN || iClass8 == CLASS_TYPE_RANGER) iClass2Lev = (iClass2Lev >= 4) ? (iClass2Lev / 2) : 0;
if (iClass1 == iFirstDivine) iClass1Lev += GetDivinePRCLevels(oCaster);
if (iClass2 == iFirstDivine) iClass2Lev += GetDivinePRCLevels(oCaster);
if (iClass3 == iFirstDivine) iClass3Lev += GetDivinePRCLevels(oCaster);
if (iClass4 == iFirstDivine) iClass4Lev += GetDivinePRCLevels(oCaster);
if (iClass5 == iFirstDivine) iClass5Lev += GetDivinePRCLevels(oCaster);
if (iClass6 == iFirstDivine) iClass6Lev += GetDivinePRCLevels(oCaster);
if (iClass7 == iFirstDivine) iClass7Lev += GetDivinePRCLevels(oCaster);
if (iClass8 == iFirstDivine) iClass8Lev += GetDivinePRCLevels(oCaster);
if (iClass1 == iFirstDivine) iClass1Lev += GetDivinePRCLevels(oCaster, iClass1);
if (iClass2 == iFirstDivine) iClass2Lev += GetDivinePRCLevels(oCaster, iClass2);
if (iClass3 == iFirstDivine) iClass3Lev += GetDivinePRCLevels(oCaster, iClass3);
if (iClass4 == iFirstDivine) iClass4Lev += GetDivinePRCLevels(oCaster, iClass4);
if (iClass5 == iFirstDivine) iClass5Lev += GetDivinePRCLevels(oCaster, iClass5);
if (iClass6 == iFirstDivine) iClass6Lev += GetDivinePRCLevels(oCaster, iClass6);
if (iClass7 == iFirstDivine) iClass7Lev += GetDivinePRCLevels(oCaster, iClass7);
if (iClass8 == iFirstDivine) iClass8Lev += GetDivinePRCLevels(oCaster, iClass8);
iClass1Lev += PracticedSpellcasting(oCaster, iClass1, iClass1Lev);
iClass2Lev += PracticedSpellcasting(oCaster, iClass2, iClass2Lev);

View File

@@ -495,15 +495,14 @@ int GetLevelByTypeArcaneFeats(object oCaster = OBJECT_SELF, int iSpellID = -1)
if (iClass7 == CLASS_TYPE_HEXBLADE) iClass7Lev = (iClass7Lev >= 4) ? (iClass7Lev / 2) : 0;
if (iClass8 == CLASS_TYPE_HEXBLADE) iClass8Lev = (iClass8Lev >= 4) ? (iClass8Lev / 2) : 0;
if (iClass1 == iFirstArcane) iClass1Lev += GetArcanePRCLevels(oCaster);
if (iClass2 == iFirstArcane) iClass2Lev += GetArcanePRCLevels(oCaster);
if (iClass3 == iFirstArcane) iClass3Lev += GetArcanePRCLevels(oCaster);
if (iClass1 == iFirstArcane) iClass1Lev += GetArcanePRCLevels(oCaster);
if (iClass2 == iFirstArcane) iClass2Lev += GetArcanePRCLevels(oCaster);
if (iClass3 == iFirstArcane) iClass3Lev += GetArcanePRCLevels(oCaster);
if (iClass1 == iFirstArcane) iClass1Lev += GetArcanePRCLevels(oCaster);
if (iClass2 == iFirstArcane) iClass2Lev += GetArcanePRCLevels(oCaster);
if (iClass3 == iFirstArcane) iClass3Lev += GetArcanePRCLevels(oCaster);
if (iClass1 == iFirstArcane) iClass1Lev += GetArcanePRCLevels(oCaster, iClass1);
if (iClass2 == iFirstArcane) iClass2Lev += GetArcanePRCLevels(oCaster, iClass2);
if (iClass3 == iFirstArcane) iClass3Lev += GetArcanePRCLevels(oCaster, iClass3);
if (iClass4 == iFirstArcane) iClass4Lev += GetArcanePRCLevels(oCaster, iClass4);
if (iClass5 == iFirstArcane) iClass5Lev += GetArcanePRCLevels(oCaster, iClass5);
if (iClass6 == iFirstArcane) iClass6Lev += GetArcanePRCLevels(oCaster, iClass6);
if (iClass7 == iFirstArcane) iClass7Lev += GetArcanePRCLevels(oCaster, iClass7);
if (iClass8 == iFirstArcane) iClass8Lev += GetArcanePRCLevels(oCaster, iClass8);
iClass1Lev += iBoost;
iClass2Lev += iBoost;
@@ -607,14 +606,14 @@ int GetLevelByTypeDivineFeats(object oCaster = OBJECT_SELF, int iSpellID = -1)
|| iClass8 == CLASS_TYPE_ANTI_PALADIN)
iClass8Lev = iClass7Lev / 2;
if (iClass1 == iFirstDivine) iClass1Lev += GetDivinePRCLevels(oCaster);
if (iClass2 == iFirstDivine) iClass2Lev += GetDivinePRCLevels(oCaster);
if (iClass3 == iFirstDivine) iClass3Lev += GetDivinePRCLevels(oCaster);
if (iClass4 == iFirstDivine) iClass4Lev += GetDivinePRCLevels(oCaster);
if (iClass5 == iFirstDivine) iClass5Lev += GetDivinePRCLevels(oCaster);
if (iClass6 == iFirstDivine) iClass6Lev += GetDivinePRCLevels(oCaster);
if (iClass7 == iFirstDivine) iClass7Lev += GetDivinePRCLevels(oCaster);
if (iClass8 == iFirstDivine) iClass8Lev += GetDivinePRCLevels(oCaster);
if (iClass1 == iFirstDivine) iClass1Lev += GetDivinePRCLevels(oCaster, iClass1);
if (iClass2 == iFirstDivine) iClass2Lev += GetDivinePRCLevels(oCaster, iClass2);
if (iClass3 == iFirstDivine) iClass3Lev += GetDivinePRCLevels(oCaster, iClass3);
if (iClass4 == iFirstDivine) iClass4Lev += GetDivinePRCLevels(oCaster, iClass4);
if (iClass5 == iFirstDivine) iClass5Lev += GetDivinePRCLevels(oCaster, iClass5);
if (iClass6 == iFirstDivine) iClass6Lev += GetDivinePRCLevels(oCaster, iClass6);
if (iClass7 == iFirstDivine) iClass7Lev += GetDivinePRCLevels(oCaster, iClass7);
if (iClass8 == iFirstDivine) iClass8Lev += GetDivinePRCLevels(oCaster, iClass8);
iClass1Lev += iBoost;
iClass2Lev += iBoost;

View File

@@ -3150,4 +3150,4 @@ int X2PreSpellCastCode2()
// Test main
// void main(){}
//void main(){}