forked from Jaysyn/PRC8
82 lines
3.4 KiB
Plaintext
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");
|
||
|
}
|
||
|
}
|
||
|
}
|