Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
104 lines
3.5 KiB
Plaintext
104 lines
3.5 KiB
Plaintext
/*
|
|
----------------
|
|
Catapsi
|
|
|
|
psi_pow_catapsi
|
|
----------------
|
|
|
|
27/3/05 by Stratovarius
|
|
*/ /** @file
|
|
|
|
Catapsi
|
|
|
|
Telepathy [Mind-Affecting]
|
|
Level: Psion/wilder 5, psychic warrior 5
|
|
Manifesting Time: 1 standard action
|
|
Range: 30 ft.
|
|
Area: 30-ft.-radius emanation centered on you
|
|
Duration: 1 round/level
|
|
Saving Throw: Will negates; see text
|
|
Power Resistance: Yes
|
|
Power Points: 9
|
|
Metapsionics: Extend
|
|
|
|
By manifesting this power, you generate psychic static, interfering with the
|
|
ability of other psionic characters to manifest their powers or use psi-like
|
|
abilities (you are not affected by your own catapsi manifestation). All
|
|
psionic activity within the area requires 4 more power points to manifest
|
|
than normal, unless a character makes a Will save each time he attempts to
|
|
manifest a power. If two or more fields of catapsi overlap, the effects are
|
|
not cumulative.
|
|
|
|
The limit on the number of power points a subject can spend on a power
|
|
remains in effect; thus, a subject may not be able to manifest its highest-
|
|
level powers. If manifesting a power would cause the manifester to exceed
|
|
his available power points or his spending limits, the manifestation fails
|
|
automatically, but no power points are expended.
|
|
*/
|
|
|
|
#include "psi_inc_psifunc"
|
|
#include "psi_inc_pwresist"
|
|
#include "psi_spellhook"
|
|
#include "prc_alterations"
|
|
|
|
void main()
|
|
{
|
|
/*
|
|
Spellcast Hook Code
|
|
Added 2004-11-02 by Stratovarius
|
|
If you want to make changes to all powers,
|
|
check psi_spellhook to find out more
|
|
|
|
*/
|
|
|
|
if (!PsiPrePowerCastCode())
|
|
{
|
|
// If code within the PrePowerCastHook (i.e. UMD) reports FALSE, do not run this spell
|
|
return;
|
|
}
|
|
|
|
// End of Spell Cast Hook
|
|
|
|
object oManifester = OBJECT_SELF;
|
|
object oTarget = PRCGetSpellTargetObject();
|
|
struct manifestation manif =
|
|
EvaluateManifestation(oManifester, oTarget,
|
|
PowerAugmentationProfile(),
|
|
METAPSIONIC_EXTEND
|
|
);
|
|
|
|
if(manif.bCanManifest)
|
|
{
|
|
int nDC = GetManifesterDC(GetAreaOfEffectCreator());
|
|
int nPen = GetPsiPenetration(GetAreaOfEffectCreator());
|
|
float fDur = RoundsToSeconds(manif.nManifesterLevel);
|
|
if(manif.bExtend) fDur *= 2;
|
|
|
|
effect eAOE = EffectAreaOfEffect(AOE_MOB_CATAPSI, "psi_pow_catapsia", "", "psi_pow_catapsib");
|
|
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eAOE, oTarget, fDur, TRUE, -1, manif.nManifesterLevel);
|
|
|
|
// Get an object reference to the newly created AoE
|
|
location lTarget = GetLocation(oTarget);
|
|
object oAoE = GetFirstObjectInShape(SHAPE_SPHERE, 1.0f, lTarget, FALSE, OBJECT_TYPE_AREA_OF_EFFECT);
|
|
while(GetIsObjectValid(oAoE))
|
|
{
|
|
// Test if we found the correct AoE
|
|
if(GetTag(oAoE) == Get2DACache("vfx_persistent", "LABEL", AOE_MOB_CATAPSI) &&
|
|
!GetLocalInt(oAoE, "PRC_Catapsi_Inited")
|
|
)
|
|
{
|
|
break;
|
|
}
|
|
// Didn't find, get next
|
|
oAoE = GetNextObjectInShape(SHAPE_SPHERE, 1.0f, lTarget, FALSE, OBJECT_TYPE_AREA_OF_EFFECT);
|
|
}
|
|
if(DEBUG) if(!GetIsObjectValid(oAoE)) DoDebug("ERROR: Can't find area of effect for Catapsi!");
|
|
|
|
// Store DC and manifester level in regards to power penetration
|
|
SetLocalInt(oAoE, "PRC_Catapsi_DC", nDC);
|
|
SetLocalInt(oAoE, "PRC_Catapsi_PowerPenetration", nPen);
|
|
|
|
SetLocalInt(oAoE, "PRC_Catapsi_Inited", TRUE);
|
|
}// end if - Successfull manifestation
|
|
}
|