forked from Jaysyn/PRC8
Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
55 lines
2.4 KiB
Plaintext
55 lines
2.4 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Disciple of Asmodeus Evil Authority
|
|
//:: prc_doa_evilauth.nss
|
|
//::///////////////////////////////////////////////
|
|
/*
|
|
All evil aligned creatures of hit dice less than the DoA
|
|
must make a will save vs 10 + class level + charisma
|
|
or be dominated for 24 hours
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Stratovarius
|
|
//:: Created On: 28.2.2006
|
|
//:://////////////////////////////////////////////
|
|
|
|
#include "prc_alterations"
|
|
#include "prc_inc_spells"
|
|
|
|
void main()
|
|
{
|
|
//Declare major variables
|
|
object oPC = OBJECT_SELF;
|
|
effect eMindVFX = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_NEGATIVE);
|
|
effect eDominate = EffectCutsceneDominated();
|
|
effect eLink;
|
|
float fRadius = FeetToMeters(50.0);
|
|
location lTarget = GetLocation(oPC);
|
|
float fDuration = HoursToSeconds(24);
|
|
int nDC = 10 + GetLevelByClass(CLASS_TYPE_DISCIPLE_OF_ASMODEUS, oPC) + GetAbilityModifier(ABILITY_CHARISMA, oPC);
|
|
|
|
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, fRadius, lTarget, TRUE, OBJECT_TYPE_CREATURE);
|
|
while(GetIsObjectValid(oTarget))
|
|
{
|
|
if(GetAlignmentGoodEvil(oTarget) == ALIGNMENT_EVIL && GetHitDice(oPC) > GetHitDice(oTarget))
|
|
{
|
|
// Let the AI know
|
|
//PRCSignalSpellEvent(oTarget, TRUE, PRCGetSpellId(), oPC);
|
|
//Make a saving throw check
|
|
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS))
|
|
{
|
|
// Extra domination immunity check - using EffectCutsceneDominated(), which normally bypasses
|
|
if(!GetIsImmune(oTarget, IMMUNITY_TYPE_DOMINATE) && !GetIsImmune(oTarget, IMMUNITY_TYPE_MIND_SPELLS))
|
|
{
|
|
// Determine effect and apply it
|
|
eLink = EffectLinkEffects(eMindVFX, PRCGetScaledEffect(eDominate, oTarget));
|
|
DelayCommand(1.0, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDuration, TRUE, PRCGetSpellId(), PRCGetCasterLevel(oPC)));
|
|
if(DEBUG) DoDebug("prc_doa_evilauth - Duration is " + FloatToString(fDuration));
|
|
}
|
|
}// end if - Save
|
|
}
|
|
|
|
//Select the next target within the spell shape.
|
|
oTarget = MyNextObjectInShape(SHAPE_SPHERE, fRadius, lTarget, TRUE, OBJECT_TYPE_CREATURE);
|
|
}// end while - Target loop
|
|
}
|