2025/04/19 Update
Updated global ability bonus limit to match 2da. Fixed Toughening Transmutation. Updated Dazzling Illusion. Updated feat constants for PrC epic expansion. Added epic marker feats & icons. Updated Virtuoso, Ur-Priest, Spellfire Channeler, Serene Guardian, Forsaker, Acolyte of the Skin & Anima Mage with epic progression.
This commit is contained in:
@@ -21,6 +21,8 @@ const int FEAT_EPIC_SHAMAN = 24240;
|
||||
const int FEAT_EPIC_SWASHBUCKLER = 1917;
|
||||
const int FEAT_EPIC_WARLOCK = 24239;
|
||||
const int FEAT_EPIC_WARMAGE = 24242;
|
||||
const int FEAT_EPIC_BINDER = 25002;
|
||||
const int FEAT_EPIC_SHUGENJA = 25107;
|
||||
|
||||
//:: Epic Presitge Class Marker Feats
|
||||
const int FEAT_EPIC_ARCANE_TRICKSTER = 4354;
|
||||
@@ -29,10 +31,124 @@ const int FEAT_EPIC_ELDRITCH_THEURGE = 23516;
|
||||
const int FEAT_EPIC_FRENZIED_BERZERKER = 5469;
|
||||
const int FEAT_EPIC_LASHER = 4086;
|
||||
const int FEAT_EPIC_OCULAR = 3425;
|
||||
const int FEAT_EPIC_RAVAGER = 2395;
|
||||
//const int FEAT_EPIC_RAVAGER = 2395; //Dupe
|
||||
const int FEAT_EPIC_RED_AVENGER = 2753;
|
||||
const int FEAT_EPIC_TEMPEST = 5470;
|
||||
const int FEAT_EPIC_UP_PRIEST = 25996;
|
||||
|
||||
const int FEAT_EPIC_EYE_OF_GRUUMSH = 25000;
|
||||
const int FEAT_EPIC_UR_PRIEST = 25001;
|
||||
const int FEAT_EPIC_ANIMA_MAGE = 25003;
|
||||
const int FEAT_EPIC_SERENE_GUARDIAN = 25004;
|
||||
const int FEAT_EPIC_SPELLFIRE_CHANNELER = 25005;
|
||||
const int FEAT_EPIC_VIRTUOSO = 25006;
|
||||
const int FEAT_EPIC_SPELLSWORD = 25007;
|
||||
const int FEAT_EPIC_AOTS = 25008;
|
||||
const int FEAT_EPIC_UNSEEN_SEER = 25009;
|
||||
const int FEAT_EPIC_CELEBRANT_OF_SHARESS = 25010;
|
||||
const int FEAT_EPIC_FORSAKER = 25011;
|
||||
const int FEAT_EPIC_KOTC = 25012;
|
||||
const int FEAT_EPIC_HATHRAN = 25013;
|
||||
const int FEAT_EPIC_ISFM = 25014;
|
||||
const int FEAT_EPIC_STORMLORD = 25015;
|
||||
const int FEAT_EPIC_HEARTWARDER = 25016;
|
||||
const int FEAT_EPIC_FIST_RAZIEL = 25017;
|
||||
const int FEAT_EPIC_VASSAL = 25018;
|
||||
const int FEAT_EPIC_SUBLIME_CHORD = 25019;
|
||||
const int FEAT_EPIC_ARCANE_DUELIST = 25020;
|
||||
const int FEAT_EPIC_WILD_MAGE = 25021;
|
||||
const int FEAT_EPIC_SHADOWSMITH = 25022;
|
||||
const int FEAT_EPIC_OOZEMASTER = 25023;
|
||||
const int FEAT_EPIC_KOTW = 25024;
|
||||
const int FEAT_EPIC_DROW_JUDICATOR = 25025;
|
||||
const int FEAT_EPIC_SHADOWBANE_INQUISITOR = 25026;
|
||||
const int FEAT_EPIC_SHADOWBANE_STALKER = 25027;
|
||||
const int FEAT_EPIC_UMBRAL_DISCIPLE = 25028;
|
||||
const int FEAT_EPIC_ALIENIST = 25029;
|
||||
const int FEAT_EPIC_BLACK_BLOOD_CULTIST = 25030;
|
||||
const int FEAT_EPIC_FOCHLUCAN_LYRIST = 25031;
|
||||
const int FEAT_EPIC_SPINEMELD_WARRIOR = 25032;
|
||||
const int FEAT_EPIC_NIGHTSHADE = 25033;
|
||||
const int FEAT_EPIC_SHADOW_ADEPT = 25034;
|
||||
const int FEAT_EPIC_SOLDIER_OF_LIGHT = 25035;
|
||||
const int FEAT_EPIC_SAPPHIRE_HIERARCH = 25036;
|
||||
const int FEAT_EPIC_BONDED_SUMMONER = 25037;
|
||||
const int FEAT_EPIC_IODM = 25038;
|
||||
const int FEAT_EPIC_BATTLEGUARD_OF_TEMPUS = 25039;
|
||||
const int FEAT_EPIC_BLADESINGER = 25040;
|
||||
const int FEAT_EPIC_SOULCASTER = 25041;
|
||||
const int FEAT_EPIC_SACRED_FIST = 25042;
|
||||
const int FEAT_EPIC_LEGENDARY_DREADNOUGHT = 25043;
|
||||
const int FEAT_EPIC_DISCIPLE_OF_BAALZEBUL = 25044;
|
||||
const int FEAT_EPIC_MIGHTY_CONTENDER_OF_KORD = 25045;
|
||||
const int FEAT_EPIC_IAIJUTSU_MASTER = 25046;
|
||||
const int FEAT_EPIC_DISCIPLE_OF_DISPATER = 25047;
|
||||
const int FEAT_EPIC_RAVAGER = 25048;
|
||||
const int FEAT_EPIC_RUNESCARRED_BERZERKER = 25049;
|
||||
const int FEAT_EPIC_TALONTAR_BLIGHTLORD = 25050;
|
||||
const int FEAT_EPIC_CHILD_OF_NIGHT = 25051;
|
||||
const int FEAT_EPIC_MASTER_OF_SHADOW = 25052;
|
||||
const int FEAT_EPIC_NOCTUMANCER = 25053;
|
||||
const int FEAT_EPIC_TOTEM_RAGER = 25054;
|
||||
const int FEAT_EPIC_SHADOWBLADE = 25055;
|
||||
const int FEAT_EPIC_DRAGON_SHAMAN = 25056;
|
||||
const int FEAT_EPIC_DRAGONFIRE_ADEPT = 25057;
|
||||
const int FEAT_EPIC_RED_WIZARD = 25058;
|
||||
const int FEAT_EPIC_TRUE_NECRO = 25059;
|
||||
const int FEAT_EPIC_BLOOD_MAGUS = 25060;
|
||||
const int FEAT_EPIC_DIABOLIST = 25061;
|
||||
const int FEAT_EPIC_INCANDESCENT_CHAMPION = 25062;
|
||||
const int FEAT_EPIC_JOWAW = 25063;
|
||||
const int FEAT_EPIC_ACOLYTE_EGO = 25064;
|
||||
const int FEAT_EPIC_PEERLESS_ARCHER = 25065;
|
||||
const int FEAT_EPIC_THRALL_OF_ORCUS = 25066;
|
||||
const int FEAT_EPIC_BFZ = 25067;
|
||||
const int FEAT_EPIC_KOTMC = 25068;
|
||||
const int FEAT_EPIC_SPIRIT_SHAMAN = 25069;
|
||||
const int FEAT_EPIC_HOSPITALER = 25070;
|
||||
const int FEAT_EPIC_MOS = 25071;
|
||||
const int FEAT_EPIC_MASTER_HARPER = 25072;
|
||||
const int FEAT_EPIC_FOE_HUNTER = 25073;
|
||||
const int FEAT_EPIC_THRALL_OF_GRAZZT = 25074;
|
||||
const int FEAT_EPIC_ELDRITCH_DISCIPLE = 25075;
|
||||
const int FEAT_EPIC_GHOST_FACED_KILLER = 25076;
|
||||
const int FEAT_EPIC_ULTIMATE_MAGUS = 25077;
|
||||
const int FEAT_EPIC_FOREST_MASTER = 25078;
|
||||
const int FEAT_EPIC_JADE_PHOENIX_MAGE = 25079;
|
||||
const int FEAT_EPIC_RUBY_KNIGHT_VINDICATOR = 25080;
|
||||
const int FEAT_EPIC_ETERNAL_BLADE = 25081;
|
||||
const int FEAT_EPIC_SHADOW_SUN_NINJA = 25082;
|
||||
const int FEAT_EPIC_WITCHBORN_BINDER = 25083;
|
||||
const int FEAT_EPIC_DISCIPLE_MEPHISTO = 25084;
|
||||
const int FEAT_EPIC_SOUL_EATER = 25085;
|
||||
const int FEAT_EPIC_HENSHIN_MYSTIC = 25086;
|
||||
const int FEAT_EPIC_DRUNKEN_MASTER = 25087;
|
||||
const int FEAT_EPIC_ENLIGHTENED_FIST = 25088;
|
||||
//const int FEAT_EPIC_MORNINGLORD = 25089; //Dupe
|
||||
const int FEAT_EPIC_PYROKINETICIST = 25090;
|
||||
const int FEAT_EPIC_SHADOWMIND = 25091;
|
||||
const int FEAT_EPIC_PSYCHIC_THEURGE = 25092;
|
||||
const int FEAT_EPIC_CEREBREMANCER = 25093;
|
||||
const int FEAT_EPIC_THRALLHERD = 25094;
|
||||
const int FEAT_EPIC_FIST_OF_ZOUKEN = 25095;
|
||||
const int FEAT_EPIC_CONTEMPLATIVE = 25096;
|
||||
const int FEAT_EPIC_RUNECASTER = 25097;
|
||||
const int FEAT_EPIC_WARCHIEF = 25098;
|
||||
const int FEAT_EPIC_WAR_MIND = 25099;
|
||||
const int FEAT_EPIC_IRON_MIND = 25100;
|
||||
const int FEAT_EPIC_SLAYER_OF_DOMIEL = 25101;
|
||||
const int FEAT_EPIC_DISCIPLE_OF_ASMODEUS = 25102;
|
||||
const int FEAT_EPIC_SUEL_ARCHANAMACH = 25103;
|
||||
const int FEAT_EPIC_SKULLCLAN_HUNTER = 25104;
|
||||
const int FEAT_EPIC_MASTER_ALCHEMIST = 25105;
|
||||
const int FEAT_EPIC_BRIMSTONE_SPEAKER = 25106;
|
||||
const int FEAT_EPIC_HOTWM = 25108;
|
||||
const int FEAT_EPIC_TALON_OF_TIAMAT = 25109;
|
||||
const int FEAT_EPIC_FROST_MAGE = 25110;
|
||||
const int FEAT_EPIC_BLIGHTER = 25111;
|
||||
const int FEAT_EPIC_RAGE_MAGE = 25112;
|
||||
const int FEAT_EPIC_DRAGONHEART_MAGE = 25113;
|
||||
const int FEAT_EPIC_SWIFT_WING = 25114;
|
||||
const int FEAT_EPIC_DIAMOND_DRAGON = 25115;
|
||||
|
||||
//:: Web Enhancement Feats
|
||||
const int FEAT_CHARMING_THE_ARROW = 25997;
|
||||
|
@@ -1233,7 +1233,7 @@ void DazzlingIllusion(object oCaster, int nSchool)
|
||||
{
|
||||
if(!GetIsFriend(oTarget, oCaster) && !PRCGetHasEffect(EFFECT_TYPE_BLINDNESS, oTarget))
|
||||
{
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, 6.0);
|
||||
DelayCommand(0.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, 6.0));
|
||||
}
|
||||
//Select the next target within the spell shape.
|
||||
oTarget = MyNextObjectInShape(SHAPE_SPHERE, FeetToMeters(30.0), lTarget, TRUE, OBJECT_TYPE_CREATURE);
|
||||
@@ -1293,13 +1293,22 @@ void InsightfulDivination(object oCaster, int nSchool, int nSpellLevel)
|
||||
|
||||
void TougheningTransmutation(object oCaster, int nSchool)
|
||||
{
|
||||
if (DEBUG) DoDebug("Toughening Transmutation called");
|
||||
|
||||
if(GetHasFeat(FEAT_TOUGHENING_TRANSMUTATION, oCaster))
|
||||
{
|
||||
if(nSchool == SPELL_SCHOOL_TRANSMUTATION)
|
||||
{
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectDamageReduction(5, DAMAGE_POWER_PLUS_ONE), oCaster, 6.0);
|
||||
effect eDR = EffectDamageReduction(5, DAMAGE_POWER_PLUS_ONE);
|
||||
|
||||
if (DEBUG) DoDebug("School Detected: " + IntToString(nSchool));
|
||||
DelayCommand(0.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDR, oCaster, 7.0));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (DEBUG) DoDebug("You do not have the Toughening Transmutation feat.");
|
||||
}
|
||||
}
|
||||
|
||||
void CloudyConjuration(object oCaster, int nSchool, object oSpellCastItem)
|
||||
@@ -1308,7 +1317,8 @@ void CloudyConjuration(object oCaster, int nSchool, object oSpellCastItem)
|
||||
{
|
||||
if(nSchool == SPELL_SCHOOL_CONJURATION)
|
||||
{
|
||||
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, EffectAreaOfEffect(VFX_MOB_CLOUDY_CONJURATION), PRCGetSpellTargetLocation(), 6.0);
|
||||
effect eAOE = EffectAreaOfEffect(VFX_MOB_CLOUDY_CONJURATION);
|
||||
DelayCommand(0.0, ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eAOE, PRCGetSpellTargetLocation(), 6.0));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3225,4 +3235,4 @@ int X2PreSpellCastCode2()
|
||||
|
||||
|
||||
// Test main
|
||||
//:: void main(){}
|
||||
//::void main(){}
|
Reference in New Issue
Block a user