2025/05/13 Update
Updated TF Shadowlord's prereq 2da. Fixed CW Samurai's TWF levelup issue. Added CW Samurai's skill 2DA back in. Cleaned up ECL 2DA. Fixed prereq bug with Imp Crit Eagle Claw. Added Ability Focus feats for all Shapes, Essences & Invocations with DCs. Fixed bug with 6th slot of crafting spells prereqs. Added Reth Dekala HD to Initiator total. Removed Dark Sun race files. Updated all racial outsiders, monstrous humanoids, aberrations, giants, humanoids and fey to have the correct weapon & armor profs.
This commit is contained in:
@@ -34,6 +34,9 @@ const int INVOCATION_DARK = 8;
|
||||
/* Function prototypes */
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
//:: Updates the Invocation DC for Ability Focus feats.
|
||||
int InvokerAbilityFocus(object oPC, int nEssence, int nEssence2 = -1);
|
||||
|
||||
/**
|
||||
* Determines from what class's invocation list the currently casted
|
||||
* invocation is cast from.
|
||||
@@ -143,6 +146,7 @@ int GetBlastDamageDices(object oInvoker, int nInvokerLevel);
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
//#include "prc_alterations"
|
||||
#include "prc_feat_const"
|
||||
#include "inv_inc_invknown"
|
||||
#include "inv_inc_invoke"
|
||||
#include "inv_inc_blast"
|
||||
@@ -157,6 +161,276 @@ int GetBlastDamageDices(object oInvoker, int nInvokerLevel);
|
||||
/* Function definitions */
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
//:: Updates the Invocation DC for Ability Focus feats.
|
||||
int InvokerAbilityFocus(object oPC, int nEssence, int nEssence2 = -1)
|
||||
{
|
||||
int nBonus = 0;
|
||||
|
||||
// Check for the shape
|
||||
switch(nEssence)
|
||||
{
|
||||
case INVOKE_ELDRITCH_BLAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_ELDRITCH_BLAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_ELDRITCH_CHAIN:
|
||||
if (GetHasFeat(FEAT_ABFOC_ELDRITCH_CHAIN, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_ELDRITCH_CONE:
|
||||
if (GetHasFeat(FEAT_ABFOC_ELDRITCH_CONE, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_ELDRITCH_DOOM:
|
||||
if (GetHasFeat(FEAT_ABFOC_ELDRITCH_DOOM, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_ELDRITCH_GLAIVE:
|
||||
if (GetHasFeat(FEAT_ABFOC_ELDRITCH_GLAIVE, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_ELDRITCH_LINE:
|
||||
if (GetHasFeat(FEAT_ABFOC_ELDRITCH_LINE, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_ELDRITCH_SPEAR:
|
||||
if (GetHasFeat(FEAT_ABFOC_ELDRITCH_SPEAR, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BRIMSTONE_BLAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_BRIMSTONE_BLAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_NOXIOUS_BLAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_NOXIOUS_BLAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_FRIGHTFUL_BLAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_FRIGHTFUL_BLAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_SICKENING_BLAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_SICKENING_BLAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_HELLRIME_BLAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_HELLRIME_BLAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BEWITCHING_BLAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_BEWITCHING_BLAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BINDING_BLAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_BINDING_BLAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_HINDERING_BLAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_HINDERING_BLAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_PENETRATING_BLAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_PENETRATING_BLAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_UTTERDARK_BLAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_UTTERDARK_BLAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_INCARNUM_BLAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_INCARNUM_BLAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_HAMMER_BLAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_HAMMER_BLAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
// case INVOKE_VITRIOLIC_BLAST:
|
||||
// if (GetHasFeat(FEAT_ABFOC_VITRIOLIC_BLAST, oPC)) nBonus += 2;
|
||||
// break;
|
||||
case INVOKE_BANEFUL_BLAST_ABERRATION:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_ABERRATION, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_BEAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_BEAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_CONSTRUCT:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_CONSTRUCT, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_DRAGON:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_DRAGON, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_DWARF:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_DWARF, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_ELEMENTAL:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_ELEMENTAL, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_ELF:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_ELF, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_FEY:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_FEY, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_GIANT:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_GIANT, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_GOBLINOID:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_GOBLINOID, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_GNOME:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_GNOME, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_HALFLING:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_HALFLING, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_HUMAN:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_HUMAN, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_MONSTROUS:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_MONSTROUS, oPC)) nBonus += 2;
|
||||
break;
|
||||
// case INVOKE_BANEFUL_BLAST_OOZE:
|
||||
// if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_OOZE, oPC)) nBonus += 2;
|
||||
// break;
|
||||
case INVOKE_BANEFUL_BLAST_ORC:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_ORC, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_OUTSIDER:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_OUTSIDER, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_PLANT:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_PLANT, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_REPTILIAN:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_REPTILIAN, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_SHAPECHANGER:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_SHAPECHANGER, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_UNDEAD:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_UNDEAD, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_VERMIN:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_VERMIN, oPC)) nBonus += 2;
|
||||
break;
|
||||
}
|
||||
|
||||
// Check for the secondary shape or essence component
|
||||
switch(nEssence2)
|
||||
{
|
||||
case INVOKE_ELDRITCH_BLAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_ELDRITCH_BLAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_ELDRITCH_CHAIN:
|
||||
if (GetHasFeat(FEAT_ABFOC_ELDRITCH_CHAIN, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_ELDRITCH_CONE:
|
||||
if (GetHasFeat(FEAT_ABFOC_ELDRITCH_CONE, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_ELDRITCH_DOOM:
|
||||
if (GetHasFeat(FEAT_ABFOC_ELDRITCH_DOOM, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_ELDRITCH_GLAIVE:
|
||||
if (GetHasFeat(FEAT_ABFOC_ELDRITCH_GLAIVE, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_ELDRITCH_LINE:
|
||||
if (GetHasFeat(FEAT_ABFOC_ELDRITCH_LINE, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_ELDRITCH_SPEAR:
|
||||
if (GetHasFeat(FEAT_ABFOC_ELDRITCH_SPEAR, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BRIMSTONE_BLAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_BRIMSTONE_BLAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_NOXIOUS_BLAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_NOXIOUS_BLAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_FRIGHTFUL_BLAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_FRIGHTFUL_BLAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_SICKENING_BLAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_SICKENING_BLAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_HELLRIME_BLAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_HELLRIME_BLAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BEWITCHING_BLAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_BEWITCHING_BLAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BINDING_BLAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_BINDING_BLAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_HINDERING_BLAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_HINDERING_BLAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_PENETRATING_BLAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_PENETRATING_BLAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_UTTERDARK_BLAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_UTTERDARK_BLAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_INCARNUM_BLAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_INCARNUM_BLAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_HAMMER_BLAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_HAMMER_BLAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
// case INVOKE_VITRIOLIC_BLAST:
|
||||
// if (GetHasFeat(FEAT_ABFOC_VITRIOLIC_BLAST, oPC)) nBonus += 2;
|
||||
// break;
|
||||
case INVOKE_BANEFUL_BLAST_ABERRATION:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_ABERRATION, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_BEAST:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_BEAST, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_CONSTRUCT:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_CONSTRUCT, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_DRAGON:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_DRAGON, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_DWARF:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_DWARF, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_ELEMENTAL:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_ELEMENTAL, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_ELF:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_ELF, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_FEY:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_FEY, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_GIANT:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_GIANT, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_GOBLINOID:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_GOBLINOID, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_GNOME:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_GNOME, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_HALFLING:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_HALFLING, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_HUMAN:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_HUMAN, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_MONSTROUS:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_MONSTROUS, oPC)) nBonus += 2;
|
||||
break;
|
||||
// case INVOKE_BANEFUL_BLAST_OOZE:
|
||||
// if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_OOZE, oPC)) nBonus += 2;
|
||||
// break;
|
||||
case INVOKE_BANEFUL_BLAST_ORC:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_ORC, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_OUTSIDER:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_OUTSIDER, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_PLANT:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_PLANT, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_REPTILIAN:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_REPTILIAN, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_SHAPECHANGER:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_SHAPECHANGER, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_UNDEAD:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_UNDEAD, oPC)) nBonus += 2;
|
||||
break;
|
||||
case INVOKE_BANEFUL_BLAST_VERMIN:
|
||||
if (GetHasFeat(FEAT_ABFOC_BANEFUL_BLAST_VERMIN, oPC)) nBonus += 2;
|
||||
break;
|
||||
}
|
||||
|
||||
return nBonus;
|
||||
}
|
||||
|
||||
int GetInvokingClass(object oInvoker = OBJECT_SELF)
|
||||
{
|
||||
return GetLocalInt(oInvoker, PRC_INVOKING_CLASS) - 1;
|
||||
|
@@ -84,7 +84,7 @@ const int INVOKE_SUMMON_SWARM_BAT = 18071;
|
||||
const int INVOKE_SWIMMING_THE_STYX = 18072;
|
||||
|
||||
//Lesser Warlock Invocations
|
||||
const int INVOKE_BANEFUL_BLAST_ABBERATION = 18073;
|
||||
const int INVOKE_BANEFUL_BLAST_ABERRATION = 18073;
|
||||
const int INVOKE_BANEFUL_BLAST_BEAST = 18074;
|
||||
const int INVOKE_BANEFUL_BLAST_CONSTRUCT = 18075;
|
||||
const int INVOKE_BANEFUL_BLAST_DRAGON = 18076;
|
||||
@@ -97,7 +97,7 @@ const int INVOKE_BANEFUL_BLAST_GOBLINOID = 18082;
|
||||
const int INVOKE_BANEFUL_BLAST_GNOME = 18083;
|
||||
const int INVOKE_BANEFUL_BLAST_HALFLING = 18084;
|
||||
const int INVOKE_BANEFUL_BLAST_HUMAN = 18085;
|
||||
const int INVOKE_BANEFUL_BLAST_MONSTEROUS = 18086;
|
||||
const int INVOKE_BANEFUL_BLAST_MONSTROUS = 18086;
|
||||
const int INVOKE_BANEFUL_BLAST_ORC = 18087;
|
||||
const int INVOKE_BANEFUL_BLAST_OUTSIDER = 18088;
|
||||
const int INVOKE_BANEFUL_BLAST_PLANT = 18089;
|
||||
|
@@ -12,13 +12,13 @@ int PRCGetSaveDC(object oTarget, object oCaster, int nSpellID = -1);
|
||||
int GetChangesToSaveDC(object oTarget, object oCaster, int nSpellID, int nSchool);
|
||||
|
||||
#include "prc_add_spl_pen"
|
||||
//#include "prc_inc_spells"
|
||||
//#include "prc_class_const"
|
||||
//#include "prc_feat_const"
|
||||
//#include "lookup_2da_spell"
|
||||
//#include "prcsp_archmaginc"
|
||||
//#include "prc_alterations"
|
||||
//#include "prc_inc_racial"
|
||||
// #include "prc_inc_spells"
|
||||
// #include "prc_class_const"
|
||||
// #include "prc_feat_const"
|
||||
// #include "lookup_2da_spell"
|
||||
// #include "prcsp_archmaginc"
|
||||
// #include "prc_alterations"
|
||||
// #include "prc_inc_racial"
|
||||
#include "inc_newspellbook"
|
||||
|
||||
int GetCorruptSpellFocus(int nSpellID, object oCaster)
|
||||
|
@@ -628,7 +628,7 @@ int CheckCraftingSpells(object oPC, string sFile, int nLine, int bDecrement = FA
|
||||
int nTemp;
|
||||
int i;
|
||||
|
||||
for(i = 0; i < 6; i++)
|
||||
for(i = 0; i < 7; i++)
|
||||
{
|
||||
nPosition = FindSubString(sTemp, "_");
|
||||
sSub = (nPosition == -1) ? sTemp : GetStringLeft(sTemp, nPosition);
|
||||
|
@@ -644,6 +644,74 @@ const int FEAT_EPIC_WEAPON_SPECIALIZATION_ELVEN_LIGHTBLADE = 24700;
|
||||
const int FEAT_EPIC_WEAPON_SPECIALIZATION_ELVEN_THINBLADE = 24708;
|
||||
const int FEAT_EPIC_WEAPON_SPECIALIZATION_ELVEN_COURTBLADE = 24716;
|
||||
|
||||
//:: Ability Focus Feats
|
||||
const int FEAT_ABFOC_DEAFENING_ROAR = 25150;
|
||||
const int FEAT_ABFOC_SCALDING_GUST = 25151;
|
||||
const int FEAT_ABFOC_CHARM = 25152;
|
||||
const int FEAT_ABFOC_FRIGHTFUL_PRESENCE = 25153;
|
||||
const int FEAT_ABFOC_TERRIFYING_ROAR = 25154;
|
||||
const int FEAT_ABFOC_BALEFUL_UTTERANCE = 25155;
|
||||
const int FEAT_ABFOC_CALL_OF_THE_BEAST = 25156;
|
||||
const int FEAT_ABFOC_DRAIN_INCARNUM = 25157;
|
||||
const int FEAT_ABFOC_ELDRITCH_GLAIVE = 25158;
|
||||
const int FEAT_ABFOC_ELDRITCH_SPEAR = 25159;
|
||||
const int FEAT_ABFOC_FRIGHTFUL_BLAST = 25160;
|
||||
const int FEAT_ABFOC_HAMMER_BLAST = 25161;
|
||||
const int FEAT_ABFOC_HIDEOUS_BLOW = 25162;
|
||||
const int FEAT_ABFOC_MIASMIC_CLOUD = 25163;
|
||||
const int FEAT_ABFOC_SICKENING_BLAST = 25164;
|
||||
const int FEAT_ABFOC_SOULREAVING_AURA = 25165;
|
||||
const int FEAT_ABFOC_BANEFUL_BLAST_ABERRATION = 25166;
|
||||
const int FEAT_ABFOC_BANEFUL_BLAST_BEAST = 25167;
|
||||
const int FEAT_ABFOC_BANEFUL_BLAST_CONSTRUCT = 25168;
|
||||
const int FEAT_ABFOC_BANEFUL_BLAST_DRAGON = 25169;
|
||||
const int FEAT_ABFOC_BANEFUL_BLAST_DWARF = 25170;
|
||||
const int FEAT_ABFOC_BANEFUL_BLAST_ELEMENTAL = 25171;
|
||||
const int FEAT_ABFOC_BANEFUL_BLAST_ELF = 25172;
|
||||
const int FEAT_ABFOC_BANEFUL_BLAST_FEY = 25173;
|
||||
const int FEAT_ABFOC_BANEFUL_BLAST_GIANT = 25174;
|
||||
const int FEAT_ABFOC_BANEFUL_BLAST_GOBLINOID = 25175;
|
||||
const int FEAT_ABFOC_BANEFUL_BLAST_GNOME = 25176;
|
||||
const int FEAT_ABFOC_BANEFUL_BLAST_HALFLING = 25177;
|
||||
const int FEAT_ABFOC_BANEFUL_BLAST_HUMAN = 25178;
|
||||
const int FEAT_ABFOC_BANEFUL_BLAST_MONSTROUS = 25179;
|
||||
const int FEAT_ABFOC_BANEFUL_BLAST_OOZE = 25180;
|
||||
const int FEAT_ABFOC_BANEFUL_BLAST_ORC = 25181;
|
||||
const int FEAT_ABFOC_BANEFUL_BLAST_OUTSIDER = 25182;
|
||||
const int FEAT_ABFOC_BANEFUL_BLAST_PLANT = 25183;
|
||||
const int FEAT_ABFOC_BANEFUL_BLAST_REPTILIAN = 25184;
|
||||
const int FEAT_ABFOC_BANEFUL_BLAST_SHAPECHANGER = 25185;
|
||||
const int FEAT_ABFOC_BANEFUL_BLAST_UNDEAD = 25186;
|
||||
const int FEAT_ABFOC_BANEFUL_BLAST_VERMIN = 25187;
|
||||
const int FEAT_ABFOC_BESHADOWED_BLAST = 25188;
|
||||
const int FEAT_ABFOC_BRIMSTONE_BLAST = 25189;
|
||||
const int FEAT_ABFOC_CURSE_OF_DESPAIR = 25190;
|
||||
const int FEAT_ABFOC_DREAD_SEIZURE = 25191;
|
||||
const int FEAT_ABFOC_ELDRITCH_CHAIN = 25192;
|
||||
const int FEAT_ABFOC_HELLRIME_BLAST = 25193;
|
||||
const int FEAT_ABFOC_STEAL_INCARNUM = 25194;
|
||||
const int FEAT_ABFOC_WALL_OF_GLOOM = 25195;
|
||||
const int FEAT_ABFOC_BEWITCHING_BLAST = 25196;
|
||||
const int FEAT_ABFOC_ELDRITCH_CONE = 25197;
|
||||
const int FEAT_ABFOC_ELDRITCH_LINE = 25198;
|
||||
const int FEAT_ABFOC_ENERVATING_SHADOW = 25199;
|
||||
const int FEAT_ABFOC_HINDERING_BLAST = 25200;
|
||||
const int FEAT_ABFOC_INCARNUM_BLAST = 25201;
|
||||
const int FEAT_ABFOC_NIGHTMARES_MADE_REAL = 25202;
|
||||
const int FEAT_ABFOC_NOXIOUS_BLAST = 25203;
|
||||
const int FEAT_ABFOC_PAINFUL_SLUMBER_OF_THE_AGES = 25204;
|
||||
const int FEAT_ABFOC_PENETRATING_BLAST = 25205;
|
||||
const int FEAT_ABFOC_UTTERDARK_BLAST = 25206;
|
||||
const int FEAT_ABFOC_WALL_OF_PERILOUS_FLAME = 25207;
|
||||
const int FEAT_ABFOC_BINDING_BLAST = 25208;
|
||||
const int FEAT_ABFOC_ELDRITCH_DOOM = 25209;
|
||||
const int FEAT_ABFOC_INCARNUM_SHROUD = 25210;
|
||||
const int FEAT_ABFOC_STEAL_SUMMONING = 25211;
|
||||
const int FEAT_ABFOC_ELDRITCH_BLAST = 25212;
|
||||
const int FEAT_ABFOC_WORD_OF_CHANGING = 25213;
|
||||
|
||||
|
||||
|
||||
//Passive Feats
|
||||
const int FEAT_ETERNAL_FREEDOM = 4298;
|
||||
const int FEAT_INTUITIVE_ATTACK = 3166;
|
||||
|
@@ -509,6 +509,50 @@ void DoEquipThinblade(object oPC, object oItem, int nHand)
|
||||
|
||||
//handles the feat chain for Elven Courtblades
|
||||
void DoEquipCourtblade(object oPC, object oItem, int nHand)
|
||||
{
|
||||
// Check if the PC qualifies with Greatsword feats
|
||||
if (GetHasFeat(FEAT_WEAPON_FOCUS_GREAT_SWORD, oPC))
|
||||
{
|
||||
// Weapon Focus: Elven Courtblade
|
||||
effect eWF = EffectBonusFeat(FEAT_WEAPON_FOCUS_ELVEN_COURTBLADE);
|
||||
TagEffect(eWF, "EFF_CB_WF");
|
||||
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eWF, oPC);
|
||||
|
||||
// Epic Weapon Focus: Elven Courtblade
|
||||
if (GetHasFeat(FEAT_EPIC_WEAPON_FOCUS_GREATSWORD, oPC))
|
||||
{
|
||||
effect eEpicWF = EffectBonusFeat(FEAT_EPIC_WEAPON_FOCUS_ELVEN_COURTBLADE);
|
||||
TagEffect(eEpicWF, "EFF_CB_EPICWF");
|
||||
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEpicWF, oPC);
|
||||
}
|
||||
|
||||
// Weapon Specialization: Elven Courtblade
|
||||
if (GetHasFeat(FEAT_WEAPON_SPECIALIZATION_GREAT_SWORD, oPC))
|
||||
{
|
||||
effect eWS = EffectBonusFeat(FEAT_WEAPON_SPECIALIZATION_ELVEN_COURTBLADE);
|
||||
TagEffect(eWS, "EFF_CB_WS");
|
||||
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eWS, oPC);
|
||||
|
||||
// Epic Weapon Specialization: Elven Courtblade
|
||||
if (GetHasFeat(FEAT_EPIC_WEAPON_SPECIALIZATION_GREATSWORD, oPC))
|
||||
{
|
||||
effect eEpicWS = EffectBonusFeat(FEAT_EPIC_WEAPON_SPECIALIZATION_ELVEN_COURTBLADE);
|
||||
TagEffect(eEpicWS, "EFF_CB_EPICWS");
|
||||
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEpicWS, oPC);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Improved Critical: Elven Courtblade
|
||||
if (GetHasFeat(FEAT_IMPROVED_CRITICAL_GREAT_SWORD, oPC))
|
||||
{
|
||||
effect eICrit = EffectBonusFeat(FEAT_IMPROVED_CRITICAL_ELVEN_COURTBLADE);
|
||||
TagEffect(eICrit, "EFF_CB_ICRIT");
|
||||
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eICrit, oPC);
|
||||
}
|
||||
}
|
||||
|
||||
/* void DoEquipCourtblade(object oPC, object oItem, int nHand)
|
||||
{
|
||||
if(GetHasFeat(FEAT_WEAPON_FOCUS_GREAT_SWORD, oPC))
|
||||
{
|
||||
@@ -524,7 +568,7 @@ void DoEquipCourtblade(object oPC, object oItem, int nHand)
|
||||
}
|
||||
if(GetHasFeat(FEAT_IMPROVED_CRITICAL_GREAT_SWORD, oPC))
|
||||
IPSafeAddItemProperty(oItem, ItemPropertyKeen(), 99999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
||||
}
|
||||
} */
|
||||
|
||||
//clears any bonuses used to simulate feat chains on unequip
|
||||
void DoWeaponFeatUnequip(object oPC, object oItem, int nHand)
|
||||
@@ -673,6 +717,7 @@ void DoProficiencyCheck(object oPC, object oItem, int nHand)
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
void DoWeaponEquip(object oPC, object oItem, int nHand)
|
||||
{
|
||||
if(GetIsDM(oPC) || !GetIsWeapon(oItem)) return;
|
||||
|
@@ -633,13 +633,21 @@ int GetDisciplineByManeuver(int nMoveId)
|
||||
|
||||
int GetBladeMagicPRCLevels(object oInitiator)
|
||||
{
|
||||
int nLevel = GetLevelByClass(CLASS_TYPE_DEEPSTONE_SENTINEL, oInitiator)
|
||||
int nRace = GetRacialType(oInitiator);
|
||||
|
||||
int nLevel = GetLevelByClass(CLASS_TYPE_DEEPSTONE_SENTINEL, oInitiator)
|
||||
+ GetLevelByClass(CLASS_TYPE_BLOODCLAW_MASTER, oInitiator)
|
||||
+ GetLevelByClass(CLASS_TYPE_RUBY_VINDICATOR, oInitiator)
|
||||
+ GetLevelByClass(CLASS_TYPE_JADE_PHOENIX_MAGE, oInitiator)
|
||||
+ GetLevelByClass(CLASS_TYPE_MASTER_OF_NINE, oInitiator)
|
||||
+ GetLevelByClass(CLASS_TYPE_ETERNAL_BLADE, oInitiator)
|
||||
+ GetLevelByClass(CLASS_TYPE_SHADOW_SUN_NINJA, oInitiator);
|
||||
|
||||
if (nRace == RACIAL_TYPE_RETH_DEKALA)
|
||||
{
|
||||
nLevel += GetLevelByClass(CLASS_TYPE_OUTSIDER, oInitiator);
|
||||
}
|
||||
|
||||
|
||||
return nLevel;
|
||||
}
|
||||
|
Reference in New Issue
Block a user