2025/06/22 Update

Fixed Vow of Poverty.
Fixed Vow of Poverty bonus feats not being restored onClientEnter.
Added PRC option for spontaneous casters unlearning spells (@Rakiov)
Gloura was double dipping caster level.
Added NUI levelup spellpicker for most AMS classes (@Rakiov)
Tweaked Tactical Insight.
Updated ToB maneuver TLK entries to display correct prerequisites.
This commit is contained in:
Jaysyn904
2025-06-22 19:40:24 -04:00
parent 4ae73d0f45
commit a882749366
34 changed files with 5455 additions and 737 deletions

View File

@@ -31,6 +31,7 @@
#include "tob_inc_tobfunc"
#include "shd_inc_shdfunc"
#include "inv_inc_invfunc"
#include "prc_nui_lv_inc"
//////////////////////////////////////////////////
/* Function prototypes */
@@ -77,7 +78,7 @@ void main()
void CheckSpellbooks(object oPC)
{
if(GetLevelByClass(CLASS_TYPE_SUBLIME_CHORD, oPC) > 0)
{
CheckMissingSpells(oPC, CLASS_TYPE_SUBLIME_CHORD, 4, 9);
@@ -87,7 +88,7 @@ void CheckSpellbooks(object oPC)
CheckMissingSpells(oPC, CLASS_TYPE_BARD, 0, 3);
}
if(GetHasFeat(FEAT_SUBLIME_CHORD_SPELLCASTING_SORCERER))
{
{
CheckMissingSpells(oPC, CLASS_TYPE_SORCERER, 0, 3);
}
if(GetHasFeat(FEAT_SUBLIME_CHORD_SPELLCASTING_WARMAGE, oPC))
@@ -98,7 +99,7 @@ void CheckSpellbooks(object oPC)
{
CheckMissingSpells(oPC, CLASS_TYPE_DUSKBLADE, 0, 3);
}
if(GetHasFeat(FEAT_SUBLIME_CHORD_SPELLCASTING_BEGUILER, oPC))
if(GetHasFeat(FEAT_SUBLIME_CHORD_SPELLCASTING_BEGUILER, oPC))
{
CheckMissingSpells(oPC, CLASS_TYPE_BEGUILER, 0, 3);
}
@@ -134,9 +135,9 @@ void CheckSpellbooks(object oPC)
/* void CheckSpellbooks(object oPC)
{
if(GetIsRHDSorcerer(oPC) && CheckMissingSpells(oPC, CLASS_TYPE_SORCERER, 0, 9))
if(GetIsRHDSorcerer(oPC) && CheckMissingSpells(oPC, CLASS_TYPE_SORCERER, 0, 9))
return;
if(GetIsRHDBard(oPC) && CheckMissingSpells(oPC, CLASS_TYPE_BARD, 0, 6))
if(GetIsRHDBard(oPC) && CheckMissingSpells(oPC, CLASS_TYPE_BARD, 0, 6))
return;
if(!GetPRCSwitch(PRC_BARD_DISALLOW_NEWSPELLBOOK) && CheckMissingSpells(oPC, CLASS_TYPE_BARD, 0, 6))
return;
@@ -159,7 +160,7 @@ void CheckSpellbooks(object oPC)
if(CheckMissingSpells(oPC, CLASS_TYPE_JUSTICEWW, 1, 4))
return;
if(CheckMissingSpells(oPC, CLASS_TYPE_KNIGHT_WEAVE, 1, 6))
return;
return;
// if(CheckMissingSpells(oPC, CLASS_TYPE_WITCH, 0, 9))
// return;
if(CheckMissingSpells(oPC, CLASS_TYPE_SUBLIME_CHORD, 4, 9))
@@ -191,7 +192,7 @@ void CheckPsionics(object oPC)
if(CheckMissingPowers(oPC, CLASS_TYPE_PSYWAR))
return;
if(CheckMissingPowers(oPC, CLASS_TYPE_PSYCHIC_ROGUE))
return;
return;
if(CheckMissingPowers(oPC, CLASS_TYPE_FIST_OF_ZUOKEN))
return;
if(CheckMissingPowers(oPC, CLASS_TYPE_WARMIND))
@@ -278,10 +279,15 @@ int CheckMissingPowers(object oPC, int nClass)
if(nCurrentPowers < nMaxPowers)
{
if (nClass <= 0)
nClass = GetPrimaryPsionicClass(oPC);
if (!IsLevelUpNUIOpen(oPC))
OpenNUILevelUpWindow(nClass, oPC);
/*
// Mark the class for which the PC is to gain powers and start the conversation
SetLocalInt(oPC, "nClass", nClass);
StartDynamicConversation("psi_powconv", oPC, DYNCONV_EXIT_NOT_ALLOWED, FALSE, TRUE, oPC);
*/
return TRUE;
}
return FALSE;
@@ -304,9 +310,15 @@ int CheckMissingInvocations(object oPC, int nClass)
if(nCurrentInvocations < nMaxInvocations)
{
if (nClass == CLASS_TYPE_INVALID || nClass == -2)
nClass = GetPrimaryInvocationClass(oPC);
if (!IsLevelUpNUIOpen(oPC))
OpenNUILevelUpWindow(nClass, oPC);
/*
// Mark the class for which the PC is to gain invocations and start the conversation
SetLocalInt(oPC, "nClass", nClass);
StartDynamicConversation("inv_invokeconv", oPC, DYNCONV_EXIT_NOT_ALLOWED, FALSE, TRUE, oPC);
*/
return TRUE;
}
@@ -358,49 +370,49 @@ void AddSpellsForLevel(int nClass, int nLevel)
int CheckMissingSpells(object oPC, int nClass, int nMinLevel, int nMaxLevel)
{
int nLevel;
//:: Rakshasa cast as sorcerers
if(nClass == CLASS_TYPE_SORCERER && !GetLevelByClass(CLASS_TYPE_SORCERER, oPC) && GetRacialType(oPC) == RACIAL_TYPE_RAKSHASA)
nLevel = GetSpellslotLevel(nClass, oPC); //GetLevelByClass(CLASS_TYPE_OUTSIDER, oPC);
//:: Aranea cast as sorcerers
else if(nClass == CLASS_TYPE_SORCERER && !GetLevelByClass(CLASS_TYPE_SORCERER, oPC) && GetRacialType(oPC) == RACIAL_TYPE_ARANEA)
//:: Aranea cast as sorcerers
else if(nClass == CLASS_TYPE_SORCERER && !GetLevelByClass(CLASS_TYPE_SORCERER, oPC) && GetRacialType(oPC) == RACIAL_TYPE_ARANEA)
nLevel = GetSpellslotLevel(nClass, oPC); //GetLevelByClass(CLASS_TYPE_SHAPECHANGER, oPC);
//::Arkamoi cast as sorcerers
else if(nClass == CLASS_TYPE_SORCERER && !GetLevelByClass(CLASS_TYPE_SORCERER, oPC) && GetRacialType(oPC) == RACIAL_TYPE_ARKAMOI)
//::Arkamoi cast as sorcerers
else if(nClass == CLASS_TYPE_SORCERER && !GetLevelByClass(CLASS_TYPE_SORCERER, oPC) && GetRacialType(oPC) == RACIAL_TYPE_ARKAMOI)
nLevel = GetSpellslotLevel(nClass, oPC); //GetLevelByClass(CLASS_TYPE_MONSTROUS, oPC);
//::Hobgoblin Warsouls cast as sorcerers
else if(nClass == CLASS_TYPE_SORCERER && !GetLevelByClass(CLASS_TYPE_SORCERER, oPC) && GetRacialType(oPC) == RACIAL_TYPE_HOBGOBLIN_WARSOUL)
//::Hobgoblin Warsouls cast as sorcerers
else if(nClass == CLASS_TYPE_SORCERER && !GetLevelByClass(CLASS_TYPE_SORCERER, oPC) && GetRacialType(oPC) == RACIAL_TYPE_HOBGOBLIN_WARSOUL)
nLevel = GetSpellslotLevel(nClass, oPC); //GetLevelByClass(CLASS_TYPE_MONSTROUS, oPC);
//:: Driders cast as sorcerers
else if(nClass == CLASS_TYPE_SORCERER && !GetLevelByClass(CLASS_TYPE_SORCERER, oPC) && GetRacialType(oPC) == RACIAL_TYPE_DRIDER)
//:: Driders cast as sorcerers
else if(nClass == CLASS_TYPE_SORCERER && !GetLevelByClass(CLASS_TYPE_SORCERER, oPC) && GetRacialType(oPC) == RACIAL_TYPE_DRIDER)
nLevel = GetSpellslotLevel(nClass, oPC); //GetLevelByClass(CLASS_TYPE_ABERRATION, oPC);
//:: Marrutact cast as 6/7 sorcerers
else if(nClass == CLASS_TYPE_SORCERER && !GetLevelByClass(CLASS_TYPE_SORCERER, oPC) && GetRacialType(oPC) == RACIAL_TYPE_MARRUTACT)
else if(nClass == CLASS_TYPE_SORCERER && !GetLevelByClass(CLASS_TYPE_SORCERER, oPC) && GetRacialType(oPC) == RACIAL_TYPE_MARRUTACT)
nLevel = GetSpellslotLevel(nClass, oPC); //GetLevelByClass(CLASS_TYPE_MONSTROUS, oPC);
//:: Redspawn Arcaniss cast as 3/4 sorcerers
else if(nClass == CLASS_TYPE_SORCERER && !GetLevelByClass(CLASS_TYPE_SORCERER, oPC) && GetRacialType(oPC) == RACIAL_TYPE_REDSPAWN_ARCANISS)
else if(nClass == CLASS_TYPE_SORCERER && !GetLevelByClass(CLASS_TYPE_SORCERER, oPC) && GetRacialType(oPC) == RACIAL_TYPE_REDSPAWN_ARCANISS)
nLevel = GetSpellslotLevel(nClass, oPC); //GetLevelByClass(CLASS_TYPE_MONSTROUS, oPC);
//:: Gloura cast as bards
else if(nClass == CLASS_TYPE_BARD && !GetLevelByClass(CLASS_TYPE_BARD, oPC) && GetRacialType(oPC) == RACIAL_TYPE_GLOURA)
//:: Gloura cast as bards
else if(nClass == CLASS_TYPE_BARD && !GetLevelByClass(CLASS_TYPE_BARD, oPC) && GetRacialType(oPC) == RACIAL_TYPE_GLOURA)
nLevel = GetSpellslotLevel(nClass, oPC); //GetLevelByClass(CLASS_TYPE_MONSTROUS, oPC);
else
else
nLevel = nClass == CLASS_TYPE_SUBLIME_CHORD ? GetLevelByClass(nClass, oPC) : GetSpellslotLevel(nClass, oPC);
if (DEBUG) DoDebug("CheckMissingSpells 1 Class: " + IntToString(nClass));
if (DEBUG) DoDebug("CheckMissingSpells 1 Level: " + IntToString(nLevel));
if(!nLevel)
return FALSE;
if(nClass == CLASS_TYPE_BARD || nClass == CLASS_TYPE_SORCERER)
return FALSE;
if(nClass == CLASS_TYPE_BARD || nClass == CLASS_TYPE_SORCERER)
{
if((GetLevelByClass(nClass, oPC) == nLevel) //no PrC
&& !(GetHasFeat(FEAT_DRACONIC_GRACE, oPC) || GetHasFeat(FEAT_DRACONIC_BREATH, oPC))) //no Draconic feats that apply
@@ -411,36 +423,31 @@ int CheckMissingSpells(object oPC, int nClass, int nMinLevel, int nMaxLevel)
int nLastGainLevel = GetPersistantLocalInt(oPC, "LastSpellGainLevel");
nLevel = GetLevelByClass(CLASS_TYPE_ARCHIVIST, oPC);
//add cleric spells known for level 0
if(persistant_array_get_size(oPC, "Spellbook_Known_"+IntToString(CLASS_TYPE_ARCHIVIST)+"_0") < 5) // TODO: replace with GetSpellKnownCurrentCount
{
ActionDoCommand(AddSpellsForLevel(CLASS_TYPE_ARCHIVIST, 0));
}
if(nLastGainLevel < nLevel)
{
if(nLevel == 1)
{
//count the number of available at 1st level spells
int nSpellsAvailable = 3 + GetAbilityModifier(ABILITY_INTELLIGENCE, oPC);
SetLocalInt(oPC, "LrnLvlUp", nSpellsAvailable);
}
else if(nLevel > 1)
//add additional 2 spells form cleric list
SetLocalInt(oPC, "LrnLvlUp", 2);
if (!IsLevelUpNUIOpen(oPC))
OpenNUILevelUpWindow(nClass, oPC);
/*
SetLocalInt(oPC, "SpellGainClass", CLASS_TYPE_ARCHIVIST);
SetLocalInt(oPC, "SpellbookMinSpelllevel", nMinLevel);
StartDynamicConversation("prc_s_spellgain", oPC, DYNCONV_EXIT_NOT_ALLOWED, TRUE, FALSE, oPC);
*/
return TRUE;
}
//add cleric spells known for level 0
else if(persistant_array_get_size(oPC, "Spellbook_Known_"+IntToString(CLASS_TYPE_ARCHIVIST)+"_0") < 5) // TODO: replace with GetSpellKnownCurrentCount
{
ActionDoCommand(AddSpellsForLevel(CLASS_TYPE_ARCHIVIST, 0));
}
else
return FALSE;
}
if (DEBUG) DoDebug("CheckMissingSpells 2 Class: " + IntToString(nClass));
if (DEBUG) DoDebug("CheckMissingSpells 2 Level: " + IntToString(nLevel));
int i;
for(i = nMinLevel; i <= nMaxLevel; i++)
{
@@ -458,12 +465,15 @@ int CheckMissingSpells(object oPC, int nClass, int nMinLevel, int nMaxLevel)
}
else
{
if (!IsLevelUpNUIOpen(oPC))
OpenNUILevelUpWindow(nClass, oPC);
/*
// Mark the class for which the PC is to gain powers and start the conversation
SetLocalInt(oPC, "SpellGainClass", nClass);
SetLocalInt(oPC, "SpellbookMinSpelllevel", nMinLevel);
SetLocalInt(oPC, "SpellbookMaxSpelllevel", nMaxLevel);
StartDynamicConversation("prc_s_spellgain", oPC, DYNCONV_EXIT_NOT_ALLOWED, FALSE, TRUE, oPC);
*/
return TRUE;
}
}
@@ -474,20 +484,28 @@ int CheckMissingSpells(object oPC, int nClass, int nMinLevel, int nMaxLevel)
int nALSpells = GetPersistantLocalInt(oPC, "AdvancedLearning_"+IntToString(nClass));
if(nClass == CLASS_TYPE_BEGUILER && nALSpells < (nLevel+1)/4)//one every 4 levels starting at 3.
{
if (!IsLevelUpNUIOpen(oPC))
OpenNUILevelUpWindow(nClass, oPC);
/*
// Mark the class for which the PC is to gain powers and start the conversation
SetLocalInt(oPC, "SpellGainClass", CLASS_TYPE_BEGUILER);
SetLocalInt(oPC, "SpellbookMinSpelllevel", nMinLevel);
SetLocalInt(oPC, "AdvancedLearning", 1);
StartDynamicConversation("prc_s_spellgain", oPC, DYNCONV_EXIT_NOT_ALLOWED, FALSE, TRUE, oPC);
*/
return TRUE;
}
else if(nClass == CLASS_TYPE_DREAD_NECROMANCER && nALSpells < nLevel/4)//one every 4 levels
{
if (!IsLevelUpNUIOpen(oPC))
OpenNUILevelUpWindow(nClass, oPC);
/*
// Mark the class for which the PC is to gain powers and start the conversation
SetLocalInt(oPC, "SpellGainClass", CLASS_TYPE_DREAD_NECROMANCER);
SetLocalInt(oPC, "SpellbookMinSpelllevel", nMinLevel);
SetLocalInt(oPC, "AdvancedLearning", 1);
StartDynamicConversation("prc_s_spellgain", oPC, DYNCONV_EXIT_NOT_ALLOWED, FALSE, TRUE, oPC);
*/
return TRUE;
}
else if(nClass == CLASS_TYPE_WARMAGE)
@@ -502,11 +520,15 @@ int CheckMissingSpells(object oPC, int nClass, int nMinLevel, int nMaxLevel)
(nLevel >= 6 && nLevel < 11 && nALSpells < 2) ||
(nLevel >= 3 && nLevel < 6 && nALSpells < 1))
{
if (!IsLevelUpNUIOpen(oPC))
OpenNUILevelUpWindow(nClass, oPC);
/*
// Mark the class for which the PC is to gain powers and start the conversation
SetLocalInt(oPC, "SpellGainClass", CLASS_TYPE_WARMAGE);
SetLocalInt(oPC, "SpellbookMinSpelllevel", nMinLevel);
SetLocalInt(oPC, "AdvancedLearning", 1);
StartDynamicConversation("prc_s_spellgain", oPC, DYNCONV_EXIT_NOT_ALLOWED, FALSE, TRUE, oPC);
*/
return TRUE;
}
}
@@ -535,9 +557,13 @@ int CheckMissingUtterances(object oPC, int nClass, int nLexicon)
if(nCurrentUtterances < nMaxUtterances)
{
if (!IsLevelUpNUIOpen(oPC))
OpenNUILevelUpWindow(nClass, oPC);
/*
// Mark the class for which the PC is to gain Utterances and start the conversation
SetLocalInt(oPC, "nClass", nClass);
StartDynamicConversation("true_utterconv", oPC, DYNCONV_EXIT_NOT_ALLOWED, FALSE, TRUE, oPC);
*/
return TRUE;
}
@@ -557,9 +583,13 @@ int CheckMissingManeuvers(object oPC, int nClass)
if(nCurrentManeuvers < nMaxManeuvers || nCurrentStances < nMaxStances)
{
if (!IsLevelUpNUIOpen(oPC))
OpenNUILevelUpWindow(nClass, oPC);
/*
// Mark the class for which the PC is to gain powers and start the conversation
SetLocalInt(oPC, "nClass", nClass);
StartDynamicConversation("tob_moveconv", oPC, DYNCONV_EXIT_NOT_ALLOWED, FALSE, TRUE, oPC);
*/
return TRUE;
}
@@ -577,10 +607,13 @@ int CheckMissingMysteries(object oPC, int nClass)
if(nCurrentMysteries < nMaxMysteries)
{
if (!IsLevelUpNUIOpen(oPC))
OpenNUILevelUpWindow(nClass, oPC);
/*
// Mark the class for which the PC is to gain powers and start the conversation
SetLocalInt(oPC, "nClass", nClass);
StartDynamicConversation("shd_mystconv", oPC, DYNCONV_EXIT_NOT_ALLOWED, FALSE, TRUE, oPC);
*/
return TRUE;
}
return FALSE;
@@ -646,4 +679,4 @@ void AMSCompatibilityCheck(object oPC)
}
}
}
}
}

View File

@@ -7,7 +7,7 @@
10 MAR 09 by GC
*/ /** @file
Although you may be young by the elve's reckoning,
Although you may be young by the elves' reckoning,
your blade guide lends you the experience and wisdom
of one who has fought battles across countless fields.
@@ -53,7 +53,7 @@ void main()
effect eAC;
int nInt = GetAbilityModifier(ABILITY_INTELLIGENCE, oInitiator);
if(nInt >= 1) eAC = EffectACDecrease(nInt);
PerformAttackRound(oTarget, oInitiator, eAC, 6.0, 0, 0, 0, FALSE, "", "", FALSE, FALSE, TRUE);
PerformAttackRound(oTarget, oInitiator, eAC, 6.0, 0, 0, 0, FALSE, "Tactical Insight: Hit!", "Tactical Insight: Miss!", FALSE, FALSE, TRUE);
// Expend ability
SetLocalInt(oInitiator, "ETBL_Tactical_Insight_Expended", TRUE);

View File

@@ -79,6 +79,7 @@ void RemoveUncannyDodge(object oInitiator)
DeleteLocalInt(oInitiator, "ETBL_AUD_Applied");
}
}
void BladeGuide(object oInitiator, object oItem)
{
if (GetBaseItemType(oItem) == BASE_ITEM_ARMOR)
@@ -176,11 +177,12 @@ void main()
oItem = GetItemInSlot(INVENTORY_SLOT_CHEST, oInitiator);
}
int nClass = CLASS_TYPE_ETERNAL_BLADE;
int nLevel = GetLevelByClass(CLASS_TYPE_ETERNAL_BLADE, oInitiator);
int nMoveTotal = GetKnownManeuversModifier(oInitiator, nClass, MANEUVER_TYPE_MANEUVER);
int nStncTotal = GetKnownManeuversModifier(oInitiator, nClass, MANEUVER_TYPE_STANCE);
int nRdyTotal = GetReadiedManeuversModifier(oInitiator, nClass);
int nClass = CLASS_TYPE_ETERNAL_BLADE;
int nLevel = GetLevelByClass(CLASS_TYPE_ETERNAL_BLADE, oInitiator);
int nBladeClass = GetPrimaryBladeMagicClass(oInitiator);
int nMoveTotal = GetKnownManeuversModifier(oInitiator, nBladeClass, MANEUVER_TYPE_MANEUVER);
int nStncTotal = GetKnownManeuversModifier(oInitiator, nBladeClass, MANEUVER_TYPE_STANCE);
int nRdyTotal = GetReadiedManeuversModifier(oInitiator, nBladeClass);
if(DEBUG) DoDebug("tob_eternalblade running, event: " + IntToString(nEvent));
if(DEBUG) DoDebug("tob_eternalblade nMoveTotal: " + IntToString(nMoveTotal));
@@ -203,57 +205,109 @@ void main()
// It's not pretty, but it works
if (nLevel >= 1 && !GetPersistantLocalInt(oInitiator, "ToBEternalBlade1"))
{
if(DEBUG) DoDebug("tob_eternalblade: Adding Maneuver 1");
if(DEBUG) DoDebug("tob_eternalblade SetKnownManeuversModifier 1: " + IntToString(++nMoveTotal));
DelayCommand(0.0f, SetKnownManeuversModifier(oInitiator, GetPrimaryBladeMagicClass(oInitiator), ++nMoveTotal, MANEUVER_TYPE_MANEUVER));
nMoveTotal += 1;
if(DEBUG) DoDebug("tob_eternalblade: Adding Maneuver 1");
if(DEBUG) DoDebug("tob_eternalblade SetKnownManeuversModifier 1: " + IntToString(nMoveTotal));
//DelayCommand(0.0f, SetKnownManeuversModifier(oInitiator, GetPrimaryBladeMagicClass(oInitiator), nMoveTotal, MANEUVER_TYPE_MANEUVER));
SetKnownManeuversModifier(oInitiator, nBladeClass, nMoveTotal, MANEUVER_TYPE_MANEUVER);
SetPersistantLocalInt(oInitiator, "ToBEternalBlade1", TRUE);
SetPersistantLocalInt(oInitiator, "AllowedDisciplines", 270);//DISCIPLINE_DEVOTED_SPIRIT + DISCIPLINE_DIAMOND_MIND + DISCIPLINE_IRON_HEART + DISCIPLINE_WHITE_RAVEN
}
SetPersistantLocalInt(oInitiator, "AllowedDisciplines", DISCIPLINE_DEVOTED_SPIRIT +
DISCIPLINE_DIAMOND_MIND +
DISCIPLINE_IRON_HEART +
DISCIPLINE_WHITE_RAVEN); //:: (270)
if (DEBUG) DoDebug("Granted Maneuver at Level 1: total now " + IntToString(nMoveTotal));
if (DEBUG) DoDebug(IntToString(nStncTotal) +" stances known");
if (DEBUG) DoDebug("Readied maneuvers now: " + IntToString(nRdyTotal));
}
if (nLevel >= 3 && !GetPersistantLocalInt(oInitiator, "ToBEternalBlade3"))
{
if(DEBUG) DoDebug("tob_eternalblade: Adding Maneuver 3");
if(DEBUG) DoDebug("tob_eternalblade SetKnownManeuversModifier 3: " + IntToString(++nMoveTotal));
SetReadiedManeuversModifier(oInitiator, GetPrimaryBladeMagicClass(oInitiator), ++nRdyTotal);
DelayCommand(0.0f, SetKnownManeuversModifier(oInitiator, GetPrimaryBladeMagicClass(oInitiator), ++nMoveTotal, MANEUVER_TYPE_MANEUVER));
nMoveTotal += 1;
nRdyTotal += 1;
if(DEBUG) DoDebug("tob_eternalblade: Adding Maneuver 3");
if(DEBUG) DoDebug("tob_eternalblade SetKnownManeuversModifier 3: " + IntToString(nMoveTotal));
SetReadiedManeuversModifier(oInitiator, nBladeClass, nRdyTotal);
//DelayCommand(0.0f, SetKnownManeuversModifier(oInitiator, GetPrimaryBladeMagicClass(oInitiator), nMoveTotal, MANEUVER_TYPE_MANEUVER));
SetKnownManeuversModifier(oInitiator, nBladeClass, nMoveTotal, MANEUVER_TYPE_MANEUVER);
SetPersistantLocalInt(oInitiator, "ToBEternalBlade3", TRUE);
SetPersistantLocalInt(oInitiator, "AllowedDisciplines", 270);//DISCIPLINE_DEVOTED_SPIRIT + DISCIPLINE_DIAMOND_MIND + DISCIPLINE_IRON_HEART + DISCIPLINE_WHITE_RAVEN
SetPersistantLocalInt(oInitiator, "AllowedDisciplines", DISCIPLINE_DEVOTED_SPIRIT +
DISCIPLINE_DIAMOND_MIND +
DISCIPLINE_IRON_HEART +
DISCIPLINE_WHITE_RAVEN); //:: (270)
if (DEBUG) DoDebug("Granted Maneuver at Level 3: total now " + IntToString(nMoveTotal));
if (DEBUG) DoDebug(IntToString(nStncTotal) +" stances known");
if (DEBUG) DoDebug("Readied maneuvers now: " + IntToString(nRdyTotal));
}
if (nLevel >= 5 && !GetPersistantLocalInt(oInitiator, "ToBEternalBlade5"))
{
if(DEBUG) DoDebug("tob_eternalblade: Adding Maneuver 5");
nStncTotal += 1;
nMoveTotal += 1;
if(DEBUG) DoDebug("tob_eternalblade: Adding Maneuver 5");
if(DEBUG) DoDebug("tob_eternalblade SetKnownManeuversModifier 5: " + IntToString(++nMoveTotal));
DelayCommand(0.0f, SetKnownManeuversModifier(oInitiator, GetPrimaryBladeMagicClass(oInitiator), ++nStncTotal, MANEUVER_TYPE_STANCE));
DelayCommand(0.0f, SetKnownManeuversModifier(oInitiator, GetPrimaryBladeMagicClass(oInitiator), ++nMoveTotal, MANEUVER_TYPE_MANEUVER));
//DelayCommand(0.0f, SetKnownManeuversModifier(oInitiator, GetPrimaryBladeMagicClass(oInitiator), nStncTotal, MANEUVER_TYPE_STANCE));
//DelayCommand(0.0f, SetKnownManeuversModifier(oInitiator, GetPrimaryBladeMagicClass(oInitiator), nMoveTotal, MANEUVER_TYPE_MANEUVER));
SetKnownManeuversModifier(oInitiator, nBladeClass, nStncTotal, MANEUVER_TYPE_STANCE);
SetKnownManeuversModifier(oInitiator, nBladeClass, nMoveTotal, MANEUVER_TYPE_MANEUVER);
SetPersistantLocalInt(oInitiator, "ToBEternalBlade5", TRUE);
SetPersistantLocalInt(oInitiator, "AllowedDisciplines", 270);//DISCIPLINE_DEVOTED_SPIRIT + DISCIPLINE_DIAMOND_MIND + DISCIPLINE_IRON_HEART + DISCIPLINE_WHITE_RAVEN
SetPersistantLocalInt(oInitiator, "AllowedDisciplines", DISCIPLINE_DEVOTED_SPIRIT +
DISCIPLINE_DIAMOND_MIND +
DISCIPLINE_IRON_HEART +
DISCIPLINE_WHITE_RAVEN); //:: (270)
if (DEBUG) DoDebug("Granted Maneuver at Level 5: total now " + IntToString(nMoveTotal));
if (DEBUG) DoDebug(IntToString(nStncTotal) +" stances known");
if (DEBUG) DoDebug("Readied maneuvers now: " + IntToString(nRdyTotal));
}
if (nLevel >= 6 && !GetPersistantLocalInt(oInitiator, "ToBEternalBlade6"))
{
if(DEBUG) DoDebug("tob_eternalblade: Adding Maneuver 6");
SetReadiedManeuversModifier(oInitiator, GetPrimaryBladeMagicClass(oInitiator), ++nRdyTotal);
nRdyTotal += 1;
if(DEBUG) DoDebug("tob_eternalblade: Adding Maneuver 6");
SetReadiedManeuversModifier(oInitiator, nBladeClass, nRdyTotal);
SetPersistantLocalInt(oInitiator, "ToBEternalBlade6", TRUE);
if (DEBUG) DoDebug("Granted Maneuver at Level 6: total now " + IntToString(nMoveTotal));
if (DEBUG) DoDebug(IntToString(nStncTotal) +" stances known");
if (DEBUG) DoDebug("Readied maneuvers now: " + IntToString(nRdyTotal));
}
if (nLevel >= 7 && !GetPersistantLocalInt(oInitiator, "ToBEternalBlade7"))
{
if(DEBUG) DoDebug("tob_eternalblade: Adding Maneuver 7");
if(DEBUG) DoDebug("tob_eternalblade SetKnownManeuversModifier 7: " + IntToString(++nMoveTotal));
DelayCommand(0.0f, SetKnownManeuversModifier(oInitiator, GetPrimaryBladeMagicClass(oInitiator), ++nMoveTotal, MANEUVER_TYPE_MANEUVER));
nMoveTotal += 1;
if(DEBUG) DoDebug("tob_eternalblade: Adding Maneuver 7");
if(DEBUG) DoDebug("tob_eternalblade SetKnownManeuversModifier 7: " + IntToString(nMoveTotal));
DelayCommand(0.0f, SetKnownManeuversModifier(oInitiator, nBladeClass, nMoveTotal, MANEUVER_TYPE_MANEUVER));
SetPersistantLocalInt(oInitiator, "ToBEternalBlade7", TRUE);
SetPersistantLocalInt(oInitiator, "AllowedDisciplines", 270);//DISCIPLINE_DEVOTED_SPIRIT + DISCIPLINE_DIAMOND_MIND + DISCIPLINE_IRON_HEART + DISCIPLINE_WHITE_RAVEN
SetPersistantLocalInt(oInitiator, "AllowedDisciplines", DISCIPLINE_DEVOTED_SPIRIT +
DISCIPLINE_DIAMOND_MIND +
DISCIPLINE_IRON_HEART +
DISCIPLINE_WHITE_RAVEN); //:: (270)
if (DEBUG) DoDebug("Granted Maneuver at Level 7: total now " + IntToString(nMoveTotal));
if (DEBUG) DoDebug(IntToString(nStncTotal) +" stances known");
if (DEBUG) DoDebug("Readied maneuvers now: " + IntToString(nRdyTotal));
}
if (nLevel >= 9 && !GetPersistantLocalInt(oInitiator, "ToBEternalBlade9"))
{
if(DEBUG) DoDebug("tob_eternalblade: Adding Maneuver 9");
if(DEBUG) DoDebug("tob_eternalblade SetKnownManeuversModifier 9: " + IntToString(++nMoveTotal));
SetReadiedManeuversModifier(oInitiator, GetPrimaryBladeMagicClass(oInitiator), ++nRdyTotal);
DelayCommand(0.0f, SetKnownManeuversModifier(oInitiator, GetPrimaryBladeMagicClass(oInitiator), ++nMoveTotal, MANEUVER_TYPE_MANEUVER));
nMoveTotal += 1;
nRdyTotal += 1;
if(DEBUG) DoDebug("tob_eternalblade: Adding Maneuver 9");
if(DEBUG) DoDebug("tob_eternalblade SetKnownManeuversModifier 9: " + IntToString(nMoveTotal));
SetReadiedManeuversModifier(oInitiator, nBladeClass, nRdyTotal);
DelayCommand(0.0f, SetKnownManeuversModifier(oInitiator, nBladeClass, nMoveTotal, MANEUVER_TYPE_MANEUVER));
SetPersistantLocalInt(oInitiator, "ToBEternalBlade9", TRUE);
SetPersistantLocalInt(oInitiator, "AllowedDisciplines", 270);//DISCIPLINE_DEVOTED_SPIRIT + DISCIPLINE_DIAMOND_MIND + DISCIPLINE_IRON_HEART + DISCIPLINE_WHITE_RAVEN
SetPersistantLocalInt(oInitiator, "AllowedDisciplines", DISCIPLINE_DEVOTED_SPIRIT +
DISCIPLINE_DIAMOND_MIND +
DISCIPLINE_IRON_HEART +
DISCIPLINE_WHITE_RAVEN); //:: (270)
if (DEBUG) DoDebug("Granted Maneuver at Level 9: total now " + IntToString(nMoveTotal));
if (DEBUG) DoDebug(IntToString(nStncTotal) +" stances known");
if (DEBUG) DoDebug("Readied maneuvers now: " + IntToString(nRdyTotal));
}
// Hook to OnLevelDown to remove the maneuver slots granted here

View File

@@ -28,9 +28,9 @@ void main()
int nStncTotal = GetKnownManeuversModifier(oInitiator, nClass, MANEUVER_TYPE_STANCE);
int nRdyTotal = GetReadiedManeuversModifier(oInitiator, nClass);
DoDebug("nMoveTotal = "+IntToString(nMoveTotal));
DoDebug("nStncTotal = "+IntToString(nStncTotal));
DoDebug("nRdyTotal = "+IntToString(nRdyTotal));
if (DEBUG) DoDebug("nMoveTotal = "+IntToString(nMoveTotal));
if (DEBUG) DoDebug("nStncTotal = "+IntToString(nStncTotal));
if (DEBUG) DoDebug("nRdyTotal = "+IntToString(nRdyTotal));
int nRubyLvl = GetLevelByClass(CLASS_TYPE_RUBY_VINDICATOR, oInitiator);
int nRubyBonusMove = nRubyLvl / 2;
@@ -38,9 +38,9 @@ DoDebug("nRdyTotal = "+IntToString(nRdyTotal));
if (nRubyLvl >= 6) nRubyBonusStance = 2;
int nRubyBonusReady = nRubyLvl > 8 ? 2 : nRubyLvl > 4 ? 1 : 0;
int nMod;
DoDebug("nRubyBonusMove = "+IntToString(nRubyBonusMove));
DoDebug("nRubyBonusStance = "+IntToString(nRubyBonusStance));
DoDebug("nRubyBonusReady = "+IntToString(nRubyBonusReady));
if (DEBUG) DoDebug("nRubyBonusMove = "+IntToString(nRubyBonusMove));
if (DEBUG) DoDebug("nRubyBonusStance = "+IntToString(nRubyBonusStance));
if (DEBUG) DoDebug("nRubyBonusReady = "+IntToString(nRubyBonusReady));
// We aren't being called from any event, instead from EvalPRCFeats
if(nEvent == FALSE)