mirror of
http://prc.nwn.ee:3000/Jaysyn/PRC8.git
synced 2025-12-17 09:27:16 -05:00
Initial upload.
Adding base PRC 4.19a files to repository.
This commit is contained in:
70
trunk/smp/phs_s_scorchray.nss
Normal file
70
trunk/smp/phs_s_scorchray.nss
Normal file
@@ -0,0 +1,70 @@
|
||||
/*:://////////////////////////////////////////////
|
||||
//:: 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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user