forked from Jaysyn/PRC8
63 lines
2.3 KiB
Plaintext
63 lines
2.3 KiB
Plaintext
|
//::///////////////////////////////////////////////
|
||
|
//:: Psionic Breath Weapon feats for Diamond Dragon
|
||
|
//:: psi_diadra_bth.nss
|
||
|
//::///////////////////////////////////////////////
|
||
|
/*
|
||
|
Handles the breath weapon for the Diamond Dragon prestige class.
|
||
|
Since it acts like a power, it uses the psionics system ro handle
|
||
|
the costs, and the breath include to resolve the damage.
|
||
|
*/
|
||
|
//:://////////////////////////////////////////////
|
||
|
//:: Created By: Fox
|
||
|
//:: Created On: Nov 14, 2007
|
||
|
//:://////////////////////////////////////////////
|
||
|
|
||
|
#include "psi_inc_psifunc"
|
||
|
#include "prc_inc_spells"
|
||
|
#include "psi_inc_enrgypow"
|
||
|
#include "prc_inc_breath"
|
||
|
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
|
||
|
object oManifester = OBJECT_SELF;
|
||
|
struct manifestation manif =
|
||
|
EvaluateDiaDragChannel(oManifester, OBJECT_INVALID,
|
||
|
PowerAugmentationProfile(1,
|
||
|
1, PRC_UNLIMITED_AUGMENTATION
|
||
|
),
|
||
|
3 //Acts as a Level 3 Power in regards to PP cost
|
||
|
);
|
||
|
|
||
|
if(manif.bCanManifest)
|
||
|
{
|
||
|
struct energy_adjustments enAdj =
|
||
|
EvaluateEnergy(manif.nSpellID, POWER_DIADRAG_BREATH_COLD, POWER_DIADRAG_BREATH_ELEC,
|
||
|
POWER_DIADRAG_BREATH_FIRE, POWER_DIADRAG_BREATH_SONIC,
|
||
|
VFX_IMP_FROST_L, VFX_IMP_LIGHTNING_S, VFX_IMP_FLAME_M, VFX_IMP_SONIC);
|
||
|
|
||
|
int nDCBoost = GetLevelByClass(CLASS_TYPE_DIAMOND_DRAGON, oManifester) + enAdj.nDCMod;
|
||
|
int nNumberOfDice = 5 + manif.nTimesAugOptUsed_1;
|
||
|
location lTarget = PRCGetSpellTargetLocation();
|
||
|
|
||
|
//create the breath
|
||
|
struct breath DiamondBreath =
|
||
|
CreateBreath(oManifester, FALSE, 30.0, enAdj.nDamageType, 6, nNumberOfDice, ABILITY_INTELLIGENCE, nDCBoost, BREATH_NORMAL, 0);
|
||
|
|
||
|
//adjust for electric line
|
||
|
if(enAdj.nSaveType == SAVING_THROW_TYPE_ELECTRICITY)
|
||
|
{
|
||
|
DiamondBreath.bLine = TRUE;
|
||
|
DiamondBreath.fRange = 60.0;
|
||
|
}
|
||
|
|
||
|
if(enAdj.nSaveType == SAVING_THROW_TYPE_COLD)
|
||
|
DiamondBreath.nSaveUsed = SAVING_THROW_FORT;
|
||
|
|
||
|
//resolve the breath
|
||
|
ApplyBreath(DiamondBreath, lTarget);
|
||
|
|
||
|
}// end if - Successfull manifestation
|
||
|
}
|