PRC8_fork/trunk/psionics/psi_ast_con_ptch.nss

47 lines
1.6 KiB
Plaintext
Raw Normal View History

//::///////////////////////////////////////////////
//:: Astral Construct Poison Touch ability OnHit
//:: psi_ast_con_ptch
//::///////////////////////////////////////////////
/*
Fort save vs DC 10 + 0.5 * AC's HD + AC's Cha mod
On failed save, 1 Con damage
1 minute later, regardless of first save, a second
save versus same DC, on fail 1d2 Con damage
*/
//:://////////////////////////////////////////////
//:: Created By: Ornedan
//:: Created On: 23.01.2005
//:://////////////////////////////////////////////
#include "prc_inc_spells"
void DoPoison(object oTarget, object oCaster, int nDC, int nDam){
//Declare major variables
//effect eDamage = EffectAbilityDecrease(ABILITY_CONSTITUTION, nDam);
//effect eLink = EffectLinkEffects(EffectVisualEffect(VFX_IMP_POISON_S), eDamage);
// First check for poison immunity, if not, make a fort save versus spells.
if(!GetIsImmune(oTarget, IMMUNITY_TYPE_POISON) &&
!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_POISON, oCaster))
{
//Apply the poison effect and VFX impact
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_POISON_S), oTarget);
ApplyAbilityDamage(oTarget, ABILITY_CONSTITUTION, nDam, DURATION_TYPE_PERMANENT, TRUE);
}
}
void main()
{
object oCaster = OBJECT_SELF;
object oTarget = PRCGetSpellTargetObject();
int nDC = 10 + GetHitDice(oCaster) / 2 + GetAbilityModifier(ABILITY_CHARISMA, oCaster);
// Primary damage
DoPoison(oTarget, oCaster, nDC, 1);
// Secondary damage
DelayCommand(MinutesToSeconds(1), DoPoison(oTarget, oCaster, nDC, d2(1)));
}