Initial upload.
Adding base PRC 4.19a files to repository.
This commit is contained in:
98
trunk/epicspellscripts/ss_ep_godsmite.nss
Normal file
98
trunk/epicspellscripts/ss_ep_godsmite.nss
Normal file
@@ -0,0 +1,98 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: Epic Spell: Godsmite
|
||||
//:: Author: Boneshank (Don Armstrong)
|
||||
|
||||
#include "prc_alterations"
|
||||
//#include "x2_inc_spellhook"
|
||||
#include "inc_epicspells"
|
||||
#include "x0_i0_position"
|
||||
|
||||
void main()
|
||||
{
|
||||
if (!X2PreSpellCastCode()) return;
|
||||
|
||||
PRCSetSchool(SPELL_SCHOOL_EVOCATION);
|
||||
|
||||
object oCaster = OBJECT_SELF;
|
||||
if(GetCanCastSpell(oCaster, SPELL_EPIC_GODSMIT))
|
||||
{
|
||||
//Declare major variables
|
||||
object oTarget = PRCGetSpellTargetObject();
|
||||
int nSpellPower = GetTotalCastingLevel(oCaster);
|
||||
|
||||
int nDam, iCAling, iTAling;
|
||||
object oArea = GetArea(oTarget);
|
||||
location lTarget;
|
||||
|
||||
// if this option has been enabled, the caster will take backlash damage
|
||||
if(GetPRCSwitch(PRC_EPIC_BACKLASH_DAMAGE))
|
||||
{
|
||||
effect eCast = EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_HOLY);
|
||||
int nDamage = d4(nSpellPower);
|
||||
effect eDam = EffectDamage(nDamage, DAMAGE_TYPE_DIVINE);
|
||||
DelayCommand(3.0, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eCast, oCaster));
|
||||
DelayCommand(3.0, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oCaster));
|
||||
}
|
||||
|
||||
//Fire cast spell at event for the specified target
|
||||
SignalEvent(oTarget, EventSpellCastAt(oCaster, PRCGetSpellId()));
|
||||
//Roll damage
|
||||
|
||||
iCAling = GetAlignmentGoodEvil(oCaster);
|
||||
iTAling = GetAlignmentGoodEvil(oTarget);
|
||||
|
||||
if(iCAling == iTAling)
|
||||
nDam = d4(nSpellPower);
|
||||
else if(iCAling == ALIGNMENT_NEUTRAL || iTAling == ALIGNMENT_NEUTRAL)
|
||||
nDam = d6(nSpellPower);
|
||||
else
|
||||
nDam = d8(nSpellPower);
|
||||
|
||||
iCAling = GetAlignmentLawChaos(oCaster);
|
||||
iTAling = GetAlignmentLawChaos(oTarget);
|
||||
|
||||
if(iCAling == iTAling)
|
||||
nDam += d4(nSpellPower);
|
||||
else if(iCAling == ALIGNMENT_NEUTRAL || iTAling == ALIGNMENT_NEUTRAL)
|
||||
nDam += d6(nSpellPower);
|
||||
else
|
||||
nDam += d8(nSpellPower);
|
||||
|
||||
//Set damage effect
|
||||
|
||||
if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, GetEpicSpellSaveDC(oCaster, oTarget), SAVING_THROW_TYPE_SPELL, oCaster))
|
||||
{
|
||||
nDam /=2;
|
||||
// This script does nothing if it has Mettle, bail
|
||||
if(GetHasMettle(oTarget, SAVING_THROW_FORT))
|
||||
nDam = 0;
|
||||
}
|
||||
|
||||
effect eDam = EffectDamage(nDam, DAMAGE_TYPE_DIVINE, DAMAGE_POWER_PLUS_TWENTY);
|
||||
lTarget = GetRandomLocation(oArea, oTarget, 4.0);
|
||||
DelayCommand(0.4, ApplyEffectAtLocation (DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_LIGHTNING_M), lTarget));
|
||||
lTarget = GetRandomLocation(oArea, oTarget, 3.5);
|
||||
DelayCommand(0.8, ApplyEffectAtLocation (DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_LIGHTNING_M), lTarget));
|
||||
lTarget = GetRandomLocation(oArea, oTarget, 3.0);
|
||||
DelayCommand(1.2, ApplyEffectAtLocation (DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_LIGHTNING_M), lTarget));
|
||||
lTarget = GetRandomLocation(oArea, oTarget, 2.5);
|
||||
DelayCommand(1.6, ApplyEffectAtLocation (DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_LIGHTNING_M), lTarget));
|
||||
lTarget = GetRandomLocation(oArea, oTarget, 2.0);
|
||||
DelayCommand(2.0, ApplyEffectAtLocation (DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_LIGHTNING_M), lTarget));
|
||||
lTarget = GetRandomLocation(oArea, oTarget, 1.5);
|
||||
DelayCommand(2.4, ApplyEffectAtLocation (DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_LIGHTNING_M), lTarget));
|
||||
lTarget = GetRandomLocation(oArea, oTarget, 1.0);
|
||||
DelayCommand(2.7, ApplyEffectAtLocation (DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_LIGHTNING_M), lTarget));
|
||||
lTarget = GetRandomLocation(oArea, oTarget, 0.5);
|
||||
DelayCommand(3.0, ApplyEffectAtLocation (DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_LIGHTNING_M), lTarget));
|
||||
ApplyEffectAtLocation (DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), GetLocation(oTarget));
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_DUR_BIGBYS_INTERPOSING_HAND), oTarget, 0.75, TRUE, -1, nSpellPower);
|
||||
DelayCommand(0.75, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_DUR_BIGBYS_GRASPING_HAND), oTarget, 1.0, TRUE, -1, nSpellPower));
|
||||
DelayCommand(1.75, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_DUR_BIGBYS_CLENCHED_FIST), oTarget, 0.75, TRUE, -1, nSpellPower));
|
||||
DelayCommand(2.5, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_DUR_BIGBYS_CRUSHING_HAND), oTarget, 1.0, TRUE, -1, nSpellPower));
|
||||
DelayCommand(3.0, SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_HIT_DIVINE), oTarget));
|
||||
DelayCommand(3.0, SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM), oTarget));
|
||||
DelayCommand(3.1, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
|
||||
}
|
||||
PRCSetSchool();
|
||||
}
|
Reference in New Issue
Block a user