//:://///////////////////////////////////////////// //:: Searing Light //:: s_SearLght.nss //:: Copyright (c) 2000 Bioware Corp. //::////////////////////////////////////////////// //:: Focusing holy power like a ray of the sun, you project //:: a blast of light from your open palm. You must succeed //:: at a ranged touch attack to strike your target. A creature //:: struck by this ray of light suffers 1d8 points of damage //:: per two caster levels (maximum 5d8). Undead creatures suffer //:: 1d6 points of damage per caster level (maximum 10d6), and //:: undead creatures particularly vulnerable to sunlight, such //:: as vampires, suffer 1d8 points of damage per caster level //:: (maximum 10d8). Constructs and inanimate objects suffer only //:: 1d6 points of damage per two caster levels (maximum 5d6). //::////////////////////////////////////////////// //:: Created By: Keith Soleski //:: Created On: 02/05/2001 //::////////////////////////////////////////////// //:: VFX Pass By: Preston W, On: June 25, 2001 //:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff #include "spinc_common" #include "NW_I0_SPELLS" #include "x2_inc_spellhook" void main() { DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); /* Spellcast Hook Code Added 2003-06-23 by GeorgZ If you want to make changes to all spells, check x2_inc_spellhook.nss to find out more */ if (!X2PreSpellCastCode()) { // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell return; } // End of Spell Cast Hook //Declare major variables object oCaster = OBJECT_SELF; object oTarget = GetSpellTargetObject(); int nMetaMagic = GetMetaMagicFeat(); int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); int nCasterLevel = CasterLvl; int nDamage; int nMax; effect eDam; effect eVis = EffectVisualEffect(VFX_IMP_SUNSTRIKE); effect eRay = EffectBeam(VFX_BEAM_HOLY, OBJECT_SELF, BODY_NODE_HAND); CasterLvl +=SPGetPenetr(); if(!GetIsReactionTypeFriendly(oTarget)) { //Fire cast spell at event for the specified target SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_SEARING_LIGHT)); eRay = EffectBeam(VFX_BEAM_HOLY, OBJECT_SELF, BODY_NODE_HAND); //Make an SR Check if (!MyPRCResistSpell(oCaster, oTarget,CasterLvl)) { //Limit caster level if (nCasterLevel > 10) { nCasterLevel = 10; } //Check for racial type undead if (MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD) { nDamage = d6(nCasterLevel); nMax = 6; } //Check for racial type construct else if (MyPRCGetRacialType(oTarget) == RACIAL_TYPE_CONSTRUCT) { nCasterLevel /= 2; if(nCasterLevel == 0) { nCasterLevel = 1; } nDamage = d6(nCasterLevel); nMax = 6; } else { nCasterLevel = nCasterLevel/2; if(nCasterLevel == 0) { nCasterLevel = 1; } nDamage = d8(nCasterLevel); nMax = 8; } //Make metamagic checks if (CheckMetaMagic(nMetaMagic, METAMAGIC_MAXIMIZE)) { nDamage = nMax * nCasterLevel; } if (CheckMetaMagic(nMetaMagic, METAMAGIC_EMPOWER)) { nDamage = nDamage + (nDamage/2); } //Set the damage effect eDam = EffectDamage(nDamage, DAMAGE_TYPE_DIVINE); //Apply the damage effect and VFX impact SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); DelayCommand(0.5, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); //SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRay, oTarget, 1.0); } } SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRay, oTarget, 1.7,FALSE); DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); // Getting rid of the integer used to hold the spells spell school }