PRC8_fork/trunk/newspellbook/inv_dra_chilfoga.nss

38 lines
1.5 KiB
Plaintext
Raw Normal View History

//::///////////////////////////////////////////////
//:: Name Chilling Fog - OnEnter
//:: FileName inv_dra_chilfoga.nss
//::///////////////////////////////////////////////
#include "inv_inc_invfunc"
void main()
{
//Declare major variables
object oTarget = GetEnteringObject();
effect eSlow = EffectMovementSpeedDecrease(80);
effect eConceal = EffectConcealment(20, MISS_CHANCE_TYPE_VS_MELEE);
effect eConceal2 = EffectConcealment(100, MISS_CHANCE_TYPE_VS_RANGED);
effect eMiss = EffectMissChance(100, MISS_CHANCE_TYPE_VS_RANGED);
effect eHitReduce = EffectAttackDecrease(2);
effect eDamReduce = EffectDamageDecrease(2, DAMAGE_TYPE_BLUDGEONING|DAMAGE_TYPE_PIERCING|DAMAGE_TYPE_SLASHING);
int nDamage = d6(2);
effect eDamage = EffectDamage(nDamage);
effect eVis = EffectVisualEffect(VFX_IMP_FROST_S);
// Link
effect eLink = EffectLinkEffects(eConceal, eConceal2);
eLink = EffectLinkEffects(eLink, eSlow);
eLink = EffectLinkEffects(eLink, eMiss);
eLink = EffectLinkEffects(eLink, eHitReduce);
eLink = EffectLinkEffects(eLink, eDamReduce);
effect eLink2 = EffectLinkEffects(eDamage, eVis);
//Fire cast spell at event for the target
SignalEvent(oTarget, EventSpellCastAt(GetAreaOfEffectCreator(), INVOKE_CHILLING_FOG));
// Maximum time possible. If its less, its simply cleaned up when the invocation ends.
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, TurnsToSeconds(40));
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eLink2, oTarget);
}