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
3.4 KiB
Plaintext
103 lines
3.4 KiB
Plaintext
/*:://////////////////////////////////////////////
|
|
//:: Spell Name Spark Shock
|
|
//:: Spell FileName XXX_S_SparkShock
|
|
//:://////////////////////////////////////////////
|
|
//:: In Game Spell desctiption
|
|
//:://////////////////////////////////////////////
|
|
Evocation (Electricity)
|
|
Level: Sor/Wiz 2
|
|
Components: V, S, M
|
|
Casting Time: 1 standard action
|
|
Range: Close (8M)
|
|
Effect: Ray
|
|
Target: One object
|
|
Duration: Instantaneous; see text
|
|
Saving Throw: Fortitude Partial
|
|
Spell Resistance: Yes
|
|
Source: Various (Josh_Kablack)
|
|
|
|
A ray of crackling sparks projects from your hand. You must succeed at a
|
|
ranged touch attack with the ray to deal damage to a target. The ray deals
|
|
1d8 points of electrical damage +1 point per caster level (maximum +20).
|
|
Additionally, any creature damaged by the ray is stunned for one round
|
|
unless it succeeds at a Fortitude save.
|
|
|
|
Material Component: A pinch of iron filings.
|
|
//:://////////////////////////////////////////////
|
|
//:: Spell Effects Applied / Notes
|
|
//:://////////////////////////////////////////////
|
|
Lightning ray to hit, do electical damage, and maybe stun on a fortitude
|
|
save against a creature.
|
|
|
|
Simple, really!
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Jasperre
|
|
//::////////////////////////////////////////////*/
|
|
|
|
#include "SMP_INC_SPELLS"
|
|
|
|
void main()
|
|
{
|
|
// Spell Hook Check.
|
|
if(!SMP_SpellHookCheck(SMP_SPELL_SPARK_SHOCK)) return;
|
|
|
|
// Declare major variables
|
|
object oCaster = OBJECT_SELF;
|
|
object oTarget = GetSpellTargetObject();
|
|
int nCasterLevel = SMP_GetCasterLevel();
|
|
int nMetaMagic = SMP_GetMetaMagicFeat();
|
|
int nSpellSaveDC = SMP_GetSpellSaveDC();
|
|
// Touch attack
|
|
int nTouch = SMP_SpellTouchAttack(SMP_TOUCH_RAY, oTarget, TRUE);
|
|
// 1d8 + Up to +20 more, per caster level.
|
|
int nExtra = SMP_LimitInteger(nCasterLevel, 20);
|
|
|
|
// Damage is 1d8 + nExtra
|
|
int nDam = SMP_MaximizeOrEmpower(8, 1, nMetaMagic, nExtra);
|
|
|
|
// Get the duration of the stun - 1 round
|
|
float fDuration = SMP_GetDuration(SMP_ROUNDS, 1, nMetaMagic);
|
|
|
|
// Delcare effects
|
|
effect eVis = EffectVisualEffect(VFX_IMP_LIGHTNING_M);
|
|
|
|
// Declare Stun Effects
|
|
effect eStunVis = EffectVisualEffect(VFX_IMP_STUN);
|
|
effect eStun = EffectStunned();
|
|
effect eDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED);
|
|
// Link effects
|
|
effect eLink = EffectLinkEffects(eDur, eStun);
|
|
|
|
// Signal event
|
|
SMP_SignalSpellCastAt(oTarget, SMP_SPELL_SPARK_SHOCK);
|
|
|
|
// Do ray hit/miss
|
|
SMP_ApplyTouchBeam(oTarget, VFX_BEAM_LIGHTNING, nTouch);
|
|
|
|
// Touch attack
|
|
if(nTouch)
|
|
{
|
|
// PvP check
|
|
if(!GetIsReactionTypeFriendly(oTarget))
|
|
{
|
|
// Resistance
|
|
if(!SMP_SpellResistanceCheck(oCaster, oTarget))
|
|
{
|
|
// Apply effects
|
|
SMP_ApplyDamageVFXToObject(oTarget, eVis, nDam, DAMAGE_TYPE_ELECTRICAL);
|
|
|
|
// Creature needed
|
|
if(GetObjectType(oTarget) == OBJECT_TYPE_CREATURE)
|
|
{
|
|
// Fortitude save negates
|
|
if(!SMP_SavingThrow(SAVING_THROW_FORT, oTarget, nSpellSaveDC, SAVING_THROW_TYPE_ELECTRICITY))
|
|
{
|
|
// Do the stun for 1 round
|
|
SMP_ApplyDurationAndVFX(oTarget, eStunVis, eLink, fDuration);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|