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.
103 lines
2.4 KiB
Plaintext
103 lines
2.4 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Name Scorching Ray
|
|
//:: FileName sp_scorch_ray.nss
|
|
//:://////////////////////////////////////////////
|
|
/**@file Scorching Ray
|
|
Evocation [Fire]
|
|
Level: Sor/Wiz 2, Duskblade 2
|
|
Components: V, S
|
|
Casting Time: 1 standard action
|
|
Range: Close (25 ft. + 5 ft./2 levels)
|
|
Effect: One or more rays
|
|
Duration: Instantaneous
|
|
Saving Throw: None
|
|
Spell Resistance: Yes
|
|
|
|
You blast your enemies with fiery rays. You may fire
|
|
one ray, plus one additional ray for every four levels
|
|
beyond 3rd (to a maximum of three rays at 11th level).
|
|
Each ray requires a ranged touch attack to hit and deals
|
|
4d6 points of fire damage.
|
|
|
|
The rays may be fired at the same or different targets,
|
|
but all bolts must be aimed at targets within 30 feet of
|
|
each other and fired simultaneously.
|
|
|
|
**/
|
|
//::////////////////////////////////////////////////
|
|
//:: Author: Tenjac
|
|
//:: Date : 29.9.06
|
|
//::////////////////////////////////////////////////
|
|
|
|
|
|
|
|
/*
|
|
<BEGIN NOTES TO SCRIPTER - MAY BE DELETED LATER>
|
|
Modify as necessary
|
|
Most code should be put in DoSpell()
|
|
|
|
PRC_SPELL_EVENT_ATTACK is set when a
|
|
touch or ranged attack is used
|
|
<END NOTES TO SCRIPTER>
|
|
*/
|
|
#include "prc_inc_sp_tch"
|
|
#include "prc_add_spell_dc"
|
|
void main()
|
|
{
|
|
if (!X2PreSpellCastCode()) return;
|
|
PRCSetSchool(GetSpellSchool(PRCGetSpellId()));
|
|
|
|
object oCaster = OBJECT_SELF;
|
|
int nCasterLevel = PRCGetCasterLevel(oCaster);
|
|
object oTarget = PRCGetSpellTargetObject();
|
|
int nMetaMagic = PRCGetMetaMagicFeat();
|
|
int nSaveDC = PRCGetSaveDC(oTarget, oCaster);
|
|
int nPenetr = nCasterLevel + SPGetPenetr();
|
|
int nRays = 3;
|
|
int nDam;
|
|
int iAttackRoll;
|
|
|
|
PRCSignalSpellEvent(oTarget, TRUE);
|
|
|
|
if(nCasterLevel < 11)
|
|
{
|
|
nRays =2;
|
|
}
|
|
|
|
if(nCasterLevel < 7)
|
|
{
|
|
nRays = 1;
|
|
}
|
|
|
|
while(nRays > 0)
|
|
{
|
|
nRays--;
|
|
iAttackRoll = PRCDoRangedTouchAttack(oTarget);
|
|
|
|
//Beam
|
|
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBeam(VFX_BEAM_FIRE, oCaster, BODY_NODE_HAND, !iAttackRoll), oTarget, 1.0f);
|
|
|
|
if (iAttackRoll > 0)
|
|
{
|
|
if(!PRCDoResistSpell(oCaster, oTarget, nPenetr))
|
|
{
|
|
nDam = d6(4);
|
|
|
|
if(nMetaMagic & METAMAGIC_MAXIMIZE)
|
|
{
|
|
nDam = 24;
|
|
}
|
|
|
|
if(nMetaMagic & METAMAGIC_EMPOWER)
|
|
{
|
|
nDam += (nDam/2);
|
|
}
|
|
nDam += SpellDamagePerDice(oCaster, 4);
|
|
ApplyTouchAttackDamage(oCaster, oTarget, iAttackRoll, nDam, ChangedElementalDamage(oCaster, DAMAGE_TYPE_FIRE));
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
PRCSetSchool();
|
|
} |