Initial upload.
Adding base PRC 4.19a files to repository.
This commit is contained in:
63
trunk/users/Tenjac/spells/sp_shieldward.nss
Normal file
63
trunk/users/Tenjac/spells/sp_shieldward.nss
Normal file
@@ -0,0 +1,63 @@
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Name Shield of Warding
|
||||
//:: FileName sp_shieldward.nss
|
||||
//:://////////////////////////////////////////////
|
||||
/** @file Abjuration [Good]
|
||||
Level: Paladin 2, Cleric 3,
|
||||
Components: V, S,
|
||||
Casting Time: 1 standard action
|
||||
Range: Touch
|
||||
Target: One shield or buckler touched
|
||||
Duration: 1 minute/level
|
||||
Saving Throw: Will negates (object, harmless)
|
||||
Spell Resistance: No
|
||||
|
||||
The touched shield or buckler grants its wielder a +1
|
||||
sacred bonus to Armor Class and on Reflex saves, +1 per
|
||||
five caster levels (maximum +5 at 20th level). The bonus
|
||||
applies only when the shield is worn or carried normally
|
||||
(but not, for instance, if it is slung over the shoulder).
|
||||
*/
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: Tenjac
|
||||
//:: Created On: 7/21/22
|
||||
//:://////////////////////////////////////////////
|
||||
|
||||
#include "prc_sp_func"
|
||||
#include "prc_add_spell_dc"
|
||||
|
||||
|
||||
void main()
|
||||
{
|
||||
if(!X2PreSpellCastCode()) return;
|
||||
PRCSetSchool(SPELL_SCHOOL_ABJURATION);
|
||||
object oPC = OBJECT_SELF;
|
||||
int nCasterLvl = PRCGetCasterLevel(oPC);
|
||||
float fDur = RoundsToSeconds(nCasterLvl) * 60;
|
||||
int nMetaMagic = PRCGetMetaMagicFeat();
|
||||
if(nMetaMagic & METAMAGIC_EXTEND) fDur += fDur;
|
||||
object oTarget = PRCGetSpellTargetObject();
|
||||
object oShield;
|
||||
|
||||
if GetObjectType(oTarget == OBJECT_TYPE_CREATURE) oShield = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oTarget);
|
||||
if GetObjectType(oTarget == OBJECT_TYPE_ITEM) oShield = oTarget;
|
||||
|
||||
//Check that this is a shield, if not abort
|
||||
if(GetIsShield(oShield) == FALSE)
|
||||
{
|
||||
SendMessageToPC(OBJECT_SELF, "Target has no equipped shield.");
|
||||
break;
|
||||
}
|
||||
|
||||
int nBonus = 1;
|
||||
if nCasterLvl > 4 nBonus +=1;
|
||||
if nCasterLvl > 9 nBonus +=1;
|
||||
if nCasterLvl > 14 nBonus +=1;
|
||||
if nCasterLvl > 19 nBonus +=1;
|
||||
|
||||
IPSafeAddItemProperty(oShield, ItemPropertyACBonus(nBonus), fDur);
|
||||
IPSafeAddItemProperty(oShield, ItemProperBonusSavingThrow(IP_CONST_SAVEBASETYPE_REFLEX, nBonus), fDur);
|
||||
PRCSetSchool();
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user