From cd5cf09cbbc95a2dddf97b8094b2018c5a7abc79 Mon Sep 17 00:00:00 2001 From: Jaysyn904 <68194417+Jaysyn904@users.noreply.github.com> Date: Sat, 21 Jun 2025 23:27:50 -0400 Subject: [PATCH 1/2] 2025/06/21 Late Update Fixed Eternal Blade not getting maneuvers at level up. Gated RKV debug messages. Fixed RHD sorcerers from being able to use extra slots from bioware spellbooks. --- nwn/nwnprc/trunk/include/x2_inc_spellhook.nss | 77 ++++++++++-- .../trunk/newspellbook/tob_eternalblade.nss | 114 +++++++++++++----- .../trunk/newspellbook/tob_rubyknight.nss | 12 +- 3 files changed, 159 insertions(+), 44 deletions(-) diff --git a/nwn/nwnprc/trunk/include/x2_inc_spellhook.nss b/nwn/nwnprc/trunk/include/x2_inc_spellhook.nss index 27857899..c631c0e5 100644 --- a/nwn/nwnprc/trunk/include/x2_inc_spellhook.nss +++ b/nwn/nwnprc/trunk/include/x2_inc_spellhook.nss @@ -1441,8 +1441,9 @@ int CheckSecondaryPrC(object oPC = OBJECT_SELF) if (GetHasFeat(FEAT_WILDMAGE_SPELLCASTING_BARD)) return TRUE; if (GetHasFeat(FEAT_WWOC_SPELLCASTING_BARD)) return TRUE; } - else if (bBeguiler) + if (bBeguiler) { + if(DEBUG) DoDebug("x2_inc_spellhook: CheckSecondaryPrC >>> Entering Beguiler", oPC); if (GetHasFeat(FEAT_ABCHAMP_SPELLCASTING_BEGUILER)) return TRUE; if (GetHasFeat(FEAT_AOTS_SPELLCASTING_BEGUILER)) return TRUE; if (GetHasFeat(FEAT_ALCHEM_SPELLCASTING_BEGUILER)) return TRUE; @@ -1492,8 +1493,9 @@ int CheckSecondaryPrC(object oPC = OBJECT_SELF) } - else if (bDuskblade) + if (bDuskblade) { + if(DEBUG) DoDebug("x2_inc_spellhook: CheckSecondaryPrC >>> Entering Dusblade", oPC); if (GetHasFeat(FEAT_ABCHAMP_SPELLCASTING_DUSKBLADE)) return TRUE; if (GetHasFeat(FEAT_AOTS_SPELLCASTING_DUSKBLADE)) return TRUE; if (GetHasFeat(FEAT_ALCHEM_SPELLCASTING_DUSKBLADE)) return TRUE; @@ -1540,8 +1542,9 @@ int CheckSecondaryPrC(object oPC = OBJECT_SELF) } - else if (bSorcerer) + if (bSorcerer) { + if(DEBUG) DoDebug("x2_inc_spellhook: CheckSecondaryPrC >>> Entering Sorcerer", oPC); if (GetHasFeat(FEAT_ABERRATION_SPELLCASTING_DRIDER)) return TRUE; if (GetHasFeat(FEAT_MONSTROUS_SPELLCASTING_ARKAMOI)) return TRUE; if (GetHasFeat(FEAT_MONSTROUS_SPELLCASTING_MARRUTACT)) return TRUE; @@ -1599,8 +1602,9 @@ int CheckSecondaryPrC(object oPC = OBJECT_SELF) if (GetHasFeat(FEAT_WILDMAGE_SPELLCASTING_SORCERER)) return TRUE; if (GetHasFeat(FEAT_WWOC_SPELLCASTING_SORCERER)) return TRUE; } - else if (bWarmage) + if (bWarmage) { + if(DEBUG) DoDebug("x2_inc_spellhook: CheckSecondaryPrC >>> Entering Warmage", oPC); if (GetHasFeat(FEAT_AOTS_SPELLCASTING_WARMAGE)) return TRUE; if (GetHasFeat(FEAT_ALCHEM_SPELLCASTING_WARMAGE)) return TRUE; if (GetHasFeat(FEAT_ANIMA_SPELLCASTING_WARMAGE)) return TRUE; @@ -1662,14 +1666,71 @@ int BardSorcPrCCheck(object oCaster, int nCastingClass, object oSpellCastItem) return TRUE; } - //check its a sorc spell + //check its a sorcerer spell if(nCastingClass == CLASS_TYPE_SORCERER) { - if (CheckSecondaryPrC(oCaster) == TRUE) + if(DEBUG) DoDebug("x2_inc_spellhook: BardSorcPrCCheck >>> nCastingClass is Sorcerer.", oCaster); + //no need to check further if new spellbooks are disabled + if(GetPRCSwitch(PRC_SORC_DISALLOW_NEWSPELLBOOK)) { - if (DEBUG) DoDebug("x2_inc_spellhook: BardSorcPrCCheck >>> Sorcerer w/RHD found.", oCaster); + if (DEBUG) DoDebug("x2_inc_spellhook: BardSorcPrCCheck >>> PRC_SORC_DISALLOW_NEWSPELLBOOK.", oCaster); return TRUE; } + //check they have sorcerer levels + if(!GetLevelByClass(CLASS_TYPE_SORCERER, oCaster)) + { + if(DEBUG) DoDebug("x2_inc_spellhook: BardSorcPrCCheck >>> Not a sorcerer.", oCaster); + return TRUE; + } + //check if they are casting via new spellbook + if(GetLocalInt(oCaster, "NSB_Class") != CLASS_TYPE_SORCERER && GetLevelByClass(CLASS_TYPE_ULTIMATE_MAGUS, oCaster)) + { + if(DEBUG) DoDebug("x2_inc_spellhook: BardSorcPrCCheck >>> UltMagus using new spellbook.", oCaster); + return FALSE; + } + //check if they are casting via new spellbook + if(GetLocalInt(oCaster, "NSB_Class") == CLASS_TYPE_SORCERER) + { + if(DEBUG) DoDebug("x2_inc_spellhook: BardSorcPrCCheck >>> Using new spellbook.", oCaster); + return TRUE; + } + if(GetLevelByClass(CLASS_TYPE_SUBLIME_CHORD, oCaster) > 0 && CheckSecondaryPrC(oCaster) == TRUE) + { + if (DEBUG) DoDebug("x2_inc_spellhook: BardSorcPrCCheck >>> Sublime Chord w/RHD found.", oCaster); + FloatingTextStringOnCreature("You must use the new spellbook on the class radial.", oCaster, FALSE); + return FALSE; + } + if (CheckSecondaryPrC(oCaster) == TRUE) + { + if (DEBUG) DoDebug("x2_inc_spellhook: BardSorcPrCCheck >>> Sorcerer w/RHD found.", oCaster); + FloatingTextStringOnCreature("You must use the new spellbook on the class radial.", oCaster, FALSE); + return FALSE; + } + //check they have arcane PrC or Draconic Arcane Grace/Breath + if(!(GetArcanePRCLevels(oCaster, nCastingClass) - GetLevelByClass(CLASS_TYPE_SUBLIME_CHORD, oCaster)) + && !(GetHasFeat(FEAT_DRACONIC_GRACE, oCaster) || GetHasFeat(FEAT_DRACONIC_BREATH, oCaster))) + { + if(DEBUG) DoDebug("x2_inc_spellhook: BardSorcPrCCheck >>> First Sublime Chord check.", oCaster); + return TRUE; + } + + //check they have sorcerer in first arcane slot + //if(GetPrimaryArcaneClass() != CLASS_TYPE_SORCERER) + if(GetPrCAdjustedCasterLevelByType(TYPE_ARCANE, oCaster, TRUE) != GetPrCAdjustedCasterLevelByType(CLASS_TYPE_SORCERER, oCaster, TRUE)) + { + if(DEBUG) DoDebug("x2_inc_spellhook: BardSorcPrCCheck >>> GetPrCAdjustedCasterLevelByType.", oCaster); + return TRUE; + } + //at this point, they must be using the bioware spellbook + //from a class that adds to bard + FloatingTextStringOnCreature("You must use the new spellbook on the class radial.", oCaster, FALSE); + return FALSE; + } + + +/* //check its a sorc spell + if(nCastingClass == CLASS_TYPE_SORCERER) + { //no need to check further if new spellbooks are disabled if(GetPRCSwitch(PRC_SORC_DISALLOW_NEWSPELLBOOK)) return TRUE; @@ -1708,7 +1769,7 @@ int BardSorcPrCCheck(object oCaster, int nCastingClass, object oSpellCastItem) //from a class that adds to sorc FloatingTextStringOnCreature("You must use the new spellbook on the class radial.", oCaster, FALSE); return FALSE; - } + } */ //check its a bard spell if(nCastingClass == CLASS_TYPE_BARD) diff --git a/nwn/nwnprc/trunk/newspellbook/tob_eternalblade.nss b/nwn/nwnprc/trunk/newspellbook/tob_eternalblade.nss index 6f3ba980..4f15f8bd 100644 --- a/nwn/nwnprc/trunk/newspellbook/tob_eternalblade.nss +++ b/nwn/nwnprc/trunk/newspellbook/tob_eternalblade.nss @@ -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 diff --git a/nwn/nwnprc/trunk/newspellbook/tob_rubyknight.nss b/nwn/nwnprc/trunk/newspellbook/tob_rubyknight.nss index 279f9177..741f62b0 100644 --- a/nwn/nwnprc/trunk/newspellbook/tob_rubyknight.nss +++ b/nwn/nwnprc/trunk/newspellbook/tob_rubyknight.nss @@ -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) From 096ed0cfe58063633841f04db06cabcf06e40032 Mon Sep 17 00:00:00 2001 From: Jaysyn904 <68194417+Jaysyn904@users.noreply.github.com> Date: Sun, 22 Jun 2025 01:35:13 -0400 Subject: [PATCH 2/2] Expanded Eternal Blade for epic progression Expanded Eternal Blade for epic progression. --- nwn/nwnprc/trunk/2das/cls_bfeat_etbl.2da | 122 ++++----- nwn/nwnprc/trunk/2das/cls_feat_etbl.2da | 314 ++++++++++++++++++++++- 2 files changed, 361 insertions(+), 75 deletions(-) diff --git a/nwn/nwnprc/trunk/2das/cls_bfeat_etbl.2da b/nwn/nwnprc/trunk/2das/cls_bfeat_etbl.2da index 6efff0c1..d41b8e5b 100644 --- a/nwn/nwnprc/trunk/2das/cls_bfeat_etbl.2da +++ b/nwn/nwnprc/trunk/2das/cls_bfeat_etbl.2da @@ -1,63 +1,63 @@ 2DA V2.0 - Bonus -0 0 -1 0 -2 0 -3 0 -4 0 -5 0 -6 0 -7 0 -8 0 -9 0 -10 0 -11 0 -12 0 -13 1 -14 0 -15 0 -16 0 -17 1 -18 0 -19 0 -20 0 -21 1 -22 0 -23 0 -24 0 -25 1 -26 0 -27 0 -28 0 -29 1 -30 0 -31 0 -32 0 -33 1 -34 0 -35 0 -36 0 -37 1 -38 0 -39 0 -40 0 -41 1 -42 0 -43 0 -44 0 -45 1 -46 0 -47 0 -48 0 -49 1 -50 0 -51 0 -52 0 -53 1 -54 0 -55 0 -56 0 -57 1 -58 0 -59 0 + Bonus +0 0 +1 0 +2 0 +3 0 +4 0 +5 0 +6 0 +7 0 +8 0 +9 0 +10 0 +11 0 +12 1 +13 0 +14 0 +15 1 +16 0 +17 0 +18 1 +19 0 +20 0 +21 1 +22 0 +23 0 +24 1 +25 0 +26 0 +27 1 +28 0 +29 0 +30 1 +31 0 +32 0 +33 1 +34 0 +35 0 +36 1 +37 0 +38 0 +39 1 +40 0 +41 0 +42 1 +43 0 +44 0 +45 1 +46 0 +47 0 +48 1 +49 0 +50 0 +51 1 +52 0 +53 0 +54 1 +55 0 +56 0 +57 1 +58 0 +59 0 diff --git a/nwn/nwnprc/trunk/2das/cls_feat_etbl.2da b/nwn/nwnprc/trunk/2das/cls_feat_etbl.2da index 1813e270..9945c530 100644 --- a/nwn/nwnprc/trunk/2das/cls_feat_etbl.2da +++ b/nwn/nwnprc/trunk/2das/cls_feat_etbl.2da @@ -1,16 +1,302 @@ 2DA V2.0 - FeatLabel FeatIndex List GrantedOnLevel OnMenu -0 FEAT_EPIC_BLINDING_SPEED 491 0 -1 1 -1 DefArrow 8 0 -1 0 -2 TwoWeap 41 0 -1 0 -3 Ambidex 1 0 -1 0 -4 ETBL_ManeuverQuicksel 24125 3 1 1 -5 ETBL_Blade_Guide 24126 3 1 0 -6 ETBL_Eternal_Training 24127 3 1 1 -7 ETBL_Guided_Strike 24128 3 2 1 -8 ETBL_Armored_Uncanny_Dodge 24129 3 3 0 -9 ETBL_Eternal_Knowledge 24130 3 4 0 -10 ETBL_Defensive_Insight 24131 3 5 1 -11 ETBL_Tactical_Insight 24132 3 8 1 -12 ETBL_Island_In_Time 24133 3 10 1 + FeatLabel FeatIndex List GrantedOnLevel OnMenu +0 ETBL_ManeuverQuicksel 24125 3 1 1 +1 ETBL_Blade_Guide 24126 3 1 0 +2 ETBL_Eternal_Training 24127 3 1 1 +3 ETBL_Guided_Strike 24128 3 2 1 +4 ETBL_Armored_Uncanny_Dodge 24129 3 3 0 +5 ETBL_Eternal_Knowledge 24130 3 4 0 +6 ETBL_Defensive_Insight 24131 3 5 1 +7 ETBL_Tactical_Insight 24132 3 8 1 +8 ETBL_Island_In_Time 24133 3 10 1 +9 FEAT_EPIC_ETERNAL_BLADE 25081 3 11 0 +10 FEAT_EPIC_BLINDING_SPEED 491 1 -1 1 +11 FEAT_EPIC_GREAT_STRENGTH_1 814 1 -1 0 +12 FEAT_EPIC_GREAT_STRENGTH_2 815 1 -1 0 +13 FEAT_EPIC_GREAT_STRENGTH_3 816 1 -1 0 +14 FEAT_EPIC_GREAT_STRENGTH_4 817 1 -1 0 +15 FEAT_EPIC_GREAT_STRENGTH_5 818 1 -1 0 +16 FEAT_EPIC_GREAT_STRENGTH_6 819 1 -1 0 +17 FEAT_EPIC_GREAT_STRENGTH_7 820 1 -1 0 +18 FEAT_EPIC_GREAT_STRENGTH_8 821 1 -1 0 +19 FEAT_EPIC_GREAT_STRENGTH_9 822 1 -1 0 +20 FEAT_EPIC_GREAT_STRENGTH_10 823 1 -1 0 +21 FEAT_EPIC_GREAT_INTELLIGENCE_1 794 1 -1 0 +22 FEAT_EPIC_GREAT_INTELLIGENCE_2 795 1 -1 0 +23 FEAT_EPIC_GREAT_INTELLIGENCE_3 796 1 -1 0 +24 FEAT_EPIC_GREAT_INTELLIGENCE_4 797 1 -1 0 +25 FEAT_EPIC_GREAT_INTELLIGENCE_5 798 1 -1 0 +26 FEAT_EPIC_GREAT_INTELLIGENCE_6 799 1 -1 0 +27 FEAT_EPIC_GREAT_INTELLIGENCE_7 800 1 -1 0 +28 FEAT_EPIC_GREAT_INTELLIGENCE_8 801 1 -1 0 +29 FEAT_EPIC_GREAT_INTELLIGENCE_9 802 1 -1 0 +30 FEAT_EPIC_GREAT_INTELLIGENCE_10 803 1 -1 0 +31 FEAT_EPIC_ARMOR_SKIN 490 1 -1 0 +32 FEAT_EPIC_DAMAGE_REDUCTION_3 492 1 -1 0 +33 FEAT_EPIC_DAMAGE_REDUCTION_6 493 1 -1 0 +34 FEAT_EPIC_DAMAGE_REDUCTION_9 494 1 -1 0 +35 FEAT_EPIC_DEVASTATING_CRITICAL_CLUB 495 1 -1 0 +36 FEAT_EPIC_DEVASTATING_CRITICAL_DAGGER 496 1 -1 0 +37 FEAT_EPIC_DEVASTATING_CRITICAL_DART 497 1 -1 0 +38 FEAT_EPIC_DEVASTATING_CRITICAL_HEAVYCROSSBOW 498 1 -1 0 +39 FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTCROSSBOW 499 1 -1 0 +40 FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTMACE 500 1 -1 0 +41 FEAT_EPIC_DEVASTATING_CRITICAL_MORNINGSTAR 501 1 -1 0 +42 FEAT_EPIC_DEVASTATING_CRITICAL_QUARTERSTAFF 502 1 -1 0 +43 FEAT_EPIC_DEVASTATING_CRITICAL_SHORTSPEAR 503 1 -1 0 +44 FEAT_EPIC_DEVASTATING_CRITICAL_SICKLE 504 1 -1 0 +45 FEAT_EPIC_DEVASTATING_CRITICAL_SLING 505 1 -1 0 +46 FEAT_EPIC_DEVASTATING_CRITICAL_UNARMED 506 1 -1 0 +47 FEAT_EPIC_DEVASTATING_CRITICAL_LONGBOW 507 1 -1 0 +48 FEAT_EPIC_DEVASTATING_CRITICAL_SHORTBOW 508 1 -1 0 +49 FEAT_EPIC_DEVASTATING_CRITICAL_SHORTSWORD 509 1 -1 0 +50 FEAT_EPIC_DEVASTATING_CRITICAL_RAPIER 510 1 -1 0 +51 FEAT_EPIC_DEVASTATING_CRITICAL_SCIMITAR 511 1 -1 0 +52 FEAT_EPIC_DEVASTATING_CRITICAL_LONGSWORD 512 1 -1 0 +53 FEAT_EPIC_DEVASTATING_CRITICAL_GREATSWORD 513 1 -1 0 +54 FEAT_EPIC_DEVASTATING_CRITICAL_HANDAXE 514 1 -1 0 +55 FEAT_EPIC_DEVASTATING_CRITICAL_THROWINGAXE 515 1 -1 0 +56 FEAT_EPIC_DEVASTATING_CRITICAL_BATTLEAXE 516 1 -1 0 +57 FEAT_EPIC_DEVASTATING_CRITICAL_GREATAXE 517 1 -1 0 +58 FEAT_EPIC_DEVASTATING_CRITICAL_HALBERD 518 1 -1 0 +59 FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTHAMMER 519 1 -1 0 +60 FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTFLAIL 520 1 -1 0 +61 FEAT_EPIC_DEVASTATING_CRITICAL_WARHAMMER 521 1 -1 0 +62 FEAT_EPIC_DEVASTATING_CRITICAL_HEAVYFLAIL 522 1 -1 0 +63 FEAT_EPIC_DEVASTATING_CRITICAL_KAMA 523 1 -1 0 +64 FEAT_EPIC_DEVASTATING_CRITICAL_KUKRI 524 1 -1 0 +65 FEAT_EPIC_DEVASTATING_CRITICAL_SHURIKEN 525 1 -1 0 +66 FEAT_EPIC_DEVASTATING_CRITICAL_SCYTHE 526 1 -1 0 +67 FEAT_EPIC_DEVASTATING_CRITICAL_KATANA 527 1 -1 0 +68 FEAT_EPIC_DEVASTATING_CRITICAL_BASTARDSWORD 528 1 -1 0 +69 FEAT_EPIC_DEVASTATING_CRITICAL_DIREMACE 529 1 -1 0 +70 FEAT_EPIC_DEVASTATING_CRITICAL_DOUBLEAXE 530 1 -1 0 +71 FEAT_EPIC_DEVASTATING_CRITICAL_TWOBLADEDSWORD 531 1 -1 0 +72 FEAT_EPIC_DEVASTATING_CRITICAL_TRIDENT 1075 1 -1 0 +73 DEVASTATING_CRITICAL_LIGHT_LANCE 24673 1 -1 0 +74 DEVASTATING_CRITICAL_HEAVY_PICK 24674 1 -1 0 +75 DEVASTATING_CRITICAL_LIGHT_PICK 24675 1 -1 0 +76 DEVASTATING_CRITICAL_SAI 24676 1 -1 0 +77 DEVASTATING_CRITICAL_NUNCHAKU 24677 1 -1 0 +78 DEVASTATING_CRITICAL_FALCHION 24678 1 -1 0 +79 DEVASTATING_CRITICAL_SAP 24679 1 -1 0 +80 DEVASTATING_CRITICAL_KATAR 24680 1 -1 0 +81 DEVASTATING_CRITICAL_HEAVY_MACE 24681 1 -1 0 +82 DEVASTATING_CRITICAL_MAUL 24682 1 -1 0 +83 DEVASTATING_CRITICAL_DBL_SCIMITAR 24683 1 -1 0 +84 DEVASTATING_CRITICAL_GOAD 24684 1 -1 0 +85 DEVASTATING_CRITICAL_ELVEN_LIGHTBLADE 24703 1 -1 0 +86 DEVASTATING_CRITICAL_ELVEN_THINBLADE 24711 1 -1 0 +87 DEVASTATING_CRITICAL_ELVEN_COURTBLADE 24719 1 -1 0 +88 FEAT_EPIC_PROWESS 584 1 -1 0 +89 FEAT_EPIC_WEAPON_FOCUS_CLUB 619 1 -1 0 +90 FEAT_EPIC_WEAPON_FOCUS_DAGGER 620 1 -1 0 +91 FEAT_EPIC_WEAPON_FOCUS_DART 621 1 -1 0 +92 FEAT_EPIC_WEAPON_FOCUS_HEAVYCROSSBOW 622 1 -1 0 +93 FEAT_EPIC_WEAPON_FOCUS_LIGHTCROSSBOW 623 1 -1 0 +94 FEAT_EPIC_WEAPON_FOCUS_LIGHTMACE 624 1 -1 0 +95 FEAT_EPIC_WEAPON_FOCUS_MORNINGSTAR 625 1 -1 0 +96 FEAT_EPIC_WEAPON_FOCUS_QUARTERSTAFF 626 1 -1 0 +97 FEAT_EPIC_WEAPON_FOCUS_SHORTSPEAR 627 1 -1 0 +98 FEAT_EPIC_WEAPON_FOCUS_SICKLE 628 1 -1 0 +99 FEAT_EPIC_WEAPON_FOCUS_SLING 629 1 -1 0 +100 FEAT_EPIC_WEAPON_FOCUS_UNARMED 630 1 -1 0 +101 FEAT_EPIC_WEAPON_FOCUS_LONGBOW 631 1 -1 0 +102 FEAT_EPIC_WEAPON_FOCUS_SHORTBOW 632 1 -1 0 +103 FEAT_EPIC_WEAPON_FOCUS_SHORTSWORD 633 1 -1 0 +104 FEAT_EPIC_WEAPON_FOCUS_RAPIER 634 1 -1 0 +105 FEAT_EPIC_WEAPON_FOCUS_SCIMITAR 635 1 -1 0 +106 FEAT_EPIC_WEAPON_FOCUS_LONGSWORD 636 1 -1 0 +107 FEAT_EPIC_WEAPON_FOCUS_GREATSWORD 637 1 -1 0 +108 FEAT_EPIC_WEAPON_FOCUS_HANDAXE 638 1 -1 0 +109 FEAT_EPIC_WEAPON_FOCUS_THROWINGAXE 639 1 -1 0 +110 FEAT_EPIC_WEAPON_FOCUS_BATTLEAXE 640 1 -1 0 +111 FEAT_EPIC_WEAPON_FOCUS_GREATAXE 641 1 -1 0 +112 FEAT_EPIC_WEAPON_FOCUS_HALBERD 642 1 -1 0 +113 FEAT_EPIC_WEAPON_FOCUS_LIGHTHAMMER 643 1 -1 0 +114 FEAT_EPIC_WEAPON_FOCUS_LIGHTFLAIL 644 1 -1 0 +115 FEAT_EPIC_WEAPON_FOCUS_WARHAMMER 645 1 -1 0 +116 FEAT_EPIC_WEAPON_FOCUS_HEAVYFLAIL 646 1 -1 0 +117 FEAT_EPIC_WEAPON_FOCUS_KAMA 647 1 -1 0 +118 FEAT_EPIC_WEAPON_FOCUS_KUKRI 648 1 -1 0 +119 FEAT_EPIC_WEAPON_FOCUS_SHURIKEN 649 1 -1 0 +120 FEAT_EPIC_WEAPON_FOCUS_SCYTHE 650 1 -1 0 +121 FEAT_EPIC_WEAPON_FOCUS_KATANA 651 1 -1 0 +122 FEAT_EPIC_WEAPON_FOCUS_BASTARDSWORD 652 1 -1 0 +123 FEAT_EPIC_WEAPON_FOCUS_DIREMACE 653 1 -1 0 +124 FEAT_EPIC_WEAPON_FOCUS_DOUBLEAXE 654 1 -1 0 +125 FEAT_EPIC_WEAPON_FOCUS_TWOBLADEDSWORD 655 1 -1 0 +126 EPIC_WEAPON_FOCUS_LANCE 24613 1 -1 0 +127 EPIC_WEAPON_FOCUS_HEAVY_PICK 24614 1 -1 0 +128 EPIC_WEAPON_FOCUS_LIGHT_PICK 24615 1 -1 0 +129 EPIC_WEAPON_FOCUS_SAI 24616 1 -1 0 +130 EPIC_WEAPON_FOCUS_NUNCHAKU 24617 1 -1 0 +131 EPIC_WEAPON_FOCUS_FALCHION 24618 1 -1 0 +132 EPIC_WEAPON_FOCUS_SAP 24619 1 -1 0 +133 EPIC_WEAPON_FOCUS_KATAR 24620 1 -1 0 +134 EPIC_WEAPON_FOCUS_HEAVY_MACE 24621 1 -1 0 +135 EPIC_WEAPON_FOCUS_MAUL 24622 1 -1 0 +136 EPIC_WEAPON_FOCUS_DBL_SCIMITAR 24623 1 -1 0 +137 EPIC_WEAPON_FOCUS_GOAD 24624 1 -1 0 +138 EPIC_WEAPON_FOCUS_ELVEN_LIGHTBLADE 24698 1 -1 0 +139 EPIC_WEAPON_FOCUS_ELVEN_THINBLADE 24706 1 -1 0 +140 EPIC_WEAPON_FOCUS_ELVEN_COURTBLADE 24714 1 -1 0 +141 FEAT_EPIC_WEAPON_SPECIALIZATION_CLUB 657 1 -1 0 +142 FEAT_EPIC_WEAPON_SPECIALIZATION_DAGGER 658 1 -1 0 +143 FEAT_EPIC_WEAPON_SPECIALIZATION_DART 659 1 -1 0 +144 FEAT_EPIC_WEAPON_SPECIALIZATION_HEAVYCROSSBOW 660 1 -1 0 +145 FEAT_EPIC_WEAPON_SPECIALIZATION_LIGHTCROSSBOW 661 1 -1 0 +146 FEAT_EPIC_WEAPON_SPECIALIZATION_LIGHTMACE 662 1 -1 0 +147 FEAT_EPIC_WEAPON_SPECIALIZATION_MORNINGSTAR 663 1 -1 0 +148 FEAT_EPIC_WEAPON_SPECIALIZATION_QUARTERSTAFF 664 1 -1 0 +149 FEAT_EPIC_WEAPON_SPECIALIZATION_SHORTSPEAR 665 1 -1 0 +150 FEAT_EPIC_WEAPON_SPECIALIZATION_SICKLE 666 1 -1 0 +151 FEAT_EPIC_WEAPON_SPECIALIZATION_SLING 667 1 -1 0 +152 FEAT_EPIC_WEAPON_SPECIALIZATION_UNARMED 668 1 -1 0 +153 FEAT_EPIC_WEAPON_SPECIALIZATION_LONGBOW 669 1 -1 0 +154 FEAT_EPIC_WEAPON_SPECIALIZATION_SHORTBOW 670 1 -1 0 +155 FEAT_EPIC_WEAPON_SPECIALIZATION_SHORTSWORD 671 1 -1 0 +156 FEAT_EPIC_WEAPON_SPECIALIZATION_RAPIER 672 1 -1 0 +157 FEAT_EPIC_WEAPON_SPECIALIZATION_SCIMITAR 673 1 -1 0 +158 FEAT_EPIC_WEAPON_SPECIALIZATION_LONGSWORD 674 1 -1 0 +159 FEAT_EPIC_WEAPON_SPECIALIZATION_GREATSWORD 675 1 -1 0 +160 FEAT_EPIC_WEAPON_SPECIALIZATION_HANDAXE 676 1 -1 0 +161 FEAT_EPIC_WEAPON_SPECIALIZATION_THROWINGAXE 677 1 -1 0 +162 FEAT_EPIC_WEAPON_SPECIALIZATION_BATTLEAXE 678 1 -1 0 +163 FEAT_EPIC_WEAPON_SPECIALIZATION_GREATAXE 679 1 -1 0 +164 FEAT_EPIC_WEAPON_SPECIALIZATION_HALBERD 680 1 -1 0 +165 FEAT_EPIC_WEAPON_SPECIALIZATION_LIGHTHAMMER 681 1 -1 0 +166 FEAT_EPIC_WEAPON_SPECIALIZATION_LIGHTFLAIL 682 1 -1 0 +167 FEAT_EPIC_WEAPON_SPECIALIZATION_WARHAMMER 683 1 -1 0 +168 FEAT_EPIC_WEAPON_SPECIALIZATION_HEAVYFLAIL 684 1 -1 0 +169 FEAT_EPIC_WEAPON_SPECIALIZATION_KAMA 685 1 -1 0 +170 FEAT_EPIC_WEAPON_SPECIALIZATION_KUKRI 686 1 -1 0 +171 FEAT_EPIC_WEAPON_SPECIALIZATION_SHURIKEN 687 1 -1 0 +172 FEAT_EPIC_WEAPON_SPECIALIZATION_SCYTHE 688 1 -1 0 +173 FEAT_EPIC_WEAPON_SPECIALIZATION_KATANA 689 1 -1 0 +174 FEAT_EPIC_WEAPON_SPECIALIZATION_BASTARDSWORD 690 1 -1 0 +175 FEAT_EPIC_WEAPON_SPECIALIZATION_DIREMACE 691 1 -1 0 +176 FEAT_EPIC_WEAPON_SPECIALIZATION_DOUBLEAXE 692 1 -1 0 +177 FEAT_EPIC_WEAPON_SPECIALIZATION_TWOBLADEDSWORD 693 1 -1 0 +178 EPIC_WEAPON_SPECIALIZATION_LIGHT_LANCE 24637 1 -1 0 +179 EPIC_WEAPON_SPECIALIZATION_HEAVY_PICK 24638 1 -1 0 +180 EPIC_WEAPON_SPECIALIZATION_LIGHT_PICK 24639 1 -1 0 +181 EPIC_WEAPON_SPECIALIZATION_SAI 24640 1 -1 0 +182 EPIC_WEAPON_SPECIALIZATION_NUNCHAKU 24641 1 -1 0 +183 EPIC_WEAPON_SPECIALIZATION_FALCHION 24642 1 -1 0 +184 EPIC_WEAPON_SPECIALIZATION_SAP 24643 1 -1 0 +185 EPIC_WEAPON_SPECIALIZATION_KATAR 24644 1 -1 0 +186 EPIC_WEAPON_SPECIALIZATION_HEAVY_MACE 24645 1 -1 0 +187 EPIC_WEAPON_SPECIALIZATION_MAUL 24646 1 -1 0 +188 EPIC_WEAPON_SPECIALIZATION_DBL_SCIMITAR 24647 1 -1 0 +189 EPIC_WEAPON_SPECIALIZATION_GOAD 24648 1 -1 0 +190 EPIC_WEAPON_SPECIALIZATION_ELVEN_LIGHTBLADE 24700 1 -1 0 +191 EPIC_WEAPON_SPECIALIZATION_ELVEN_THINBLADE 24708 1 -1 0 +192 EPIC_WEAPON_SPECIALIZATION_ELVEN_COURTBLADE 24716 1 -1 0 +193 FEAT_EPIC_OVERWHELMING_CRITICAL_CLUB 709 1 -1 0 +194 FEAT_EPIC_OVERWHELMING_CRITICAL_DAGGER 710 1 -1 0 +195 FEAT_EPIC_OVERWHELMING_CRITICAL_DART 711 1 -1 0 +196 FEAT_EPIC_OVERWHELMING_CRITICAL_HEAVYCROSSBOW 712 1 -1 0 +197 FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTCROSSBOW 713 1 -1 0 +198 FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTMACE 714 1 -1 0 +199 FEAT_EPIC_OVERWHELMING_CRITICAL_MORNINGSTAR 715 1 -1 0 +200 FEAT_EPIC_OVERWHELMING_CRITICAL_QUARTERSTAFF 716 1 -1 0 +201 FEAT_EPIC_OVERWHELMING_CRITICAL_SHORTSPEAR 717 1 -1 0 +202 FEAT_EPIC_OVERWHELMING_CRITICAL_SICKLE 718 1 -1 0 +203 FEAT_EPIC_OVERWHELMING_CRITICAL_SLING 719 1 -1 0 +204 FEAT_EPIC_OVERWHELMING_CRITICAL_UNARMED 720 1 -1 0 +205 FEAT_EPIC_OVERWHELMING_CRITICAL_LONGBOW 721 1 -1 0 +206 FEAT_EPIC_OVERWHELMING_CRITICAL_SHORTBOW 722 1 -1 0 +207 FEAT_EPIC_OVERWHELMING_CRITICAL_SHORTSWORD 723 1 -1 0 +208 FEAT_EPIC_OVERWHELMING_CRITICAL_RAPIER 724 1 -1 0 +209 FEAT_EPIC_OVERWHELMING_CRITICAL_SCIMITAR 725 1 -1 0 +210 FEAT_EPIC_OVERWHELMING_CRITICAL_LONGSWORD 726 1 -1 0 +211 FEAT_EPIC_OVERWHELMING_CRITICAL_GREATSWORD 727 1 -1 0 +212 FEAT_EPIC_OVERWHELMING_CRITICAL_HANDAXE 728 1 -1 0 +213 FEAT_EPIC_OVERWHELMING_CRITICAL_THROWINGAXE 729 1 -1 0 +214 FEAT_EPIC_OVERWHELMING_CRITICAL_BATTLEAXE 730 1 -1 0 +215 FEAT_EPIC_OVERWHELMING_CRITICAL_GREATAXE 731 1 -1 0 +216 FEAT_EPIC_OVERWHELMING_CRITICAL_HALBERD 732 1 -1 0 +217 FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTHAMMER 733 1 -1 0 +218 FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTFLAIL 734 1 -1 0 +219 FEAT_EPIC_OVERWHELMING_CRITICAL_WARHAMMER 735 1 -1 0 +220 FEAT_EPIC_OVERWHELMING_CRITICAL_HEAVYFLAIL 736 1 -1 0 +221 FEAT_EPIC_OVERWHELMING_CRITICAL_KAMA 737 1 -1 0 +222 FEAT_EPIC_OVERWHELMING_CRITICAL_KUKRI 738 1 -1 0 +223 FEAT_EPIC_OVERWHELMING_CRITICAL_SHURIKEN 739 1 -1 0 +224 FEAT_EPIC_OVERWHELMING_CRITICAL_SCYTHE 740 1 -1 0 +225 FEAT_EPIC_OVERWHELMING_CRITICAL_KATANA 741 1 -1 0 +226 FEAT_EPIC_OVERWHELMING_CRITICAL_BASTARDSWORD 742 1 -1 0 +227 FEAT_EPIC_OVERWHELMING_CRITICAL_DIREMACE 743 1 -1 0 +228 FEAT_EPIC_OVERWHELMING_CRITICAL_DOUBLEAXE 744 1 -1 0 +229 FEAT_EPIC_OVERWHELMING_CRITICAL_TWOBLADEDSWORD 745 1 -1 0 +230 OVERWHELMING_CRITICAL_LIGHT_LANCE 24661 1 -1 0 +231 OVERWHELMING_CRITICAL_HEAVY_PICK 24662 1 -1 0 +232 OVERWHELMING_CRITICAL_LIGHT_PICK 24663 1 -1 0 +233 OVERWHELMING_CRITICAL_SAI 24664 1 -1 0 +234 OVERWHELMING_CRITICAL_NUNCHAKU 24665 1 -1 0 +235 OVERWHELMING_CRITICAL_FALCHION 24666 1 -1 0 +236 OVERWHELMING_CRITICAL_SAP 24667 1 -1 0 +237 OVERWHELMING_CRITICAL_KATAR 24668 1 -1 0 +238 OVERWHELMING_CRITICAL_HEAVY_MACE 24669 1 -1 0 +239 OVERWHELMING_CRITICAL_MAUL 24670 1 -1 0 +240 OVERWHELMING_CRITICAL_DBL_SCIMITAR 24671 1 -1 0 +241 OVERWHELMING_CRITICAL_GOAD 24672 1 -1 0 +242 OVERWHELMING_CRITICAL_ELVEN_LIGHTBLADE 24702 1 -1 0 +243 OVERWHELMING_CRITICAL_ELVEN_THINBLADE 24710 1 -1 0 +244 OVERWHELMING_CRITICAL_ELVEN_COURTBLADE 24718 1 -1 0 +245 FEAT_EPIC_TOUGHNESS_1 754 1 -1 0 +246 FEAT_EPIC_TOUGHNESS_2 755 1 -1 0 +247 FEAT_EPIC_TOUGHNESS_3 756 1 -1 0 +248 FEAT_EPIC_TOUGHNESS_4 757 1 -1 0 +249 FEAT_EPIC_TOUGHNESS_5 758 1 -1 0 +250 FEAT_EPIC_TOUGHNESS_6 759 1 -1 0 +251 FEAT_EPIC_TOUGHNESS_7 760 1 -1 0 +252 FEAT_EPIC_TOUGHNESS_8 761 1 -1 0 +253 FEAT_EPIC_TOUGHNESS_9 762 1 -1 0 +254 FEAT_EPIC_TOUGHNESS_10 763 1 -1 0 +255 FEAT_EPIC_DEVASTATING_CRITICAL_DWAXE 955 1 -1 0 +256 FEAT_EPIC_WEAPON_FOCUS_DWAXE 956 1 -1 0 +257 FEAT_EPIC_WEAPON_SPECIALIZATION_DWAXE 957 1 -1 0 +258 FEAT_EPIC_OVERWHELMING_CRITICAL_DWAXE 958 1 -1 0 +259 FEAT_EPIC_WEAPON_FOCUS_WHIP 997 1 -1 0 +260 FEAT_EPIC_DEVASTATING_CRITICAL_WHIP 996 1 -1 0 +261 FEAT_EPIC_OVERWHELMING_CRITICAL_WHIP 999 1 -1 0 +262 FEAT_EPIC_WEAPON_SPECIALIZATION_WHIP 998 1 -1 0 +263 FEAT_IMPROVED_WHIRLWIND 868 1 -1 0 +264 FEAT_EPIC_SUPERIOR_INITIATIVE 753 1 -1 0 +265 FEAT_EPIC_BLINDING_SPEED 491 1 -1 1 +266 OverWCrit_Mindblade 3615 1 -1 0 +267 DevCrit_Mindblade 3616 1 -1 0 +268 Epic_WeaponFocus_Mindblade 3618 1 -1 0 +269 Epic_WeaponSpecialization_Mindblade 3619 1 -1 0 +270 PERFECT_TWO_WEAPON_FIGHTING 4320 1 -1 0 +271 FEAT_EPIC_LEADERSHIP 4366 1 -1 0 +272 FEAT_LEGENDARY_COMMANDER 4367 1 -1 0 +273 Two-Weapon_Rend 3113 1 -1 0 +274 FEAT_EPIC_GREAT_CHARISMA_2 764 1 -1 0 +275 FEAT_EPIC_GREAT_CHARISMA_3 765 1 -1 0 +276 FEAT_EPIC_GREAT_CHARISMA_4 766 1 -1 0 +277 FEAT_EPIC_GREAT_CHARISMA_5 767 1 -1 0 +278 FEAT_EPIC_GREAT_CHARISMA_6 768 1 -1 0 +279 FEAT_EPIC_GREAT_CHARISMA_7 769 1 -1 0 +280 FEAT_EPIC_GREAT_CHARISMA_8 770 1 -1 0 +281 FEAT_EPIC_GREAT_CHARISMA_9 771 1 -1 0 +282 FEAT_EPIC_GREAT_CHARISMA_10 772 1 -1 0 +283 FEAT_EPIC_GREAT_CONSTITUTION_1 773 1 -1 0 +284 FEAT_EPIC_GREAT_CONSTITUTION_2 774 1 -1 0 +285 FEAT_EPIC_GREAT_CONSTITUTION_3 775 1 -1 0 +286 FEAT_EPIC_GREAT_CONSTITUTION_4 776 1 -1 0 +287 FEAT_EPIC_GREAT_CONSTITUTION_5 777 1 -1 0 +288 FEAT_EPIC_GREAT_CONSTITUTION_6 778 1 -1 0 +289 FEAT_EPIC_GREAT_CONSTITUTION_7 779 1 -1 0 +290 FEAT_EPIC_GREAT_CONSTITUTION_8 780 1 -1 0 +291 FEAT_EPIC_GREAT_CONSTITUTION_9 781 1 -1 0 +292 FEAT_EPIC_GREAT_CONSTITUTION_10 782 1 -1 0 +293 ExtraGrantedManeuver 4096 0 -1 0 +294 StonePower 5294 0 -1 1 +295 VitalRecovery 3636 0 -1 0 +296 DefArrow 8 0 -1 0 +297 TwoWeap 41 0 -1 0 +298 Ambidex 1 0 -1 0