forked from Jaysyn/PRC8
47 lines
1.6 KiB
Plaintext
47 lines
1.6 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: 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)));
|
|
} |