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.
65 lines
2.4 KiB
Plaintext
65 lines
2.4 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Troglodyte Stench On Enter
|
|
//:: race_stencha.nss
|
|
//:://////////////////////////////////////////////
|
|
/*
|
|
Objects entering the aura must make a fortitude saving
|
|
throw or or be sickened for 10 rounds
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: xwarren
|
|
//:: Created On: 2011-05-05
|
|
//:://////////////////////////////////////////////
|
|
|
|
#include "prc_inc_spells"
|
|
|
|
void main()
|
|
{
|
|
// Declare major variables
|
|
object oTarget = GetEnteringObject();
|
|
object oSource = GetAreaOfEffectCreator();
|
|
|
|
// Troglodytes are immune
|
|
if(GetRacialType(oTarget) == RACIAL_TYPE_TROGLODYTE
|
|
|| GetIsImmune(oTarget, IMMUNITY_TYPE_POISON))
|
|
return;
|
|
|
|
effect eSick;
|
|
|
|
if(!GetHasSpellEffect(SPELL_TROGLODYTE_STENCH, oTarget))
|
|
{
|
|
// Is the target a valid creature
|
|
if(PRCGetIsAliveCreature(oTarget)
|
|
&& !GetIsReactionTypeFriendly(oTarget, oSource))
|
|
{
|
|
// Notify the target that they are being attacked
|
|
SignalEvent(oTarget, EventSpellCastAt(oSource, SPELL_TROGLODYTE_STENCH));
|
|
|
|
// Prepare the visual effect for the casting and saving throw
|
|
effect eVis1 = EffectVisualEffect(VFX_IMP_POISON_S);
|
|
effect eVis2 = EffectVisualEffect(VFX_IMP_FORTITUDE_SAVING_THROW_USE);
|
|
effect eImmune = EffectVisualEffect(VFX_DUR_CESSATE_NEUTRAL);
|
|
eImmune = ExtraordinaryEffect(eImmune);
|
|
|
|
// Create the sickened effect
|
|
// and make it supernatural so it can be dispelled
|
|
eSick = SupernaturalEffect(EffectSickened());
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget);
|
|
|
|
// DC is constitution based
|
|
int nDC = 10 + (GetHitDice(oSource) / 2) + GetAbilityModifier(ABILITY_CONSTITUTION, oSource);
|
|
|
|
// Make a Fortitude saving throw and apply the effect if it fails
|
|
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_POISON, oSource))
|
|
{
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis1, oTarget);
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSick, oTarget, RoundsToSeconds(10));
|
|
}
|
|
else
|
|
// if save was sucessful - immune to stench for 24h.
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eImmune, oTarget, HoursToSeconds(24));
|
|
}
|
|
}
|
|
}
|