61 lines
2.1 KiB
Plaintext
61 lines
2.1 KiB
Plaintext
/************************************
|
|
* Molecular Agitation *
|
|
* *
|
|
* Cost: 19 *
|
|
* Power Score: Wis *
|
|
* *
|
|
************************************/
|
|
|
|
#include "lib_psionic"
|
|
|
|
void MolecularAgitation(object oTarget, object oPC, int nRound, int nMult)
|
|
{
|
|
int nLevel=GetEffectivePsionicLevel(oPC, FEAT_PSIONIC_MOLECULAR_AGITATION);
|
|
int nDC=12+(nLevel>30?15:nLevel/2)+GetAbilityModifier(ABILITY_WISDOM, oPC);
|
|
int nDamage;
|
|
effect eVis=EffectVisualEffect(VFX_COM_HIT_FIRE);
|
|
effect eLink;
|
|
|
|
if(nRound==1) nDamage=nMult*nLevel/2;
|
|
else if(nRound==2) nDamage=nMult*d4(nLevel/2);
|
|
else if(nRound>=3) nDamage=nMult*d6(nLevel/2);
|
|
|
|
if (FortitudeSave(oTarget, nDC, SAVING_THROW_TYPE_FIRE, oPC))
|
|
nDamage=nDamage/2;
|
|
|
|
eLink=EffectDamage(nDamage/EFFECT_SCALING_FACTOR, DAMAGE_TYPE_FIRE);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eLink, oTarget);
|
|
|
|
if (nRound<4) DelayCommand(6.0, MolecularAgitation(oTarget, oPC, nRound+1, nMult));
|
|
else DeleteLocalInt(oTarget, "MolecAgi");
|
|
|
|
}
|
|
|
|
void main()
|
|
{
|
|
object oPC=OBJECT_SELF;
|
|
int nCost=19;
|
|
int nPowerScore=GetAbilityScore(oPC, ABILITY_WISDOM);
|
|
effect eVis=EffectVisualEffect(VFX_DUR_ELEMENTAL_SHIELD);
|
|
object oTarget=GetSpellTargetObject();
|
|
|
|
|
|
if (!PowerCheck(oPC, nCost, nPowerScore, FEAT_PSIONIC_MOLECULAR_AGITATION)) return;
|
|
|
|
if (GetLocalInt(oTarget, "MolecAgi"))
|
|
{
|
|
FloatingTextStringOnCreature("This target is already under the effects of molecular agitation.", oPC, FALSE);
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(292), oPC);
|
|
return;
|
|
}
|
|
|
|
SignalEvent(oTarget, EventSpellCastAt(oPC, SPELL_PSIONIC_MOLECULAR_AGITATION, TRUE));
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
|
SetLocalInt(oTarget, "MolecAgi", TRUE);
|
|
MolecularAgitation(oTarget, oPC, 1, GetEnhancedEffect(EFFECT_SCALING_FACTOR, SPELL_PSIONIC_MOLECULAR_AGITATION));
|
|
|
|
}
|