PRC8/nwn/nwnprc/trunk/newspellbook/tob_masterofnine.nss
Jaysyn904 6ec137a24e Updated AMS marker feats
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.
2024-02-11 14:01:05 -05:00

82 lines
3.4 KiB
Plaintext

#include "tob_inc_tobfunc"
#include "tob_inc_recovery"
void main()
{
object oInitiator = OBJECT_SELF;
int nEvent = GetRunningEvent();
int nClass = GetPrimaryBladeMagicClass(oInitiator);
int nMoveTotal = GetKnownManeuversModifier(oInitiator, nClass, MANEUVER_TYPE_MANEUVER);
int nStncTotal = GetKnownManeuversModifier(oInitiator, nClass, MANEUVER_TYPE_STANCE);
int nRdyTotal = GetReadiedManeuversModifier(oInitiator, nClass);
int nMoNLvl = GetLevelByClass(CLASS_TYPE_MASTER_OF_NINE, oInitiator);
int nMoNBonusMove = ((nMoNLvl * 3) + 1) / 2;
int nMoNBonusStance = nMoNLvl / 2;
int nMod;
// We aren't being called from any event, instead from EvalPRCFeats
if(nEvent == FALSE)
{
// Allows gaining of maneuvers by prestige classes
nMod = nMoNBonusMove - GetPersistantLocalInt(oInitiator, "ToBMasterOfNineMove");
if(nMod)
{
SetKnownManeuversModifier(oInitiator, nClass, nMoveTotal + nMod, MANEUVER_TYPE_MANEUVER);
SetPersistantLocalInt(oInitiator, "ToBMasterOfNineMove", nMoNBonusMove);
SetPersistantLocalInt(oInitiator, "AllowedDisciplines", 511);
}
nMod = nMoNBonusStance - GetPersistantLocalInt(oInitiator, "ToBMasterOfNineStance");
if(nMod)
{
SetKnownManeuversModifier(oInitiator, nClass, nStncTotal + nMod, MANEUVER_TYPE_STANCE);
SetPersistantLocalInt(oInitiator, "ToBMasterOfNineStance", nMoNBonusStance);
SetPersistantLocalInt(oInitiator, "AllowedDisciplines", 511);
}
nMod = nMoNLvl - GetPersistantLocalInt(oInitiator, "ToBMasterOfNineReady");
if(nMod)
{
SetReadiedManeuversModifier(oInitiator, nClass, nRdyTotal + nMod);
SetPersistantLocalInt(oInitiator, "ToBMasterOfNineReady", nMoNLvl);
}
// Hook to OnLevelDown to remove the maneuver slots granted here
AddEventScript(oInitiator, EVENT_ONPLAYERLEVELDOWN, "tob_masterofnine", TRUE, FALSE);
}
else if(nEvent == EVENT_ONPLAYERLEVELDOWN)
{
// Has lost Maneuver, but the slot is still present
nMod = GetPersistantLocalInt(oInitiator, "ToBMasterOfNineMove") - nMoNBonusMove;
if(nMod)
{
SetKnownManeuversModifier(oInitiator, nClass, nMoveTotal - nMod, MANEUVER_TYPE_MANEUVER);
SetPersistantLocalInt(oInitiator, "ToBMasterOfNineMove", nMoNBonusMove);
}
nMod = GetPersistantLocalInt(oInitiator, "ToBMasterOfNineStance") - nMoNBonusStance;
if(nMod)
{
SetKnownManeuversModifier(oInitiator, nClass, nMoveTotal - nMod, MANEUVER_TYPE_STANCE);
SetPersistantLocalInt(oInitiator, "ToBMasterOfNineStance", nMoNBonusStance);
}
nMod = GetPersistantLocalInt(oInitiator, "ToBMasterOfNineReady") - nMoNLvl;
if(nMod)
{
SetReadiedManeuversModifier(oInitiator, nClass, nRdyTotal - nMod);
SetPersistantLocalInt(oInitiator, "ToBMasterOfNineReady", nMoNLvl);
}
// Remove eventhook if the character no longer has levels in Master of Nine
if(!nMoNLvl)
{
RemoveEventScript(oInitiator, EVENT_ONPLAYERLEVELDOWN, "tob_masterofnine", TRUE, FALSE);
DeletePersistantLocalInt(oInitiator, "ToBMasterOfNineMove");
DeletePersistantLocalInt(oInitiator, "ToBMasterOfNineStance");
DeletePersistantLocalInt(oInitiator, "ToBMasterOfNineReady");
}
}
}