mirror of
http://prc.nwn.ee:3000/Jaysyn/PRC8.git
synced 2026-10-29 08:28:31 -04:00
Piercing Cold now inflicts untyped damage
Piercing Cold now inflicts untyped damage. Cleaned up Midnight Augmentation. Dread Necromancer is an Arcane class. Expanded Iron Mind for epic progression. Expanded War Mind for epic progression. Fixed Gloura / Bard / Sublime Chord issues. Restored Nezumi race. Reverted Bard Armored spellcasting (change originally made due to incorrect SRD). Fixed Aura of Despair to only affect hostiles. Fixed damage cap on Disintegrate. Fixed bug where you could still wear armor under the effects of Luminous Armor. Fixed PsyWar bug with NUI Spellcast menu (@rakiov).
This commit is contained in:
1 parent
051083061b
commit
188047149c
28 files changed
+2226
-826
No files matched your search
@@ -478,6 +478,10 @@ const int FEAT_TOUCH_OF_LUCK = 4634;
|
||||
const int FEAT_FORESTLORD_TREEWALK = 4633;
|
||||
const int FEAT_KALASHTAR_PP = 5205;
|
||||
|
||||
const int FEAT_RACE_HARDINESS_VS_DISEASE = 26400;
|
||||
const int FEAT_NEZUMI_IMMUNE_SHADOWLANDS = 26401;
|
||||
const int FEAT_NEZUMI_KEEN_SCENT = 26402;
|
||||
|
||||
//:: PnP Weapon Proficiencies
|
||||
const int FEAT_WEAPON_PROFICIENCY_SHORTSWORD = 7901;
|
||||
const int FEAT_WEAPON_PROFICIENCY_LONGSWORD = 7902;
|
||||
@@ -3644,6 +3648,10 @@ const int FEAT_LUCKY_SHOT = 24021;
|
||||
//:: Bloodclaw Master
|
||||
const int FEAT_BCM_RENDING_CLAWS = 24065;
|
||||
|
||||
//:: Ironmind
|
||||
const int FEAT_ARMOURED_MIND = 3644;
|
||||
const int FEAT_MIND_OVER_BODY = 3645;
|
||||
|
||||
// Dread Necromancer
|
||||
const int FEAT_DN_SCABROUS_TOUCH = 24145;
|
||||
const int FEAT_DN_NEG_NRG_BURST = 24149;
|
||||
|
||||
@@ -895,8 +895,8 @@ int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
|
||||
if(GetHasFeat(FEAT_SHADOWADEPT_SPELLCASTING_BARD, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_SHADOW_ADEPT, oCaster);
|
||||
|
||||
// if(GetHasFeat(FEAT_SUBCHORD_SPELLCASTING_BARD, oCaster))
|
||||
// nArcane += GetLevelByClass(CLASS_TYPE_SUBLIME_CHORD, oCaster);
|
||||
if(GetHasFeat(FEAT_SUBLIME_CHORD_SPELLCASTING_BARD, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_SUBLIME_CHORD, oCaster);
|
||||
|
||||
if(GetHasFeat(FEAT_ULTMAGUS_SPELLCASTING_BARD, oCaster))
|
||||
nArcane += GetLevelByClass(CLASS_TYPE_ULTIMATE_MAGUS, oCaster);
|
||||
|
||||
@@ -1403,6 +1403,7 @@ void HathranFear(object oPC)
|
||||
|
||||
}
|
||||
|
||||
|
||||
void MephlingBreath(object oPC) //:: Mephlings
|
||||
{
|
||||
if(!GetHasFeat(FEAT_MEPHLING_BREATH, oPC))
|
||||
@@ -1618,6 +1619,28 @@ void FeatShadowblade(object oPC)
|
||||
FeatUsePerDay(oPC, FEAT_FAR_SHADOW, -1, iShadowLevel);
|
||||
}
|
||||
|
||||
void FeatIronMind(object oPC)
|
||||
{
|
||||
int iIronmindLvl = GetLevelByClass(CLASS_TYPE_IRONMIND, oPC);
|
||||
if (iIronmindLvl <= 0) return;
|
||||
|
||||
int nBonus;
|
||||
|
||||
// Armoured Mind: starts at level 1
|
||||
if (iIronmindLvl >= 1)
|
||||
{
|
||||
nBonus = 1 + (iIronmindLvl - 1) / 3;
|
||||
FeatUsePerDay(oPC, FEAT_ARMOURED_MIND, -1, nBonus);
|
||||
}
|
||||
|
||||
// Mind Over Body: starts at level 3
|
||||
if (iIronmindLvl >= 3)
|
||||
{
|
||||
nBonus = 1 + (iIronmindLvl - 3) / 3;
|
||||
FeatUsePerDay(oPC, FEAT_MIND_OVER_BODY, -1, nBonus);
|
||||
}
|
||||
}
|
||||
|
||||
void FeatNoble(object oPC)
|
||||
{
|
||||
int iNobleLevel = GetLevelByClass(CLASS_TYPE_NOBLE, oPC);
|
||||
@@ -2154,6 +2177,7 @@ void FeatSpecialUsePerDay(object oPC)
|
||||
FeatRacial(oPC);
|
||||
FeatShadowblade(oPC);
|
||||
SoulbornDefense(oPC);
|
||||
FeatIronMind(oPC);
|
||||
|
||||
int nDread = GetLevelByClass(CLASS_TYPE_DREAD_NECROMANCER, oPC);
|
||||
if (nDread >= 1)
|
||||
|
||||
@@ -2343,11 +2343,58 @@ int IsSpellDamageElemental(int nDamageType)
|
||||
return nDamageType & 2480;// 2480 = (DAMAGE_TYPE_ACID | DAMAGE_TYPE_COLD | DAMAGE_TYPE_ELECTRICAL | DAMAGE_TYPE_FIRE | DAMAGE_TYPE_SONIC)
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
// This function converts spell damage into the correct type
|
||||
// TODO: Change the name to consistent (large churn project).
|
||||
//
|
||||
// Updated by: TiredByFirelight
|
||||
int ChangedElementalDamage(object oCaster, int nDamageType)
|
||||
{
|
||||
|
||||
// None of the stuff here works when items are involved
|
||||
if (GetIsObjectValid(PRCGetSpellCastItem())) return nDamageType;
|
||||
|
||||
int nNewType;
|
||||
|
||||
//eldritch spellweave
|
||||
if(GetIsObjectValid(GetLocalObject(oCaster, "SPELLWEAVE_TARGET")))
|
||||
{
|
||||
int nEssence = GetLocalInt(oCaster, "BlastEssence");
|
||||
|
||||
if(nEssence == INVOKE_BRIMSTONE_BLAST)
|
||||
nNewType = DAMAGE_TYPE_FIRE;
|
||||
|
||||
else if(nEssence == INVOKE_HELLRIME_BLAST)
|
||||
nNewType = DAMAGE_TYPE_COLD;
|
||||
|
||||
else if(nEssence == INVOKE_UTTERDARK_BLAST)
|
||||
nNewType = DAMAGE_TYPE_NEGATIVE;
|
||||
|
||||
else if(nEssence == INVOKE_VITRIOLIC_BLAST)
|
||||
nNewType = DAMAGE_TYPE_ACID;
|
||||
|
||||
//save new type for other functions
|
||||
if(nNewType)
|
||||
SetLocalInt(oCaster, "archmage_mastery_elements", nNewType);
|
||||
}
|
||||
else
|
||||
// Check if an override is set
|
||||
nNewType = GetLocalInt(oCaster, "archmage_mastery_elements");
|
||||
|
||||
// If so, check if the spell qualifies for a change
|
||||
if (!nNewType || !IsSpellDamageElemental(nDamageType))
|
||||
nNewType = nDamageType;
|
||||
|
||||
if (GetLevelByClass(CLASS_TYPE_FROST_MAGE, oCaster) >= 4 && ((nDamageType == DAMAGE_TYPE_COLD)||nNewType == DAMAGE_TYPE_COLD))
|
||||
{
|
||||
nNewType = DAMAGE_TYPE_CUSTOM8; // Untyped
|
||||
SendMessageToPC(oCaster, "Piercing Cold - Spell ignores resistance or immunities to cold.");
|
||||
|
||||
}
|
||||
|
||||
return nNewType;
|
||||
}
|
||||
/* int ChangedElementalDamage(object oCaster, int nDamageType)
|
||||
{
|
||||
|
||||
// None of the stuff here works when items are involved
|
||||
@@ -2386,7 +2433,7 @@ int ChangedElementalDamage(object oCaster, int nDamageType)
|
||||
|
||||
return nNewType;
|
||||
}
|
||||
|
||||
*/
|
||||
//used in scripts after ChangedElementalDamage() to determine saving throw type
|
||||
int ChangedSaveType(int nDamageType)
|
||||
{
|
||||
|
||||
@@ -49,11 +49,12 @@ const int RACIAL_TYPE_ZENYRTHRI = 206;
|
||||
const int RACIAL_TYPE_HVISTANI = 146;
|
||||
const int RACIAL_TYPE_VISTANI = 147;
|
||||
|
||||
//Rokugan/Kara-Tur Races
|
||||
//:: Rokugan/Kara-Tur Races
|
||||
const int RACIAL_TYPE_TASLOI = 140;
|
||||
const int RACIAL_TYPE_SPIRIT_FOLK = 243;
|
||||
const int RACIAL_TYPE_KOROBKURU = 245;
|
||||
const int RACIAL_TYPE_NEZUMI = 246;
|
||||
const int RACIAL_TYPE_SPIRIT_FOLK = 243;
|
||||
const int RACIAL_TYPE_TASLOI = 140;
|
||||
|
||||
|
||||
//Spelljammer Races
|
||||
const int RACIAL_TYPE_SCRO = 182;
|
||||
|
||||
@@ -544,13 +544,27 @@ struct manifestation EvaluateAugmentation(struct manifestation manif, struct pow
|
||||
// Account for wild surge
|
||||
nAugPPCostReductions += nSurge;
|
||||
|
||||
// Midnight Augmentation feat from incarnum
|
||||
// Midnight Augmentation feat from incarnum
|
||||
if (GetHasFeat(FEAT_MIDNIGHT_AUGMENTATION, manif.oManifester))
|
||||
{
|
||||
int nPower = GetLocalInt(manif.oManifester, "MidnightAugPower");
|
||||
if (manif.nSpellID == nPower)
|
||||
{
|
||||
int bUsedFocus = UsePsionicFocus(manif.oManifester);
|
||||
if (bUsedFocus)
|
||||
{
|
||||
nAugPPCostReductions += GetEssentiaInvestedFeat(manif.oManifester, FEAT_MIDNIGHT_AUGMENTATION);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* // Midnight Augmentation feat from incarnum
|
||||
if (GetHasFeat(FEAT_MIDNIGHT_AUGMENTATION, manif.oManifester))
|
||||
{
|
||||
// Make sure the power is the correct one, and that you can expend your psionic focus
|
||||
if (manif.nSpellID == GetLocalInt(manif.oManifester, "MidnightAugPower") && UsePsionicFocus(manif.oManifester))
|
||||
nAugPPCostReductions += GetEssentiaInvestedFeat(manif.oManifester, FEAT_MIDNIGHT_AUGMENTATION);
|
||||
}
|
||||
} */
|
||||
|
||||
/*/ Various effects modifying the augmentation go above /*/
|
||||
|
||||
|
||||
@@ -249,8 +249,8 @@ int ArcaneSpellFailure(object oCaster, int nCastingClass, int nSpellLevel, int n
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
// Bards can cast in light armour and while using small shield.
|
||||
else if(nCastingClass == CLASS_TYPE_BARD)
|
||||
// Bards cannot cast in light armour and while using small shield in 3e
|
||||
/* else if(nCastingClass == CLASS_TYPE_BARD)
|
||||
{
|
||||
int nLvl = GetLevelByClass(CLASS_TYPE_BARD, oCaster);
|
||||
int nShield = GetBaseItemType(oShield);
|
||||
@@ -269,7 +269,7 @@ int ArcaneSpellFailure(object oCaster, int nCastingClass, int nSpellLevel, int n
|
||||
{
|
||||
case BASE_ITEM_SMALLSHIELD: nASF -= 5; break;
|
||||
}
|
||||
}
|
||||
} */
|
||||
// Duskblade can cast in light/medium armour and while using small/large shield.
|
||||
else if(nCastingClass == CLASS_TYPE_DUSKBLADE)
|
||||
{
|
||||
@@ -1372,6 +1372,276 @@ void EldritchSpellweave(object oCaster, object oTarget, int nSpellLevel, int bSp
|
||||
}
|
||||
}
|
||||
|
||||
//:: Returns True if oPC has a Secondary PrC that should prevent them from using
|
||||
//:: the Bioware spellbook as a Sublime Chord
|
||||
int CheckSecondaryPrC(object oPC = OBJECT_SELF)
|
||||
{
|
||||
if(DEBUG) DoDebug("x2_inc_spellhook: CheckSecondaryPrC >>> Starting", oPC);
|
||||
|
||||
int bBard = GetLevelByClass(CLASS_TYPE_BARD, oPC);
|
||||
int bBeguiler = GetLevelByClass(CLASS_TYPE_BEGUILER, oPC);
|
||||
int bDuskblade = GetLevelByClass(CLASS_TYPE_DUSKBLADE, oPC);
|
||||
int bSorcerer = GetLevelByClass(CLASS_TYPE_SORCERER, oPC);
|
||||
int bWarmage = GetLevelByClass(CLASS_TYPE_WARMAGE, oPC);
|
||||
|
||||
int nRace = GetRacialType(oPC);
|
||||
|
||||
if (bBard)
|
||||
{
|
||||
if(DEBUG) DoDebug("x2_inc_spellhook: CheckSecondaryPrC >>> Entering Bard", oPC);
|
||||
if (GetHasFeat(FEAT_FEY_SPELLCASTING_GLOURA)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ABCHAMP_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_AOTS_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ALCHEM_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ALIENIST_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ANIMA_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ARCTRICK_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ASMODEUS_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_BSINGER_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_BLDMAGUS_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_CMANCER_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_DHEART_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_DSONG_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_EKNIGHT_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ENLIGHTENEDFIST_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ELESAVANT_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ETHEURGE_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_FOCHLUCAN_LYRIST_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_FROSTMAGE_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_GRAZZT_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_HARPERM_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_HATHRAN_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_HAVOC_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_JPM_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_JUDICATOR_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_MAESTER_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_MAGEKILLER_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_MHARPER_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_NOCTUMANCER_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_OOZEMASTER_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_PALEMASTER_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_RAGEMAGE_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_SHADOWADEPT_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_SOULCASTER_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_SPELLDANCER_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_SSWORD_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_TIAMAT_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ULTMAGUS_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_UNSEEN_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_VIRTUOSO_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_WILDMAGE_SPELLCASTING_BARD)) return TRUE;
|
||||
if (GetHasFeat(FEAT_WWOC_SPELLCASTING_BARD)) return TRUE;
|
||||
}
|
||||
else if (bBeguiler)
|
||||
{
|
||||
if (GetHasFeat(FEAT_ABCHAMP_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_AOTS_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ALCHEM_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ALIENIST_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ANIMA_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ARCHMAGE_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ARCTRICK_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ASMODEUS_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_BSINGER_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_BLDMAGUS_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_CMANCER_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_DHEART_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_DSONG_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_EKNIGHT_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ENLIGHTENEDFIST_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ELESAVANT_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ETHEURGE_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_FOCHLUCAN_LYRIST_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_FROSTMAGE_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_GRAZZT_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_HARPERM_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_HATHRAN_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_HAVOC_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_JPM_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_JUDICATOR_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_MAESTER_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_MAGEKILLER_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_MHARPER_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_NOCTUMANCER_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_OOZEMASTER_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_PALEMASTER_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_RAGEMAGE_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_SHADOWADEPT_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_SOULCASTER_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_SPELLDANCER_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_SSWORD_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_TIAMAT_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ULTMAGUS_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_UNSEEN_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_VIRTUOSO_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_WILDMAGE_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_WWOC_SPELLCASTING_BEGUILER)) return TRUE;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
else if (bDuskblade)
|
||||
{
|
||||
if (GetHasFeat(FEAT_ABCHAMP_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_AOTS_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ALCHEM_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ANIMA_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ARCTRICK_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ASMODEUS_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_BSINGER_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_BLDMAGUS_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_CMANCER_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_DHEART_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_DSONG_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_EKNIGHT_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ENLIGHTENEDFIST_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ELESAVANT_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ETHEURGE_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_FOCHLUCAN_LYRIST_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_FROSTMAGE_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_GRAZZT_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_HARPERM_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_HATHRAN_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_HAVOC_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_JPM_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_JUDICATOR_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_MAESTER_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_MAGEKILLER_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_MHARPER_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_NOCTUMANCER_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_OOZEMASTER_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_PALEMASTER_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_RAGEMAGE_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_SHADOWADEPT_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_SOULCASTER_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_SPELLDANCER_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_SSWORD_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_TIAMAT_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_TNECRO_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ULTMAGUS_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_UNSEEN_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_VIRTUOSO_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_WILDMAGE_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_WWOC_SPELLCASTING_DUSKBLADE)) return TRUE;
|
||||
|
||||
|
||||
}
|
||||
else if (bSorcerer)
|
||||
{
|
||||
if (GetHasFeat(FEAT_ABERRATION_SPELLCASTING_DRIDER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_MONSTROUS_SPELLCASTING_ARKAMOI)) return TRUE;
|
||||
if (GetHasFeat(FEAT_MONSTROUS_SPELLCASTING_MARRUTACT)) return TRUE;
|
||||
if (GetHasFeat(FEAT_MONSTROUS_SPELLCASTING_REDSPAWN_ARCANISS)) return TRUE;
|
||||
if (GetHasFeat(FEAT_OUTSIDER_SPELLCASTING_RAKSHASA)) return TRUE;
|
||||
if (GetHasFeat(FEAT_SHAPECHANGER_SPELLCASTING_ARANEA)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ABCHAMP_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_AOTS_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ALCHEM_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ALIENIST_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ANIMA_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ARCHMAGE_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ARCTRICK_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ASMODEUS_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_BSINGER_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_BLDMAGUS_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_BONDED_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_CMANCER_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_DHEART_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_DSONG_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_EKNIGHT_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ENLIGHTENEDFIST_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ELESAVANT_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ETHEURGE_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_FMM_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_FOCHLUCAN_LYRIST_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_FROSTMAGE_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_GRAZZT_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_HARPERM_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_HATHRAN_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_HAVOC_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_JPM_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_JUDICATOR_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_MAESTER_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_MAGEKILLER_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_MHARPER_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_NOCTUMANCER_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_OOZEMASTER_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_PALEMASTER_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_RAGEMAGE_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_SHADOWADEPT_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_SOULCASTER_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_SPELLDANCER_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_SSWORD_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_TIAMAT_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_TNECRO_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ULTMAGUS_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_UNSEEN_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_VIRTUOSO_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_WAYFARER_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_WILDMAGE_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_WWOC_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_WILDMAGE_SPELLCASTING_SORCERER)) return TRUE;
|
||||
if (GetHasFeat(FEAT_WWOC_SPELLCASTING_SORCERER)) return TRUE;
|
||||
}
|
||||
else if (bWarmage)
|
||||
{
|
||||
if (GetHasFeat(FEAT_AOTS_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ALCHEM_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ANIMA_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ARCHMAGE_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ARCTRICK_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ASMODEUS_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_BSINGER_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_BLDMAGUS_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_BONDED_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_CMANCER_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_DIABOLIST_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_DHEART_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_DSONG_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_EKNIGHT_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ENLIGHTENEDFIST_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ELESAVANT_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ETHEURGE_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_FMM_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_FROSTMAGE_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_FOCHLUCAN_LYRIST_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_GRAZZT_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_HARPERM_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_HATHRAN_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_HAVOC_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_JPM_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_JUDICATOR_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_MAESTER_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_MAGEKILLER_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_MHARPER_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_MYSTIC_THEURGE_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_NOCTUMANCER_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_OOZEMASTER_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_PALEMASTER_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_RAGEMAGE_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_SHADOWADEPT_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_SOULCASTER_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_SPELLDANCER_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_SSWORD_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_TIAMAT_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_ULTMAGUS_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_UNSEEN_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_VIRTUOSO_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_WILDMAGE_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
if (GetHasFeat(FEAT_WWOC_SPELLCASTING_WARMAGE)) return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int BardSorcPrCCheck(object oCaster, int nCastingClass, object oSpellCastItem)
|
||||
{
|
||||
// If it's an item, get the hell out of here
|
||||
@@ -1388,7 +1658,12 @@ int BardSorcPrCCheck(object oCaster, int nCastingClass, object oSpellCastItem)
|
||||
//check its a sorc spell
|
||||
if(nCastingClass == CLASS_TYPE_SORCERER)
|
||||
{
|
||||
//no need to check further if new spellbooks are disabled
|
||||
if (CheckSecondaryPrC(oCaster) == TRUE)
|
||||
{
|
||||
FloatingTextStringOnCreature("x2_inc_spellhook: BardSorcPrCCheck >>> Sorcerer w/RHD found.", oCaster);
|
||||
return TRUE;
|
||||
}
|
||||
//no need to check further if new spellbooks are disabled
|
||||
if(GetPRCSwitch(PRC_SORC_DISALLOW_NEWSPELLBOOK))
|
||||
return TRUE;
|
||||
//check they have sorc levels
|
||||
@@ -1400,10 +1675,23 @@ int BardSorcPrCCheck(object oCaster, int nCastingClass, object oSpellCastItem)
|
||||
//check if they are casting via new spellbook
|
||||
if(GetLocalInt(oCaster, "NSB_Class") == CLASS_TYPE_SORCERER)
|
||||
return TRUE;
|
||||
if(GetLevelByClass(CLASS_TYPE_SUBLIME_CHORD, oCaster) > 0 && CheckSecondaryPrC(oCaster) == TRUE)
|
||||
{
|
||||
if (DEBUG) DoDebug("x2_inc_spellhook: BardSorcPrCCheck >>> Sublime Chord w/RHD found.", oCaster);
|
||||
FloatingTextStringOnCreature("You must use the new spellbook on the class radial.", oCaster, FALSE);
|
||||
return FALSE;
|
||||
}
|
||||
if (CheckSecondaryPrC(oCaster) == TRUE)
|
||||
{
|
||||
if (DEBUG) DoDebug("x2_inc_spellhook: BardSorcPrCCheck >>> Bard w/RHD found.", oCaster);
|
||||
FloatingTextStringOnCreature("You must use the new spellbook on the class radial.", oCaster, FALSE);
|
||||
return FALSE;
|
||||
}
|
||||
//check they have arcane PrC or Draconic Arcane Grace/Breath
|
||||
if(!(GetArcanePRCLevels(oCaster, nCastingClass) - GetLevelByClass(CLASS_TYPE_SUBLIME_CHORD, oCaster))
|
||||
&& !(GetHasFeat(FEAT_DRACONIC_GRACE, oCaster) || GetHasFeat(FEAT_DRACONIC_BREATH, oCaster)))
|
||||
return TRUE;
|
||||
|
||||
//check they have sorc in first arcane slot
|
||||
//if(GetPrimaryArcaneClass() != CLASS_TYPE_SORCERER)
|
||||
if(GetPrCAdjustedCasterLevelByType(TYPE_ARCANE, oCaster, TRUE) != GetPrCAdjustedCasterLevel(CLASS_TYPE_SORCERER, oCaster, TRUE))
|
||||
@@ -1418,31 +1706,60 @@ int BardSorcPrCCheck(object oCaster, int nCastingClass, object oSpellCastItem)
|
||||
//check its a bard spell
|
||||
if(nCastingClass == CLASS_TYPE_BARD)
|
||||
{
|
||||
//no need to check further if new spellbooks are disabled
|
||||
if(DEBUG) DoDebug("x2_inc_spellhook: BardSorcPrCCheck >>> nCastingClass is Bard.", oCaster);
|
||||
//no need to check further if new spellbooks are disabled
|
||||
if(GetPRCSwitch(PRC_BARD_DISALLOW_NEWSPELLBOOK))
|
||||
return TRUE;
|
||||
{
|
||||
if (DEBUG) DoDebug("x2_inc_spellhook: BardSorcPrCCheck >>> PRC_BARD_DISALLOW_NEWSPELLBOOK.", oCaster);
|
||||
return TRUE;
|
||||
}
|
||||
//check they have bard levels
|
||||
if(!GetLevelByClass(CLASS_TYPE_BARD, oCaster))
|
||||
return TRUE;
|
||||
{
|
||||
if(DEBUG) DoDebug("x2_inc_spellhook: BardSorcPrCCheck >>> Not a bard.", oCaster);
|
||||
return TRUE;
|
||||
}
|
||||
//check if they are casting via new spellbook
|
||||
if(GetLocalInt(oCaster, "NSB_Class") == CLASS_TYPE_BARD)
|
||||
return TRUE;
|
||||
//check they have arcane PrC or Draconic Arcane Grace/Breath
|
||||
{
|
||||
if(DEBUG) DoDebug("x2_inc_spellhook: BardSorcPrCCheck >>> Using new spellbook.", oCaster);
|
||||
return TRUE;
|
||||
}
|
||||
if(GetLevelByClass(CLASS_TYPE_SUBLIME_CHORD, oCaster) > 0 && CheckSecondaryPrC(oCaster) == TRUE)
|
||||
{
|
||||
if (DEBUG) DoDebug("x2_inc_spellhook: BardSorcPrCCheck >>> Sublime Chord w/RHD found.", oCaster);
|
||||
FloatingTextStringOnCreature("You must use the new spellbook on the class radial.", oCaster, FALSE);
|
||||
return FALSE;
|
||||
}
|
||||
if (CheckSecondaryPrC(oCaster) == TRUE)
|
||||
{
|
||||
if (DEBUG) DoDebug("x2_inc_spellhook: BardSorcPrCCheck >>> Bard w/RHD found.", oCaster);
|
||||
FloatingTextStringOnCreature("You must use the new spellbook on the class radial.", oCaster, FALSE);
|
||||
return FALSE;
|
||||
}
|
||||
//check they have arcane PrC or Draconic Arcane Grace/Breath
|
||||
if(!(GetArcanePRCLevels(oCaster, nCastingClass) - GetLevelByClass(CLASS_TYPE_SUBLIME_CHORD, oCaster))
|
||||
&& !(GetHasFeat(FEAT_DRACONIC_GRACE, oCaster) || GetHasFeat(FEAT_DRACONIC_BREATH, oCaster)))
|
||||
return TRUE;
|
||||
{
|
||||
if(DEBUG) DoDebug("x2_inc_spellhook: BardSorcPrCCheck >>> First Sublime Chord check.", oCaster);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//check they have bard in first arcane slot
|
||||
//if(GetPrimaryArcaneClass() != CLASS_TYPE_BARD)
|
||||
if(GetPrCAdjustedCasterLevelByType(TYPE_ARCANE, oCaster, TRUE) != GetPrCAdjustedCasterLevel(CLASS_TYPE_BARD, oCaster, TRUE))
|
||||
return TRUE;
|
||||
|
||||
if(GetPrCAdjustedCasterLevelByType(TYPE_ARCANE, oCaster, TRUE) != GetPrCAdjustedCasterLevelByType(CLASS_TYPE_BARD, oCaster, TRUE))
|
||||
{
|
||||
if(DEBUG) DoDebug("x2_inc_spellhook: BardSorcPrCCheck >>> GetPrCAdjustedCasterLevelByType.", oCaster);
|
||||
return TRUE;
|
||||
}
|
||||
//at this point, they must be using the bioware spellbook
|
||||
//from a class that adds to bard
|
||||
FloatingTextStringOnCreature("You must use the new spellbook on the class radial.", oCaster, FALSE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
if(DEBUG) DoDebug("x2_inc_spellhook: BardSorcPrCCheck >>> Returning TRUE.", oCaster);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user