PRC8/nwn/nwnprc/trunk/smp/phs_s_alignweap.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

98 lines
3.4 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*:://////////////////////////////////////////////
//:: Spell Name Align Weapon
//:: Spell FileName PHS_S_AlignWeap
//:://////////////////////////////////////////////
//:: In Game Spell desctiption
//:://////////////////////////////////////////////
Transmutation [see text]
Level: Clr 2
Components: V, S, DF
Casting Time: 1 standard action
Range: Touch
Target: Weapon touched
Duration: 1 min./level
Saving Throw: Will negates (harmless, object)
Spell Resistance: Yes (harmless, object)
Align weapon makes a weapon good, evil, lawful, or chaotic, as you choose.
A weapon that is aligned gains a +1 attack bonus per 5 caster levels
(maxium +3) against the chosen alignment (and can bypass that amount of
damage reduction). This spell has no effect on a weapon that grants any
form of attack bonus.
You cant cast this spell on a natural weapon, such as an unarmed strike.
When you make a weapon good, evil, lawful, or chaotic, align weapon is a
good, evil, lawful, or chaotic spell, respectively.
//:://////////////////////////////////////////////
//:: Spell Effects Applied / Notes
//:://////////////////////////////////////////////
Basically, it gives +1 attack to the weapon affected, versus the alignment
chosen. It goes up to a max of +3, every 5 levels.
Only can be used on weapons with no attack bonus at all, and cannot be cast
on ammo (as they cannot be given attack bonuses!)
//:://////////////////////////////////////////////
//:: Created By: Jasperre
//::////////////////////////////////////////////*/
#include "PHS_INC_SPELLS"
void main()
{
// Spell hook check.
if(!PHS_SpellHookCheck()) return;
// Delcare major variables
object oCaster = OBJECT_SELF;
object oTarget = GetSpellTargetObject(); // Should be an item
int nCasterLevel = PHS_GetCasterLevel();
int nSpellCast = GetSpellId();
int nAlignment;
int nMetaMagic = PHS_GetMetaMagicFeat();
// Make sure they are not immune to spells
if(PHS_TotalSpellImmunity(oTarget)) return;
// It is +1/5 levels, to a max of 3
int nBonus = PHS_LimitInteger(nCasterLevel/5, 3);
// Duration in turns (minutes)
float fDuration = PHS_GetDuration(PHS_MINUTES, nCasterLevel, nMetaMagic);
// Get the alignment to be against
if(nSpellCast == PHS_SPELL_ALIGN_WEAPON_GOOD)
{
nAlignment = IP_CONST_ALIGNMENTGROUP_GOOD;
}
else if(nSpellCast == PHS_SPELL_ALIGN_WEAPON_CHAOTIC)
{
nAlignment = IP_CONST_ALIGNMENTGROUP_CHAOTIC;
}
else if(nSpellCast == PHS_SPELL_ALIGN_WEAPON_LAWFUL)
{
nAlignment = IP_CONST_ALIGNMENTGROUP_LAWFUL;
}
// Default to evil
else // if(nSpellCast == PHS_SPELL_ALIGN_WEAPON_EVIL)
{
nAlignment = IP_CONST_ALIGNMENTGROUP_EVIL;
}
// Declare effects
itemproperty IP_Alignbonus = ItemPropertyAttackBonusVsAlign(nAlignment, nBonus);
// Declare effects
effect eCessate = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
effect eVis = EffectVisualEffect(VFX_IMP_SUPER_HEROISM);
// Apply it to the item if it doens't have an attack bonus
if(!GetItemHasItemProperty(oTarget, ITEM_PROPERTY_ATTACK_BONUS_VS_ALIGNMENT_GROUP))
{
// Apply duration effect
PHS_ApplyDurationAndVFX(oTarget, eVis, eCessate, fDuration);
// Add it to the item
AddItemProperty(DURATION_TYPE_TEMPORARY, IP_Alignbonus, oTarget, fDuration);
}
}