Further file organization
Further file organization
This commit is contained in:
68
nwn/nwnprc/trunk/smp/phs_s_pyrotecha.nss
Normal file
68
nwn/nwnprc/trunk/smp/phs_s_pyrotecha.nss
Normal file
@@ -0,0 +1,68 @@
|
||||
/*:://////////////////////////////////////////////
|
||||
//:: Spell Name Pyrotechnics: Smoke: On Enter
|
||||
//:: Spell FileName PHS_S_PyrotechA
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Spell Effects Applied / Notes
|
||||
//:://////////////////////////////////////////////
|
||||
Uses Darkness invisibility for the ineffective through the cloud part.
|
||||
|
||||
Defaults to fireworks. No sub-dial.
|
||||
|
||||
The impact is easy - 1d4 + 1 rounds of blindness, SR + Will negates.
|
||||
|
||||
The smoke cloud (1 round/level) applies the Darkness, and Darkness
|
||||
invisibility.
|
||||
|
||||
Every HB may apply the -4 penalties to strength and dexterity.
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: Jasperre
|
||||
//::////////////////////////////////////////////*/
|
||||
|
||||
#include "PHS_INC_SPELLS"
|
||||
|
||||
void main()
|
||||
{
|
||||
// Check AOE status
|
||||
if(!PHS_CheckAOECreator()) return;
|
||||
|
||||
// Note: Set plot flag to TRUE
|
||||
// * No dispelling
|
||||
SetPlotFlag(OBJECT_SELF, TRUE);
|
||||
|
||||
// Declare major variables
|
||||
object oTarget = GetEnteringObject();
|
||||
object oCaster = GetAreaOfEffectCreator();
|
||||
int nSpellSaveDC = PHS_GetAOESpellSaveDC();
|
||||
|
||||
// Declare major effects
|
||||
effect eBlind = EffectDarkness();
|
||||
effect eInvis = EffectInvisibility(INVISIBILITY_TYPE_DARKNESS);
|
||||
|
||||
// Link effects
|
||||
effect eLink = EffectLinkEffects(eInvis, eBlind);
|
||||
|
||||
// Also declare the -4 strength and dexterity
|
||||
effect eStrength = EffectAbilityDecrease(ABILITY_STRENGTH, 4);
|
||||
effect eDexterity = EffectAbilityDecrease(ABILITY_DEXTERITY, 4);
|
||||
effect eVis = EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE);
|
||||
|
||||
effect eAbility = EffectLinkEffects(eStrength, eDexterity);
|
||||
eAbility = EffectLinkEffects(eAbility, eVis);
|
||||
|
||||
// Fire cast spell at event for the target
|
||||
PHS_SignalSpellCastAt(oTarget, PHS_SPELL_PYROTECHNICS);
|
||||
|
||||
// Apply effects
|
||||
PHS_AOE_OnEnterEffects(eLink, oTarget, PHS_SPELL_PYROTECHNICS);
|
||||
|
||||
// Check if they have the ability decreases applied
|
||||
if(!PHS_GetHasEffectFromSpell(EFFECT_TYPE_ABILITY_DECREASE, oTarget, PHS_SPELL_PYROTECHNICS, DURATION_TYPE_PERMANENT))
|
||||
{
|
||||
// We do an Fortitude save
|
||||
if(!PHS_SavingThrow(SAVING_THROW_FORT, oTarget, nSpellSaveDC, SAVING_THROW_TYPE_NONE, oCaster))
|
||||
{
|
||||
// If failed, we apply permanently
|
||||
PHS_ApplyPermanent(oTarget, eAbility);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user