#include "nw_i0_spells" #include "prc_inc_spells" void main() { object oCaster = GetAreaOfEffectCreator(); int nLevel = GetHitDice(oCaster); int nDC = 10 + nLevel / 2 + GetAbilityModifier(ABILITY_CHARISMA,oCaster); if ( nLevel > 20 ) nLevel = 20; float fDuration = HoursToSeconds(nLevel); effect eCharm = EffectCharmed(); effect eImp = EffectVisualEffect(VFX_IMP_CHARM); effect eVis = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DOMINATED); effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); effect eLink = EffectLinkEffects(eCharm,eVis); eLink = EffectLinkEffects(eLink,eDur); object oTarget = GetFirstInPersistentObject(); while ( GetIsObjectValid(oTarget) ) { if ( oTarget != oCaster && GetIsEnemy(oTarget,oCaster) ) { if ( !PRCMySavingThrow(SAVING_THROW_WILL,oTarget,nDC,SAVING_THROW_TYPE_MIND_SPELLS,oCaster) ) { ApplyEffectToObject(DURATION_TYPE_INSTANT,eImp,oTarget); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eLink,oTarget,fDuration); } } oTarget = GetNextInPersistentObject(); } }