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.
95 lines
3.2 KiB
Plaintext
95 lines
3.2 KiB
Plaintext
//::///////////////////////////////////////////////
|
||
//:: Barkskin
|
||
//:: nw_s0_barkskin.nss
|
||
//::///////////////////////////////////////////////
|
||
/*
|
||
Transmutation
|
||
Level: Drd 2, Rgr 2, Plant 2
|
||
Components: V, S, DF
|
||
Casting Time: 1 standard action
|
||
Range: Touch
|
||
Target: Living creature touched
|
||
Duration: 10 min./level
|
||
Saving Throw: None
|
||
Spell Resistance: Yes (harmless)
|
||
|
||
Barkskin toughens a creature’s skin. The effect
|
||
grants a +2 enhancement bonus to the creature’s
|
||
existing natural armor bonus. This enhancement
|
||
bonus increases by 1 for every three caster levels
|
||
above 3rd, to a maximum of +5 at caster level 12th.
|
||
|
||
The enhancement bonus provided by barkskin stacks
|
||
with the target’s natural armor bonus, but not with
|
||
other enhancement bonuses to natural armor. A
|
||
creature without natural armor has an effective
|
||
natural armor bonus of +0.
|
||
*/
|
||
//:://////////////////////////////////////////////
|
||
//:: By: Preston Watamaniuk
|
||
//:: Created: Feb 21, 2001
|
||
//:: Modified: Jun 12, 2006
|
||
//:://////////////////////////////////////////////
|
||
|
||
#include "prc_sp_func"
|
||
|
||
int DoSpell(object oCaster, object oTarget, int nCasterLevel)
|
||
{
|
||
if(!PRCGetIsAliveCreature(oTarget))
|
||
{
|
||
FloatingTextStringOnCreature("Selected target is not a living creature.", oCaster, FALSE);
|
||
return FALSE;
|
||
}
|
||
|
||
float fDuration = TurnsToSeconds(nCasterLevel) * 10;
|
||
//Enter Metamagic conditions
|
||
int nMetaMagic = PRCGetMetaMagicFeat();
|
||
if(nMetaMagic & METAMAGIC_EXTEND) //Duration is +100%
|
||
fDuration *= 2;
|
||
|
||
//Determine AC Bonus based Level.
|
||
int nBonus = (nCasterLevel / 3) + 1;
|
||
if(nBonus > 5)
|
||
nBonus = 5;
|
||
|
||
//Make sure the Armor Bonus is of type Natural
|
||
effect eLink = EffectACIncrease(nBonus, AC_NATURAL_BONUS);
|
||
eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_PROT_BARKSKIN));
|
||
eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE));
|
||
effect eHead = EffectVisualEffect(VFX_IMP_HEAD_NATURE);
|
||
|
||
//Signal spell cast at event
|
||
SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_BARKSKIN, FALSE));
|
||
|
||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDuration, TRUE, SPELL_BARKSKIN, nCasterLevel);
|
||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eHead, oTarget);
|
||
|
||
return TRUE; //return TRUE if spell charges should be decremented
|
||
}
|
||
|
||
void main()
|
||
{
|
||
if (!X2PreSpellCastCode()) return;
|
||
PRCSetSchool(SPELL_SCHOOL_TRANSMUTATION);
|
||
object oTarget = PRCGetSpellTargetObject();
|
||
int nCasterLevel = PRCGetCasterLevel();
|
||
int nEvent = GetLocalInt(OBJECT_SELF, PRC_SPELL_EVENT); //use bitwise & to extract flags
|
||
if(!nEvent) //normal cast
|
||
{
|
||
if(GetLocalInt(OBJECT_SELF, PRC_SPELL_HOLD) && OBJECT_SELF == oTarget)
|
||
{ //holding the charge, casting spell on self
|
||
SetLocalSpellVariables(OBJECT_SELF, 1); //change 1 to number of charges
|
||
return;
|
||
}
|
||
DoSpell(OBJECT_SELF, oTarget, nCasterLevel);
|
||
}
|
||
else
|
||
{
|
||
if(nEvent & PRC_SPELL_EVENT_ATTACK)
|
||
{
|
||
if(DoSpell(OBJECT_SELF, oTarget, nCasterLevel))
|
||
DecrementSpellCharges(OBJECT_SELF);
|
||
}
|
||
}
|
||
PRCSetSchool();
|
||
} |