PRC8/nwn/nwnprc/trunk/smp/phs_s_consecrat.nss
Jaysyn904 6ec137a24e Updated AMS marker feats
Updated AMS marker feats.  Removed arcane & divine marker feats.  Updated Dread Necromancer for epic progression. Updated weapon baseitem models.  Updated new weapons for crafting & npc equip.
 Updated prefix.  Updated release archive.
2024-02-11 14:01:05 -05:00

93 lines
3.2 KiB
Plaintext

/*:://////////////////////////////////////////////
//:: Spell Name Consecrate
//:: Spell FileName PHS_S_Consecrat
//:://////////////////////////////////////////////
//:: In Game Spell desctiption
//:://////////////////////////////////////////////
Evocation [Good]
Level: Clr 2
Components: V, S, M, DF
Casting Time: 1 standard action
Range: Close (8M)
Area: 6.67-M.-radius emanation
Duration: 2 hours/level
Saving Throw: None
Spell Resistance: No
This spell blesses an area with positive energy. Each Charisma check made to
turn undead within this area gains a +3 sacred bonus. Every undead creature
entering a consecrated area suffers minor disruption, giving it a -1 penalty
on attack rolls, damage rolls, and saves. Undead cannot be created within or
summoned into a consecrated area.
Consecrate counters and dispels desecrate.
Material Component: A vial of holy water and 25 gp worth (5 pounds) of silver
dust, all of which must be sprinkled around the area.
//:://////////////////////////////////////////////
//:: Spell Effects Applied / Notes
//:://////////////////////////////////////////////
It removes the "alter or thingy to thier god for bonuses" and stuff, 'cause
it is too complicated otherwise (and utterly pointless in most cases).
Oh, in here, if there is a desecrate AOE within the range of 6.67M of the
target location, we apply the VFX impact, and just destroy it (or them).
Effects applied OnEnter, and removed OnExit.
//:://////////////////////////////////////////////
//:: Created By: Jasperre
//::////////////////////////////////////////////*/
#include "PHS_INC_SPELLS"
void main()
{
// Spell hook check.
if(!PHS_SpellHookCheck(PHS_SPELL_CONSECRATE)) return;
// Declare major variables
location lTarget = GetSpellTargetLocation();
int nCasterLevel = PHS_GetCasterLevel();
int nMetaMagic = PHS_GetMetaMagicFeat();
int bStop = FALSE;
// Need holy water and silver dust. Need both!
if(!PHS_ComponentExactItemRemove(PHS_ITEM_HOLY_WATER, "Holy Water", "Consecrate")) return;
if(!PHS_ComponentExactItemRemove(PHS_ITEM_SILVER_DUST_25, "Silver Dust", "Consecrate")) return;
// Duration in hours
float fDuration = PHS_GetDuration(PHS_HOURS, nCasterLevel * 2, nMetaMagic);
// Declare effects
effect eAOE = EffectAreaOfEffect(PHS_AOE_PER_CONSECRATE);
effect eImpact = EffectVisualEffect(VFX_FNF_STRIKE_HOLY);
// Apply impact VFX
PHS_ApplyLocationVFX(lTarget, eImpact);
// Are we going to remove desecrate AOE's instead?
int nCnt = 1;
object oAOE = GetNearestObjectToLocation(OBJECT_TYPE_AREA_OF_EFFECT, lTarget, nCnt);
// Distance and validity check
while(GetIsObjectValid(oAOE) &&
GetDistanceBetweenLocations(lTarget, GetLocation(oAOE)) <= 6.67)
{
// Check for desecrate
if(GetTag(oAOE) == PHS_AOE_TAG_PER_DESECRATE)
{
// Destroy and not do anything else
DestroyObject(oAOE);
bStop = TRUE;
}
nCnt++;
oAOE = GetNearestObjectToLocation(OBJECT_TYPE_AREA_OF_EFFECT, lTarget, nCnt);
}
if(bStop != TRUE)
{
// Apply effects
PHS_ApplyLocationDuration(lTarget, eAOE, fDuration);
}
}