Updated AMS marker feats. Removed arcane & divine marker feats. Updated Dread Necromancer for epic progression. Updated weapon baseitem models. Updated new weapons for crafting & npc equip. Updated prefix. Updated release archive.
89 lines
4.3 KiB
Plaintext
89 lines
4.3 KiB
Plaintext
//:://////////////////////////////////////////////
|
|
//:: FileName: "activate_epspell"
|
|
/* Purpose: This is the script that gets called by the OnItemActivated event
|
|
when the item is one of the Epic Spell books. It essentially displays
|
|
all relevant information on the epic spell, so that a player may make
|
|
an informed decision on whether to research the spell or not.
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Boneshank
|
|
//:: Last Updated On:
|
|
//:://////////////////////////////////////////////
|
|
|
|
#include "prc_alterations"
|
|
#include "inc_epicspells"
|
|
void main()
|
|
{
|
|
if(DEBUG) DoDebug("activate_epspell executing");
|
|
|
|
object oBook = GetItemActivated();
|
|
string sBook = GetTag(oBook);
|
|
string sName, sDesc;
|
|
int nEpicSpell = GetSpellFromAbrev(sBook);
|
|
int nDC = GetDCForSpell(nEpicSpell);
|
|
int nIP = GetResearchIPForSpell(nEpicSpell);
|
|
int nFE = GetResearchFeatForSpell(nEpicSpell);
|
|
int nR1 = GetR1ForSpell(nEpicSpell);
|
|
int nR2 = GetR2ForSpell(nEpicSpell);
|
|
int nR3 = GetR3ForSpell(nEpicSpell);
|
|
int nR4 = GetR4ForSpell(nEpicSpell);
|
|
int nS1 = GetS1ForSpell(nEpicSpell);
|
|
int nS2 = GetS2ForSpell(nEpicSpell);
|
|
int nS3 = GetS3ForSpell(nEpicSpell);
|
|
int nS4 = GetS4ForSpell(nEpicSpell);
|
|
int nS5 = GetS5ForSpell(nEpicSpell);
|
|
int nXC = GetCastXPForSpell(nEpicSpell);
|
|
string sSc = GetSchoolForSpell(nEpicSpell);
|
|
// If applicable, adjust the spell's DC.
|
|
if(GetPRCSwitch(PRC_EPIC_FOCI_ADJUST_DC))
|
|
nDC -= GetDCSchoolFocusAdjustment(OBJECT_SELF, sSc);
|
|
|
|
int nGP = nDC * GetPRCSwitch(PRC_EPIC_GOLD_MULTIPLIER);
|
|
int nXP = nGP / GetPRCSwitch(PRC_EPIC_XP_FRACTION);
|
|
sName = GetStringByStrRef(StringToInt(Get2DACache("feat", "feat", nFE)));
|
|
sDesc = GetStringByStrRef(StringToInt(Get2DACache("feat", "description", nFE)));
|
|
|
|
// Information message sent to player about the Epic Spell.
|
|
SendMessageToPC(OBJECT_SELF, "-------------------------------------------");
|
|
SendMessageToPC(OBJECT_SELF, "Requirements for the research of the " + sName + ":");
|
|
SendMessageToPC(OBJECT_SELF, " - You must be an epic level spellcaster.");
|
|
SendMessageToPC(OBJECT_SELF, " - The DC for you to research/cast is " + IntToString(nDC) + ".");
|
|
SendMessageToPC(OBJECT_SELF, " - The XP cost for you to research is " + IntToString(nXP) + ".");
|
|
SendMessageToPC(OBJECT_SELF, " - The gold cost for you to research is " + IntToString(nGP) + ".");
|
|
if (nS1 != -1)
|
|
SendMessageToPC(OBJECT_SELF, " - " + GetStringByStrRef(StringToInt
|
|
(Get2DACache("feat", "feat", StringToInt(Get2DACache("epicspellseeds", "FeatID", nS1))))));
|
|
if (nS2 != -1)
|
|
SendMessageToPC(OBJECT_SELF, " - " + GetStringByStrRef(StringToInt
|
|
(Get2DACache("feat", "feat", StringToInt(Get2DACache("epicspellseeds", "FeatID", nS2))))));
|
|
if (nS3 != -1)
|
|
SendMessageToPC(OBJECT_SELF, " - " + GetStringByStrRef(StringToInt
|
|
(Get2DACache("feat", "feat", StringToInt(Get2DACache("epicspellseeds", "FeatID", nS3))))));
|
|
if (nS4 != -1)
|
|
SendMessageToPC(OBJECT_SELF, " - " + GetStringByStrRef(StringToInt
|
|
(Get2DACache("feat", "feat", StringToInt(Get2DACache("epicspellseeds", "FeatID", nS4))))));
|
|
if (nS5 != -1)
|
|
SendMessageToPC(OBJECT_SELF, " - " + GetStringByStrRef(StringToInt
|
|
(Get2DACache("feat", "feat", StringToInt(Get2DACache("epicspellseeds", "FeatID", nS5))))));
|
|
if (nR1 != 0)
|
|
SendMessageToPC(OBJECT_SELF, " - " + GetStringByStrRef(StringToInt
|
|
(Get2DACache("feat", "feat", nR1))));
|
|
if (nR2 != 0)
|
|
SendMessageToPC(OBJECT_SELF, " - " + GetStringByStrRef(StringToInt
|
|
(Get2DACache("feat", "feat", nR2))));
|
|
if (nR3 != 0)
|
|
SendMessageToPC(OBJECT_SELF, " - " + GetStringByStrRef(StringToInt
|
|
(Get2DACache("feat", "feat", nR3))));
|
|
if (nR4 != 0)
|
|
SendMessageToPC(OBJECT_SELF, " - " + GetStringByStrRef(StringToInt
|
|
(Get2DACache("feat", "feat", nR4))));
|
|
if (nXC != 0 && GetPRCSwitch(PRC_EPIC_XP_COSTS) == TRUE)
|
|
SendMessageToPC(OBJECT_SELF, " - Additionally, " + IntToString(nXC) +
|
|
" experience points are spent per casting.");
|
|
SendMessageToPC(OBJECT_SELF, " ");
|
|
SendMessageToPC(OBJECT_SELF, "Spell Description:");
|
|
SendMessageToPC(OBJECT_SELF, sDesc);
|
|
SendMessageToPC(OBJECT_SELF, "-------------------------------------------");
|
|
|
|
}
|