PRC8/trunk/scripts/prc_metamagic.nss
Jaysyn904 6585d40a0f Major script update for 8 class support
Major script update for 8 class support.

prc_wipeNSB.nss

PRC_S_spellb.nss

prc_amagsys_gain.nss	- AMSCompatibilityCheck()

prc_prereq.nss			- Dragonheart(), KnightWeave()

prc_onenter.nss			- OnEnter_AMSCompatibilityCheck()

prc_metamagic.nss		- GetHasSpontaneousNSBClass()

prc_feats.nss

prc_dracactive.nss

prc_debug_hfeatm.nss

prc_cbtmed_spnhl.nss

psi_powconv.nss

psi_pow_bstpwr.nss

x2_pc_umdcheck.nss
2023-03-11 12:04:30 -05:00

58 lines
2.3 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Metamagic Feat Abilities
//:: prc_metamagic.nss
//:://////////////////////////////////////////////
//:: Grants new metamagic feat abilities for the new spell system.
//:://////////////////////////////////////////////
//:: Created By: N-S
//:: Created On: 20/09/2009
//:://////////////////////////////////////////////
//:: Updated for .35 by Jaysyn 2023/03/11
#include "inc_newspellbook"
int GetHasSpontaneousNSBClass(object oPC)
{
int i;
for (i = 1; i <= 8; i++)
{
int nClass = GetClassByPosition(i, oPC);
if (SPELLBOOK_TYPE_SPONTANEOUS == GetSpellbookTypeForClass(nClass))
return TRUE;
}
return FALSE;
}
void main()
{
object oPC = OBJECT_SELF;
if(DEBUG) DoDebug("prc_metamagic running");
if (!UseNewSpellBook(oPC))
{
if(DEBUG) DoDebug("prc_metamagic: New spellbook system disabled.");
return;
}
if (!GetHasSpontaneousNSBClass(oPC))
{
if(DEBUG) DoDebug("prc_metamagic: No spontaneously casting classes.");
return;
}
object oSkin = GetPCSkin(oPC);
if (GetHasFeat(FEAT_EXTEND_SPELL, oPC))
IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(IP_CONST_FEAT_EXTEND_SPELL_ABILITY), 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
if (GetHasFeat(FEAT_SILENCE_SPELL, oPC))
IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(IP_CONST_FEAT_SILENT_SPELL_ABILITY), 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
if (GetHasFeat(FEAT_STILL_SPELL, oPC))
IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(IP_CONST_FEAT_STILL_SPELL_ABILITY), 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
if (GetHasFeat(FEAT_EMPOWER_SPELL, oPC))
IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(IP_CONST_FEAT_EMPOWER_SPELL_ABILITY), 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
if (GetHasFeat(FEAT_MAXIMIZE_SPELL, oPC))
IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(IP_CONST_FEAT_MAXIMIZE_SPELL_ABILITY), 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
if (GetHasFeat(FEAT_QUICKEN_SPELL, oPC))
IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(IP_CONST_FEAT_QUICKEN_SPELL_ABILITY), 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
}