Further file organization
Further file organization
This commit is contained in:
159
nwn/nwnprc/trunk/spells/sp_bone_blade.nss
Normal file
159
nwn/nwnprc/trunk/spells/sp_bone_blade.nss
Normal file
@@ -0,0 +1,159 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: Name Bone Blade
|
||||
//:: FileName sp_bone_blade.nss
|
||||
//:://////////////////////////////////////////////
|
||||
/**@file Boneblade
|
||||
Necromancy [Evil]
|
||||
Level: Blk 2, Clr 3
|
||||
Components: V, S, F, Undead
|
||||
Casting Time: 1 action
|
||||
Range: Touch
|
||||
Effect: One bone that becomes a blade
|
||||
Duration: 10 minutes/level
|
||||
|
||||
The caster changes a bone at least 6 inches long into
|
||||
a longsword, short sword, or greatsword (caster's choice).
|
||||
This weapon has a +1 enhancement bonus on attacks and
|
||||
damage for every five caster levels (at least +1,
|
||||
maximum +4). Furthermore, this blade deals an extra +1d6
|
||||
points of damage to living targets and an additional +1d6
|
||||
points of damage to good<6F>aligned targets.
|
||||
|
||||
This spell confers no proficiency with the blade, but the
|
||||
caster doesn't need to be the one wielding the blade for
|
||||
it to be effective.
|
||||
|
||||
Focus: A 6-inch-long bone.
|
||||
|
||||
Author: Tenjac
|
||||
Created: 3/9/2006
|
||||
*/
|
||||
//:://////////////////////////////////////////////
|
||||
//:://////////////////////////////////////////////
|
||||
|
||||
#include "prc_inc_spells"
|
||||
|
||||
void main()
|
||||
{
|
||||
//define vars
|
||||
object oPC = OBJECT_SELF;
|
||||
int nCasterLvl = PRCGetCasterLevel(oPC);
|
||||
int nMetaMagic = PRCGetMetaMagicFeat();
|
||||
int nType = MyPRCGetRacialType(oPC);
|
||||
int nEnhance = 1;
|
||||
int nSpell = GetSpellId();
|
||||
float fDuration = (600.0f * nCasterLvl);
|
||||
string sSword;
|
||||
int nRandom = d3(1);
|
||||
|
||||
//Spellhook
|
||||
if(!X2PreSpellCastCode()) return;
|
||||
|
||||
PRCSetSchool(SPELL_SCHOOL_NECROMANCY);
|
||||
|
||||
//Check for undeath
|
||||
if(nType == RACIAL_TYPE_UNDEAD)
|
||||
{
|
||||
//Summon blade
|
||||
if(nSpell == SPELL_BONEBLADE_GREATSWORD)
|
||||
{
|
||||
if(nRandom == 1)
|
||||
{
|
||||
sSword = "wswgs071";
|
||||
}
|
||||
|
||||
if(nRandom == 2)
|
||||
{
|
||||
sSword = "wswgs072";
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
sSword = "wswgs073";
|
||||
}
|
||||
}
|
||||
|
||||
if(nSpell == SPELL_BONEBLADE_LONGSWORD)
|
||||
{
|
||||
if(nRandom == 1)
|
||||
{
|
||||
sSword = "wswls091";
|
||||
}
|
||||
|
||||
if(nRandom == 2)
|
||||
{
|
||||
sSword = "wswls092";
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
sSword = "wswls093";
|
||||
}
|
||||
}
|
||||
|
||||
if(nSpell == SPELL_BONEBLADE_SHORTSWORD)
|
||||
{
|
||||
if(nRandom == 1)
|
||||
{
|
||||
sSword = "wswss071";
|
||||
}
|
||||
|
||||
if(nRandom == 2)
|
||||
{
|
||||
sSword = "wswss072";
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
sSword = "wswss073";
|
||||
}
|
||||
}
|
||||
|
||||
//Create sword
|
||||
object oSword = CreateItemOnObject(sSword, oPC, 1);
|
||||
|
||||
//+1 per 5 levels
|
||||
if(nCasterLvl > 9)
|
||||
{
|
||||
nEnhance = 2;
|
||||
}
|
||||
|
||||
if(nCasterLvl > 14)
|
||||
{
|
||||
nEnhance = 3;
|
||||
}
|
||||
|
||||
if(nCasterLvl > 19)
|
||||
{
|
||||
nEnhance = 4;
|
||||
}
|
||||
|
||||
IPSetWeaponEnhancementBonus(oSword, nEnhance);
|
||||
|
||||
//+1d6 good
|
||||
itemproperty ipProp = ItemPropertyEnhancementBonusVsAlign(IP_CONST_ALIGNMENTGROUP_GOOD, d6(1));
|
||||
|
||||
IPSafeAddItemProperty(oSword, ipProp, 0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);
|
||||
|
||||
//+1d6 living, use onHit Unique Power
|
||||
itemproperty ipBlade = (ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1));
|
||||
IPSafeAddItemProperty(oSword, ipBlade, 0.0f, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);
|
||||
|
||||
AddEventScript(oSword, EVENT_ITEM_ONHIT, "prc_evnt_bonebld", TRUE, FALSE);
|
||||
|
||||
//Check metamagic
|
||||
if (nMetaMagic & METAMAGIC_EXTEND)
|
||||
{
|
||||
fDuration = (fDuration * 2);
|
||||
}
|
||||
|
||||
//Schedule deletion of item
|
||||
DelayCommand(fDuration, DestroyObject(oSword));
|
||||
|
||||
}
|
||||
//SPEvilShift(oPC);
|
||||
PRCSetSchool();
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user