PRC8/nwn/nwnprc/trunk/spells/sp_claw_bebil.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

118 lines
3.8 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Name: Claws of the Bebilith
//:: Filename: sp_claw_bebil.nss
//::///////////////////////////////////////////////
/**Claws of the Bebilith
Transmutation [Evil]
Level: Corrupt 5
Components: V, S, Corrupt
Casting Time: 1 action
Range: Personal
Target: Caster
Duration: 10 minutes/level
The caster gains claws that deal damage based on
her size (see below) and can catch and tear an
opponent's armor and shield. If the opponent has
both armor and a shield, roll 1d6: A result of 1-4
indicates the armor is affected, and a result of 5-6
affects the shield.
The caster makes a grapple check whenever she hits
with a claw attack, adding to the opponent's roll any
enhancement bonus from magic possessed by the
opponent's armor or shield. If the caster wins, the
armor or shield is torn away and ruined.
Caster Size Claw Damage
Fine 1
Diminutive 1d2
Tiny ld3
Small ld4
Medium-size ld6
Large 1d8
Huge 2d6
Gargantuan 2d8
Colossal 4d6
Corruption Cost: 1d6 points of Dexterity damage.
@author Written By: Tenjac
*/
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////
#include "prc_inc_spells"
void main()
{
// Run the spellhook.
if (!X2PreSpellCastCode()) return;
PRCSetSchool(SPELL_SCHOOL_TRANSMUTATION);
//vars
object oPC = OBJECT_SELF;
object oTarget = PRCGetSpellTargetObject();
int nCasterLvl = PRCGetCasterLevel(oPC);
int nClawSize = PRCGetCreatureSize(oTarget);
int nBaseDamage;
int nMetaMagic = PRCGetMetaMagicFeat();
float fDuration = (600.0f * nCasterLvl);
if(nMetaMagic & METAMAGIC_EXTEND)
{
fDuration += fDuration;
}
// Determine base damage
switch(nClawSize)
{
case 0: nBaseDamage = IP_CONST_MONSTERDAMAGE_1d2; break;
case 1: nBaseDamage = IP_CONST_MONSTERDAMAGE_1d2; break;
case 2: nBaseDamage = IP_CONST_MONSTERDAMAGE_1d3; break;
case 3: nBaseDamage = IP_CONST_MONSTERDAMAGE_1d4; break;
case 4: nBaseDamage = IP_CONST_MONSTERDAMAGE_1d6; break;
case 5: nBaseDamage = IP_CONST_MONSTERDAMAGE_1d8; break;
case 6: nBaseDamage = IP_CONST_MONSTERDAMAGE_2d6; break;
case 7: nBaseDamage = IP_CONST_MONSTERDAMAGE_2d8; break;
}
// Catch exceptions here
if (nClawSize < 0) nBaseDamage = IP_CONST_MONSTERDAMAGE_1d2;
else if (nClawSize > 7) nBaseDamage = IP_CONST_MONSTERDAMAGE_4d6;
// Create the creature weapon
object oLClaw = GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oPC);
object oRClaw = GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oPC);
// Add the base damage
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyMonsterDamage(nBaseDamage), oLClaw, fDuration);
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyMonsterDamage(nBaseDamage), oRClaw, fDuration);
//Set up property
itemproperty ipClaws = (ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1));
//Add event script
AddEventScript(oLClaw, EVENT_ONHIT, "prc_evnt_clbebil", TRUE, FALSE);
AddEventScript(oRClaw, EVENT_ONHIT, "prc_evnt_clbebil", TRUE, FALSE);
//Add props
IPSafeAddItemProperty(oLClaw, ipClaws, fDuration, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);
IPSafeAddItemProperty(oRClaw, ipClaws, fDuration, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE);
//Corrupt spells get mandatory 10 pt evil adjustment, regardless of switch
AdjustAlignment(oPC, ALIGNMENT_EVIL, 10, FALSE);
//SPEvilShift(oPC);
PRCSetSchool();
}