//:://///////////////////////////////////////////// //:: [Censure Daemons] //:: [prc_s_censuredm.nss] //::////////////////////////////////////////////// //:: Evil Outsiders must make a will save versus //:: Knight level + 10 + Cha Bonus or be stunned //:: for 1 round. If HD is less than 2 x Knight Level //:: must save again or be immediately banished //::////////////////////////////////////////////// //:: Created By: Aaon Graywolf //:: Created On: Mar 17, 2004 //::////////////////////////////////////////////// int PRCCanCreatureBeDestroyed(object oTarget) { if (GetPlotFlag(oTarget) == FALSE && GetImmortal(oTarget) == FALSE) { return TRUE; } return FALSE; } #include "prc_alterations" void main() { int nLevel = GetLevelByClass(CLASS_TYPE_KNIGHT_CHALICE, OBJECT_SELF); int nCnt = 1; int nChrMod = GetAbilityModifier(ABILITY_CHARISMA); int nDC = 10 + nLevel + nChrMod; effect eImpVis = EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_HOLY); effect eStunVis = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); effect eStun = EffectStunned(); effect eCensure = EffectLinkEffects(eStun, eStunVis); effect eBanish = EffectVisualEffect(VFX_IMP_UNSUMMON); effect eLOS = EffectVisualEffect(VFX_FNF_LOS_HOLY_30); //Show the holy burst effect ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eLOS, GetLocation(OBJECT_SELF)); //Cycle through all enemy outsiders within 30 feet object oTarget = GetNearestCreature(CREATURE_TYPE_RACIAL_TYPE, RACIAL_TYPE_OUTSIDER, OBJECT_SELF, 1, PLAYER_CHAR_IS_PC, PLAYER_CHAR_NOT_PC, CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY); while(GetIsObjectValid(oTarget) && GetDistanceBetween(oTarget, OBJECT_SELF) <= FeetToMeters(30.0f)){ //Only works on evil outsiders if(GetAlignmentGoodEvil(oTarget) != ALIGNMENT_EVIL) return; ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpVis, oTarget); //First censure check to stun if(!WillSave(oTarget, nDC, SAVING_THROW_TYPE_GOOD)){ ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCensure, oTarget, RoundsToSeconds(1)); //Second check to banish weaker fiends if(GetHitDice(oTarget) < nLevel*2 && !WillSave(oTarget, nDC, SAVING_THROW_TYPE_GOOD)){ ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eBanish, GetLocation(oTarget)); if (PRCCanCreatureBeDestroyed(oTarget) == TRUE) DestroyObject(oTarget, 0.3); } } nCnt++; oTarget = GetNearestCreature(CREATURE_TYPE_RACIAL_TYPE, RACIAL_TYPE_OUTSIDER, OBJECT_SELF, nCnt, PLAYER_CHAR_IS_PC, PLAYER_CHAR_NOT_PC, CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY); } }