PRC8/nwn/nwnprc/trunk/smp/phs_s_orderswrat.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

138 lines
5.2 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*:://////////////////////////////////////////////
//:: Spell Name Orders Wrath
//:: Spell FileName PHS_S_OrdersWrat
//:://////////////////////////////////////////////
//:: In Game Spell desctiption
//:://////////////////////////////////////////////
Casting Time: 1 standard action
Range: Medium (20M)
Area: Nonlawful creatures within a burst that fills a 10M. cube
Duration: Instantaneous (1 round); see text
Saving Throw: Will partial; see text
Spell Resistance: Yes
You channel lawful power to smite enemies. The power takes the form of a
three-dimensional grid of energy. Only chaotic and neutral (not lawful)
creatures are harmed by the spell.
The spell deals 1d8 points of damage per two caster levels (maximum 5d8) to
chaotic creatures (or 1d6 points of damage per caster level, maximum 10d6,
to chaotic outsiders) and causes them to be dazed for 1 round. A successful
Will save reduces the damage to half and negates the daze effect.
The spell deals only half damage to creatures who are neither chaotic nor
lawful, and they are not dazed. They can reduce the damage in half again
(down to one-quarter of the roll) with a successful Will save.
//:://////////////////////////////////////////////
//:: Spell Effects Applied / Notes
//:://////////////////////////////////////////////
Lawful = No damage
Neutral = Half damage, can quarter on a will save. Never Dazed.
Chaotic = Full damage, can half on a will save. Dazed on fail.
Divine damage.
//:://////////////////////////////////////////////
//:: Created By: Jasperre
//::////////////////////////////////////////////*/
#include "PHS_INC_SPELLS"
void main()
{
// Spell Hook Check.
if(!PHS_SpellHookCheck(PHS_SPELL_ORDERS_WRATH)) return;
// Delcare major variables.
object oCaster = OBJECT_SELF;
object oTarget;
location lTarget = GetSpellTargetLocation();
int nCasterLevel = GetCasterLevel(oCaster);
int nMetaMagic = PHS_GetMetaMagicFeat();
int nAlignment, nDam;
int nSpellSaveDC = GetSpellSaveDC();
float fDelay;
// fDuration is 1 round for daze
float fDuration = PHS_GetDuration(PHS_ROUNDS, 1, nMetaMagic);
// Delcare Effects
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
effect eVisDaze = EffectVisualEffect(VFX_IMP_DAZED_S);
effect eDaze = EffectSlow();
effect eDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED);
effect eLink = EffectLinkEffects(eDaze, eDur);
eLink = EffectLinkEffects(eLink, eVisDaze);
// how much damage dice?
// 1d8 damage/2 caster levels. We do 1d6/caster level to outsiders
int nOutsiderDice = PHS_LimitInteger(nCasterLevel, 10);
// Normal dice will be nOutsiderDice/2, or 1 per 2 caster levels.
int nNormalDice = PHS_LimitInteger(nOutsiderDice/2);
// Apply AOE visual
effect eImpact = EffectVisualEffect(PHS_VFX_FNF_ORDERS_WRATH);
PHS_ApplyLocationVFX(lTarget, eImpact);
// Loop all targets in the cube - 10x10M, put 5.0M in
oTarget = GetFirstObjectInShape(SHAPE_CUBE, 5.0, lTarget, TRUE);
while(GetIsObjectValid(oTarget))
{
// Alignment check and PvP check
nAlignment = GetAlignmentLawChaos(oTarget);
if(nAlignment != ALIGNMENT_LAWFUL && !GetIsReactionTypeFriendly(oTarget))
{
// Signal spell cast at
PHS_SignalSpellCastAt(oTarget, PHS_SPELL_ORDERS_WRATH);
// Delay
fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20;
// Get random damage
if(GetRacialType(oTarget) == RACIAL_TYPE_OUTSIDER)
{
nDam = PHS_MaximizeOrEmpower(6, nOutsiderDice, nMetaMagic);
}
else
{
nDam = PHS_MaximizeOrEmpower(8, nNormalDice, nMetaMagic);
}
// Half damage if only neutral
if(nAlignment == ALIGNMENT_NEUTRAL)
{
// Divide by 2.
nDam /= 2;
}
// Will saving throw for half damage, and no slow.
// - Lawful Saving throw.
// If we SAVE it does half damage - no slow
if(PHS_SavingThrow(SAVING_THROW_WILL, oTarget, nSpellSaveDC, SAVING_THROW_TYPE_LAW))
{
// No slow - half damage
nDam /= 2;
if(nDam > 0)
{
// Do damage and VFX
DelayCommand(fDelay, PHS_ApplyDamageVFXToObject(oTarget, eVis, nDam, DAMAGE_TYPE_DIVINE));
}
}
else
{
// Else, full damage. If not neutral, slow for 1d6 rounds
// Do damage and VFX
DelayCommand(fDelay, PHS_ApplyDamageVFXToObject(oTarget, eVis, nDam, DAMAGE_TYPE_DIVINE));
// If not alignment neutral, we apply daze as they failed the save.
if(nAlignment != ALIGNMENT_NEUTRAL)
{
// Apply daze for fDuration, and instantly!
PHS_ApplyDuration(oTarget, eLink, fDuration);
}
}
}
// Get next target
oTarget = GetNextObjectInShape(SHAPE_CUBE, 5.0, lTarget, TRUE);
}
}