PRC8/nwn/nwnprc/trunk/newspellbook/inv_eldrtch_glv.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

73 lines
2.5 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Name Eldritch Glaive
//:: FileName inv_eldrtch_glv.nss
//::///////////////////////////////////////////////
/*
Least Invocation
Blast Shape
2nd Level Spell
Your eldritch blast takes on the physical form of a
glaive. If you hit with the glaive, the target is
hit as if with your eldritch blast, including any
essence applied. The glaive dissipates next round.
*/
//::///////////////////////////////////////////////
void CheckForAttack(object oPC, object oTarget, object oGlaive);
#include "prc_inc_combat"
#include "inv_inc_invfunc"
void CheckForAttack(object oPC, object oTarget, object oGlaive)
{
if (oGlaive == GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC))
{
//Set up to delete after duration ends
DestroyObject(oGlaive, 6.0f);
int nAtkBns = GetHasFeat(FEAT_ELDRITCH_SCULPTOR, oPC) ? 2 : 0;
//Schedule the attack.
DelayCommand(0.0, PerformAttackRound(oTarget, oPC, EffectVisualEffect(VFX_IMP_MAGBLUE),
0.0, nAtkBns, 0, 0, TRUE, "*Eldritch Glaive Hit*", "*Eldritch Glaive Miss*",
TRUE, TOUCH_ATTACK_MELEE, FALSE, PRC_COMBATMODE_ALLOW_TARGETSWITCH));
//Fire cast spell at event for the specified target
DelayCommand(0.0, SignalEvent(oTarget, EventSpellCastAt(oPC, INVOKE_ELDRITCH_BLAST)));
// Target is valid and we know it's an enemy and we're in combat
DelayCommand(0.25, AssignCommand(oPC, ActionAttack(oTarget)));
}
else
DelayCommand(0.1, CheckForAttack(oPC, oTarget, oGlaive));
}
void main()
{
object oPC = OBJECT_SELF;
object oTarget = PRCGetSpellTargetObject();
if (oPC == oTarget)
return;
object oGlaive = CreateItemOnObject("prc_eldrtch_glv", oPC);
/*if (PRCGetCreatureSize(oPC) == CREATURE_SIZE_SMALL)
oGlaive = CreateItemOnObject("prc_eldrtch_gls", oPC);
else
oGlaive = CreateItemOnObject("prc_eldrtch_glv", oPC);*/
//nAtkBns += GetAttackBonus(oTarget, oPC, OBJECT_INVALID, FALSE, TOUCH_ATTACK_MELEE_SPELL);
// Construct the bonuses
itemproperty ipAddon = ItemPropertyOnHitCastSpell(IP_CONST_CASTSPELL_ELDRITCH_GLAIVE_ONHIT, (GetInvokerLevel(oPC, CLASS_TYPE_WARLOCK) + 1) / 2);
AddItemProperty(DURATION_TYPE_PERMANENT, ipAddon, oGlaive);
// Force equip
ClearAllActions();
ForceEquip(oPC, oGlaive, INVENTORY_SLOT_RIGHTHAND);
// Make even more sure the glaive cannot be dropped
SetDroppableFlag(oGlaive, FALSE);
SetItemCursedFlag(oGlaive, TRUE);
CheckForAttack(oPC, oTarget, oGlaive);
}