Further file organization
Further file organization
This commit is contained in:
58
nwn/nwnprc/trunk/spells/sp_sonic_shld.nss
Normal file
58
nwn/nwnprc/trunk/spells/sp_sonic_shld.nss
Normal file
@@ -0,0 +1,58 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: Name Sonic Shield
|
||||
//:: FileName sp_sonic_shld.nss
|
||||
//:://////////////////////////////////////////////
|
||||
/**@file Sonic Shield
|
||||
Evocation
|
||||
Level: Bard 3, duskblade 5, sorcerer/wizard 5
|
||||
Components: V,S
|
||||
Casting Time: 1 standard action
|
||||
Range: Personal
|
||||
Target: You
|
||||
Duration: 1 round/level
|
||||
|
||||
This spell grants you a +4 deflection bonus to AC.
|
||||
In addition, anyone who successfully hits you with
|
||||
a melee attack takes 1d8 points of sonic damage
|
||||
and must make a Fortitude saving throw or be
|
||||
knocked 5 feet away from you into an unoccupied
|
||||
space of your choice. If no space of sufficient
|
||||
size is available for it to enter, it instead
|
||||
takes an extra 1d8 points of sonic damage.
|
||||
**/
|
||||
#include "prc_inc_spells"
|
||||
|
||||
void main()
|
||||
{
|
||||
if(!X2PreSpellCastCode()) return;
|
||||
|
||||
PRCSetSchool(SPELL_SCHOOL_EVOCATION);
|
||||
|
||||
object oPC = OBJECT_SELF;
|
||||
int nCasterLvl = PRCGetCasterLevel(oPC);
|
||||
int nMetaMagic = PRCGetMetaMagicFeat();
|
||||
float fDur = RoundsToSeconds(nCasterLvl);
|
||||
if(nMetaMagic & METAMAGIC_EXTEND)
|
||||
fDur += fDur;
|
||||
|
||||
PRCSignalSpellEvent(oPC, FALSE, SPELL_SONIC_SHIELD, oPC);
|
||||
|
||||
PRCRemoveEffectsFromSpell(oPC, SPELL_SONIC_SHIELD);
|
||||
|
||||
effect eLink = EffectDamageShield(0, DAMAGE_BONUS_1d8, DAMAGE_TYPE_SONIC);
|
||||
eLink = EffectLinkEffects(eLink, EffectACIncrease(4, AC_DEFLECTION_BONUS));
|
||||
eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_PROTECTION_ENERGY_SONIC));
|
||||
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oPC, fDur);
|
||||
|
||||
object oArmor = GetItemInSlot(INVENTORY_SLOT_CHEST, oPC);
|
||||
if(!GetIsObjectValid(oArmor))
|
||||
oArmor = GetItemInSlot(INVENTORY_SLOT_CARMOUR, oPC);
|
||||
itemproperty ipOnHit = ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1);
|
||||
IPSafeAddItemProperty(oArmor, ipOnHit, fDur);
|
||||
|
||||
//Add event script
|
||||
AddEventScript(oArmor, EVENT_ITEM_ONHIT, "prc_evnt_snshld", TRUE, FALSE);
|
||||
|
||||
PRCSetSchool();
|
||||
}
|
Reference in New Issue
Block a user