Updated AMS marker feats. Removed arcane & divine marker feats. Updated Dread Necromancer for epic progression. Updated weapon baseitem models. Updated new weapons for crafting & npc equip. Updated prefix. Updated release archive.
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();
|
||
} |