Further file organization
Further file organization
This commit is contained in:
64
nwn/nwnprc/trunk/scripts/prc_s_censuredm.nss
Normal file
64
nwn/nwnprc/trunk/scripts/prc_s_censuredm.nss
Normal file
@@ -0,0 +1,64 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: [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);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user