Added Inscribe Epic Runes. Added Great Intelligence and Inscribe Epic Runes as Runecaster epic bons feats. Changed Runecaster epic bonus feat progression to 1 every 4 levels past 10th. Bardic PrCs should be able to take Lingering Song & Extra Music as general feats. Forsakers can't use psionics, invocations, spellfire, shadowcasting, truenaming, binding, soulmelds or Supernatural Martial Maneuvers. Fixed elven courtblade / ambidexterity bug. Added more guardrails to prevent self-damage from onHit spells during PerformAttack(). Updated GetProperTarget() Removed ableist slur. RHD casters should work with JPM now. Reworked Blood in the Water's effect icon. Fixed Seize Item's VFX. RHD casters should be able to enter Dragon Disciple. Sharp Note doesn't step on Dragonfire Inspiration anymore.
69 lines
3.1 KiB
Plaintext
69 lines
3.1 KiB
Plaintext
/*
|
|
|
|
prc_spellfire.nss - Spellfire functions called here, all routed through the one script
|
|
|
|
notes: data stored as persistant local ints
|
|
|
|
By: Flaming_Sword
|
|
Created: December 17, 2005
|
|
Modified: February 15, 2006
|
|
|
|
Naming conventions:
|
|
nExpend <-> GetPersistantLocalInt(oPC, "SpellfireLevelExpend");
|
|
nStored <-> GetPersistantLocalInt(oPC, "SpellfireLevelStored");
|
|
|
|
Called Elsewhere:
|
|
|
|
CheckSpellfire()
|
|
|
|
*/
|
|
#include "prc_alterations"
|
|
#include "prc_spellf_inc"
|
|
|
|
void main()
|
|
{
|
|
object oPC = OBJECT_SELF;
|
|
|
|
// Block forsakers from using spellfire
|
|
if(GetLevelByClass(CLASS_TYPE_FORSAKER, oPC) > 0)
|
|
{
|
|
SendMessageToPC(oPC, "Forsakers cannot use the power of spellfire.");
|
|
return;
|
|
}
|
|
|
|
if(GetHasFeat(FEAT_SHADOWWEAVE, oPC))
|
|
{
|
|
SendMessageToPC(oPC, "You no longer have access to the weave and cannot use spellfire");
|
|
return;
|
|
}
|
|
int nSpellID = GetSpellId();
|
|
object oTarget = PRCGetSpellTargetObject();
|
|
switch (nSpellID)
|
|
{
|
|
case SPELL_SPELLFIRE_ATTACK: SpellfireAttack(oPC, oTarget, TRUE); break;
|
|
case SPELL_SPELLFIRE_HEAL: SpellfireHeal(oPC, oTarget); break;
|
|
case SPELL_SPELLFIRE_CHECK: SendMessageToPC(oPC, "Spellfire levels stored: " + IntToString(GetPersistantLocalInt(oPC, "SpellfireLevelStored"))); break;
|
|
case SPELL_SPELLFIRE_PLUS_ONE: AdjustSpellfire(oPC, 1); break;
|
|
case SPELL_SPELLFIRE_PLUS_FIVE: AdjustSpellfire(oPC, 5); break;
|
|
case SPELL_SPELLFIRE_PLUS_TEN: AdjustSpellfire(oPC, 10); break;
|
|
case SPELL_SPELLFIRE_PLUS_TWENTY: AdjustSpellfire(oPC, 20); break;
|
|
case SPELL_SPELLFIRE_MINUS_ONE: AdjustSpellfire(oPC, -1); break;
|
|
case SPELL_SPELLFIRE_MINUS_FIVE: AdjustSpellfire(oPC, -5); break;
|
|
case SPELL_SPELLFIRE_MINUS_TEN: AdjustSpellfire(oPC, -10); break;
|
|
case SPELL_SPELLFIRE_MINUS_TWENTY: AdjustSpellfire(oPC, -20); break;
|
|
case SPELL_SPELLFIRE_CHECK_EXP: SendMessageToPC(oPC, "Spellfire levels to expend: " + IntToString(GetPersistantLocalInt(oPC, "SpellfireLevelExpend"))); break;
|
|
case SPELL_SPELLFIRE_QUICKSELECT_CHANGE: SpellfireQuickselectChange(oPC); break;
|
|
case SPELL_SPELLFIRE_QUICKSELECT_1: //Gotta love cascading cases
|
|
case SPELL_SPELLFIRE_QUICKSELECT_2:
|
|
case SPELL_SPELLFIRE_QUICKSELECT_3: SpellfireQuickselect(oPC, nSpellID); break;
|
|
case SPELL_SPELLFIRE_DRAIN_CHARGED: SpellfireDrain(oPC, oTarget); break;
|
|
case SPELL_SPELLFIRE_RAPID_BLAST_TWO: SpellfireAttack(oPC, oTarget, TRUE, 2); break;
|
|
case SPELL_SPELLFIRE_RAPID_BLAST_THREE: SpellfireAttack(oPC, oTarget, TRUE, 3); break;
|
|
case SPELL_SPELLFIRE_DRAIN_PERMANENT: SpellfireDrain(oPC, oTarget, FALSE); break;
|
|
case SPELL_SPELLFIRE_CHARGE_ITEM: SpellfireChargeItem(oPC, oTarget); break;
|
|
case SPELL_SPELLFIRE_CROWN: SpellfireCrown(oPC); break;
|
|
case SPELL_SPELLFIRE_MAELSTROM: SpellfireMaelstrom(oPC); break;
|
|
case SPELL_SPELLFIRE_ABSORB: SpellfireToggleAbsorbFriendly(oPC); break;
|
|
default: if(DEBUG) DoDebug("Unrecognized SpellID: " + IntToString(nSpellID), oPC);
|
|
}
|
|
} |