Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
93 lines
2.9 KiB
Plaintext
93 lines
2.9 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Name Arrow of Bone
|
|
//:: FileName sp_arrow_of_bone.nss
|
|
//:://////////////////////////////////////////////
|
|
/**@file Arrow of Bone
|
|
Necromancy [Death]
|
|
Level: Sorcerer/wizard 7
|
|
Components: V, S, M
|
|
Range: Touch
|
|
Target: One projectile or thrown weapon touched
|
|
Duration: 1 hour/level or until discharged
|
|
Saving Throw: Fortitude partial
|
|
Spell Resistance: Yes
|
|
|
|
You complete the ritual needed to
|
|
cast the spell, scribing arcane runes into
|
|
the item. It changes before your eyes into
|
|
an identical item made of bone. The runes
|
|
glow with dark magic and the weapon feels
|
|
cold to the touch.
|
|
When thrown or fired at a creature as a
|
|
normal ranged attack, the weapon gains
|
|
a +4 enhancement bonus on attack
|
|
rolls and damage rolls. In addition, any
|
|
living creature struck by an arrow of
|
|
bone must succeed on a Fortitude save
|
|
or be instantly slain. A creature that
|
|
makes its save instead takes 3d6 points
|
|
of damage +1 point per caster level
|
|
(maximum +20). Regardless of whether
|
|
the attack hits, the magic of the arrow
|
|
of bone is discharged by the attack, and
|
|
the missile is destroyed.
|
|
|
|
Material Component: A tiny sliver
|
|
of bone and an oil of magic weapon
|
|
|
|
Author: Tenjac
|
|
Created: 6/28/07
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:://////////////////////////////////////////////
|
|
|
|
#include "prc_inc_spells"
|
|
#include "prc_add_spell_dc"
|
|
|
|
void main()
|
|
{
|
|
PRCSetSchool(SPELL_SCHOOL_NECROMANCY);
|
|
|
|
if(!X2PreSpellCastCode()) return;
|
|
|
|
object oPC = OBJECT_SELF;
|
|
object oStack = PRCGetSpellTargetObject();
|
|
string sBone;
|
|
int nType = GetBaseItemType(oStack);
|
|
int nCasterLevel = PRCGetCasterLevel(oPC);
|
|
|
|
|
|
if(nType == BASE_ITEM_ARROW) sBone = "PRC_AB_ARROW001";
|
|
|
|
else if (nType == BASE_ITEM_BOLT) sBone = "PRC_AB_BOLT";
|
|
|
|
else if (nType == BASE_ITEM_BULLET) sBone = "PRC_AB_BULLET";
|
|
|
|
else if (nType == BASE_ITEM_DART) sBone = "PRC_AB_DART";
|
|
|
|
else if (nType == BASE_ITEM_THROWINGAXE) sBone = "PRC_AB_THRAXE";
|
|
|
|
else if (nType == BASE_ITEM_SHURIKEN) sBone = "PRC_AB_SHURIKEN";
|
|
|
|
else
|
|
{
|
|
SendMessageToPC(oPC, "Invalid item type.");
|
|
return;
|
|
}
|
|
|
|
//Decrement the stack
|
|
int nNewStack = GetItemStackSize(oStack);
|
|
nNewStack--;
|
|
|
|
SetItemStackSize(oStack, nNewStack);
|
|
|
|
//create appropriate item
|
|
object oArrowBone = CreateItemOnObject(sBone, oPC, 1);
|
|
|
|
//Hook the onhit script
|
|
itemproperty ipHook = ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1);
|
|
IPSafeAddItemProperty(oArrowBone, ipHook, 0.0f);
|
|
AddEventScript(oArrowBone, EVENT_ITEM_ONHIT, "prc_evnt_arrbone", FALSE, FALSE);
|
|
|
|
PRCSetSchool();
|
|
} |