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.
71 lines
2.5 KiB
Plaintext
71 lines
2.5 KiB
Plaintext
/*:://////////////////////////////////////////////
|
|
//:: Spell Name Scorching Ray
|
|
//:: Spell FileName PHS_S_ScorchRay
|
|
//:://////////////////////////////////////////////
|
|
//:: In Game Spell desctiption
|
|
//:://////////////////////////////////////////////
|
|
Fire, close range, 1 or more rays are the effect. SR applies. No save.
|
|
Fire 1 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.
|
|
//:://////////////////////////////////////////////
|
|
//:: Spell Effects Applied / Notes
|
|
//:://////////////////////////////////////////////
|
|
The choice of "Lots of" or "Single" target is made in the spell menu choice.
|
|
|
|
One target must be targeted, however.
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Jasperre
|
|
//::////////////////////////////////////////////*/
|
|
|
|
#include "PHS_INC_SPELLS"
|
|
|
|
void main()
|
|
{
|
|
// Spell hook check
|
|
if(!PHS_SpellHookCheck(PHS_SPELL_SCORCHING_RAY)) return;
|
|
|
|
// Declare major variables
|
|
object oCaster = OBJECT_SELF;
|
|
object oTarget = GetSpellTargetObject();
|
|
int nSpellSaveDC = PHS_GetSpellSaveDC();
|
|
int nCasterLevel = PHS_GetCasterLevel();
|
|
int nMetaMagic = PHS_GetMetaMagicFeat();
|
|
int nCnt, nDam;
|
|
float fDelay;
|
|
// Needs a touch ranged attack for each ray
|
|
int nTouch;
|
|
// Get number of rays
|
|
int nRays = PHS_LimitInteger((nCasterLevel - 3)/4, 3);
|
|
|
|
// Declare effects
|
|
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
|
|
|
|
// Loop number of rays
|
|
for(nCnt = 1; nCnt <= nRays; nCnt++)
|
|
{
|
|
// Touch attack result
|
|
nTouch = PHS_SpellTouchAttack(PHS_TOUCH_RANGED, oTarget, TRUE);
|
|
// Do hit/miss of beam
|
|
DelayCommand(fDelay, PHS_ApplyTouchBeam(oTarget, VFX_BEAM_FLAME, nTouch, 0.4));
|
|
fDelay += 0.5;
|
|
|
|
// Check reaction type and if it hits
|
|
if(!GetIsReactionTypeFriendly(oTarget) && nTouch)
|
|
{
|
|
// Spell resistance and immunity check
|
|
if(!PHS_SpellResistanceCheck(oCaster, oTarget, fDelay))
|
|
{
|
|
// Get Damage to be done (for this ray)
|
|
nDam = PHS_MaximizeOrEmpower(6, 4, nMetaMagic, 0, nTouch);
|
|
|
|
// Do damage and visual after delay
|
|
DelayCommand(fDelay, PHS_ApplyDamageVFXToObject(oTarget, eVis, nDam, DAMAGE_TYPE_FIRE));
|
|
}
|
|
}
|
|
}
|
|
}
|