void main() { object oCaster = OBJECT_SELF;//get caster object oItem = GetSpellCastItem();//get item from which was spell cast int nSpellId = GetSpellId();//get spell id int nClass = GetLastSpellCastClass(); int origCasterLevel = GetCasterLevel(oCaster);//get original caster level int origDC = GetSpellSaveDC();//get original DC int origMeta = GetMetaMagicFeat();//get original metamagic feat SetLocalInt(oCaster,"SPELL_DC_OVERRIDE",0);//reset to default SetLocalInt(oCaster,"SPELL_CASTER_LEVEL_OVERRIDE",0);//reset to default if(oItem != OBJECT_INVALID && GetLocalInt(oCaster, "anc_castercheat") == FALSE) return;//if the spell was cast from item then exit because the bonuses shown here are not applicable for items int newCasterLevel = origCasterLevel; int newDC = origDC; int newMeta = origMeta; //Use the character's level if we want it to cheat if (GetLocalInt(oCaster, "anc_castercheat") == TRUE) newCasterLevel = GetHitDice(oCaster); //Add DD levels to bard or sorcerer caster level if((nClass == CLASS_TYPE_SORCERER) || (nClass == CLASS_TYPE_BARD)) { int nDDBonus = GetLevelByClass(CLASS_TYPE_DRAGON_DISCIPLE,oCaster)-5; if (nDDBonus < 0) nDDBonus = 0; newCasterLevel+= nDDBonus; } //Empower the spell if cast by an NPC allowed to do so if(GetLocalString(oCaster, "sTrait1") == "damage" || GetLocalString(oCaster, "sTrait2") == "damage") newMeta = METAMAGIC_MAXIMIZE; //Increase the caster level if the NPC is allowed to do so if(GetLocalString(oCaster, "sTrait1") == "attack" || GetLocalString(oCaster, "sTrait2") == "attack") newCasterLevel += 5; //Add to DC when cast by epic spellcasters if(newCasterLevel >= 21) newDC += 1; if(newCasterLevel >= 26) newDC += 1; if(newCasterLevel >= 31) newDC += 1; if(newCasterLevel >= 36) newDC += 1; if(newCasterLevel >= 40) newDC += 1; //Maximize spells if appropriate if (GetLocalInt(oCaster, "anc_metamax") == TRUE) newMeta = METAMAGIC_MAXIMIZE; //now when are we done, set the variables SetLocalInt(oCaster,"SPELL_DC_OVERRIDE",newDC); SetLocalInt(oCaster,"SPELL_CASTER_LEVEL_OVERRIDE",newCasterLevel); SetLocalInt(oCaster,"SPELL_METAMAGIC_OVERRIDE",newMeta); //done, the spell which is triggered right after this script ends will use these values }