PRC8/nwn/nwnprc/trunk/smp/xxx_s_elemenarmo.nss
Jaysyn904 6ec137a24e Updated AMS marker feats
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.
2024-02-11 14:01:05 -05:00

136 lines
5.1 KiB
Plaintext

/*:://////////////////////////////////////////////
//:: Spell Name Elemental Armor
//:: Spell FileName XXX_S_ElemenArmo
//:://////////////////////////////////////////////
//:: In Game Spell desctiption
//:://////////////////////////////////////////////
Abjuration (see text)
Level: Drd 7, Clr 8
Components: V, S
Casting Time: 1 standard action
Range: Personal
Target: Caster
Duration: 10 rounds/level
Saving Throw: None
Spell Resistance: No
Source: Various (Arilou_skiff)
The caster enshrouds himself in an elemental armour, the armour can be of
either Earth, Fire, Water, or Air variety, each having different effects as
described below.
Air
The caster is surrounded by a cloudy, whispy air shield, that provides a +5
dodge bonus to AC, and 10 points of electricity and cold resistance.
Earth
The caster is surrounded by a earthly, stone shield, that provides a 10
points of acid resistance, and damage reduction 10/+3.
Fire
The caster is surrounded by a flaming hot shield, that provides a 10 points
of fire and cold resistance, and any creature striking the caster in melee
suffers 2d6 points of fire damage
Water
The caster is surrounded by a watery and wet shield, that provides a 10
points of fire and cold resistance, and +2 regeneration.
//:://////////////////////////////////////////////
//:: Spell Effects Applied / Notes
//:://////////////////////////////////////////////
- Might need to change the levels, I had to remove some parts of it.
- Might also need to lessen the amount of damage resistance - perhaps one
element each, cold for fire, electricity for air, acid for earth.
Oh, but it seems fine to add to NwN as it is above.
//:://////////////////////////////////////////////
//:: Created By: Jasperre
//::////////////////////////////////////////////*/
#include "SMP_INC_SPELLS"
void main()
{
// Spell hook check.
if(!SMP_SpellHookCheck(SMP_SPELL_ELEMENTAL_ARMOR)) return;
//Declare major variables
object oCaster = OBJECT_SELF;
object oTarget = GetSpellTargetObject();// Should be OBJECT_SELF
int nMetaMagic = SMP_GetMetaMagicFeat();
int nCasterLevel = SMP_GetCasterLevel();
int nSpellId = GetSpellId();
// Duration - 10 Rounds/level
float fDuration = SMP_GetDuration(SMP_ROUNDS, nCasterLevel * 10, nMetaMagic);
// Get the link of duration effects
effect eLink;
// Check spell
if(nSpellId == SMP_SPELL_ELEMENTAL_ARMOR_AIR)
{
// +5 dodge, 10 cold/electrical resistance.
effect eAir1 = EffectACIncrease(5, AC_DODGE_BONUS);
effect eAir2 = EffectDamageResistance(DAMAGE_TYPE_COLD, 10);
effect eAir3 = EffectDamageResistance(DAMAGE_TYPE_ELECTRICAL, 10);
effect eAir4 = EffectVisualEffect(SPELL_PROTECTION_FROM_ELEMENTS);
// Link air
eLink = EffectLinkEffects(eAir1, eAir2);
eLink = EffectLinkEffects(eLink, eAir3);
eLink = EffectLinkEffects(eLink, eAir4);
}
else if(nSpellId == SMP_SPELL_ELEMENTAL_ARMOR_EARTH)
{
// 10 acid resistance, 10/+3 DR.
effect eEarth1 = EffectDamageReduction(10, DAMAGE_POWER_PLUS_THREE);
effect eEarth2 = EffectDamageResistance(DAMAGE_TYPE_ACID, 10);
effect eEarth3 = EffectVisualEffect(SPELL_PROTECTION_FROM_ELEMENTS);
// Link earth
eLink = EffectLinkEffects(eEarth1, eEarth2);
eLink = EffectLinkEffects(eLink, eEarth3);
}
else if(nSpellId == SMP_SPELL_ELEMENTAL_ARMOR_FIRE)
{
// 10 cold/fire resistance, 2d6 fire damage on melee hits.
effect eFire1 = EffectDamageShield(0, DAMAGE_BONUS_2d6, DAMAGE_TYPE_FIRE);
effect eFire2 = EffectDamageResistance(DAMAGE_TYPE_FIRE, 10);
effect eFire3 = EffectDamageResistance(DAMAGE_TYPE_COLD, 10);
effect eFire4 = EffectVisualEffect(SPELL_PROTECTION_FROM_ELEMENTS);
// Link fire
eLink = EffectLinkEffects(eFire1, eFire2);
eLink = EffectLinkEffects(eLink, eFire3);
eLink = EffectLinkEffects(eLink, eFire4);
}
// Default to water
else // if(nSpellId == SMP_SPELL_ELEMENTAL_ARMOR_WATER)
{
// 10 cold/fire resistance, +2 regeneration
effect eWater1 = EffectRegenerate(2, 6.0);
effect eWater2 = EffectDamageResistance(DAMAGE_TYPE_FIRE, 10);
effect eWater3 = EffectDamageResistance(DAMAGE_TYPE_COLD, 10);
effect eWater4 = EffectVisualEffect(SPELL_PROTECTION_FROM_ELEMENTS);
// Link air
eLink = EffectLinkEffects(eWater1, eWater2);
eLink = EffectLinkEffects(eLink, eWater3);
eLink = EffectLinkEffects(eLink, eWater4);
}
// Oh, we add cessate here
effect eCessate = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
eLink = EffectLinkEffects(eLink, eCessate);
effect eVis = EffectVisualEffect(VFX_IMP_HEAD_NATURE);
// We don't remove previous castings except of the same spell.
SMP_RemoveSpellEffectsFromTarget(nSpellId, oTarget);
// Signal event
SMP_SignalSpellCastAt(oTarget, SMP_SPELL_ELEMENTAL_ARMOR, FALSE);
// Apply effects
SMP_ApplyDurationAndVFX(oTarget, eVis, eLink, fDuration);
}