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

110 lines
3.7 KiB
Plaintext

/*:://////////////////////////////////////////////
//:: Spell Name Holy Sword
//:: Spell FileName
//:://////////////////////////////////////////////
//:: In Game Spell desctiption
//:://////////////////////////////////////////////
Evocation [Good]
Level: Pal 4
Components: V, S
Casting Time: 1 standard action
Range: Touch
Target: Melee weapon touched in hand
Duration: 1 round/level
Saving Throw: None
Spell Resistance: No
This spell allows you to channel holy power into your sword, or any other
melee weapon you choose. The weapon acts as a holy weapon (+3 enhancement
bonus on attack and damage rolls, extra 2d6 damage against evil opponents,
25% chance to dispel magic On hit).
It also emits a magic circle against evil effect (as the spell). The spell
is automatically canceled after the weapon leaves your hand. You cannot have
more than one holy sword at a time.
This spell is not cumulative with bless weapon or any other spell that might
modify the weapon in any way. This spell does not work on artifacts.
//:://////////////////////////////////////////////
//:: Spell Effects Applied / Notes
//:://////////////////////////////////////////////
We target the first melee weapon without a On Hit property equipped.
This is similar to Biowares, except it adds a Magic circle Against Evil
The Magic Circle against Evil will be added as soon as the spell and AOe
entries are!
The difference of this is that if the spell is removed, the holy sword
property is too.
//:://////////////////////////////////////////////
//:: Created By: Jasperre
//::////////////////////////////////////////////*/
#include "PHS_INC_SPELLS"
#include "prc_x2_itemprop"
void main()
{
// Spell Hook Check.
if(!PHS_SpellHookCheck(PHS_SPELL_HOLY_SWORD)) return;
// Declare Major Variables
object oCaster = OBJECT_SELF;
object oTarget = GetSpellTargetObject(); // Should be only OBJECT_SELF.
// It auto picks the item to cast on
object oItem;
int nAmmoType = GetBaseItemType(oTarget);
int nCasterLevel = PHS_GetCasterLevel();
int nMetaMagic = PHS_GetMetaMagicFeat();
itemproperty IP_Add = ItemPropertyHolyAvenger();
// Duration is 1 round a level
float fDuration = PHS_GetDuration(PHS_ROUNDS, nCasterLevel, nMetaMagic);
// Make sure they are not immune to spells
if(PHS_TotalSpellImmunity(oTarget)) return;
// Declare effects
effect eDur;
effect eCessate = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
effect eVis = EffectVisualEffect(VFX_IMP_GOOD_HELP);
effect eMagicAura;
// Link effects
effect eLink = eCessate;
// Signal event
PHS_SignalSpellCastAt(oTarget, PHS_SPELL_HOLY_SWORD, FALSE);
// Is the item equipped
object oLefthand = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oCaster);
object oRighthand = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oCaster);
// Get the first (Righthand first), else lefthand, and make sure neither
// have it.
if(!GetItemHasItemProperty(oLefthand, ITEM_PROPERTY_HOLY_AVENGER) &&
!GetItemHasItemProperty(oRighthand, ITEM_PROPERTY_HOLY_AVENGER))
{
// Use the righthand first
if(GetIsObjectValid(oRighthand))
{
oItem = oRighthand;
}
// Else lefthand
else if(GetIsObjectValid(oLefthand))
{
oItem = oLefthand;
}
// else invalid
else
{
return;
}
}
// Enchant item and apply duration effects
PHS_ApplyDurationAndVFX(oTarget, eVis, eLink, fDuration);
IPSafeAddItemProperty(oItem, IP_Add, fDuration, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, TRUE, TRUE);
return;
}