Further file organization
Further file organization
This commit is contained in:
118
nwn/nwnprc/trunk/spells/sp_claw_bebil.nss
Normal file
118
nwn/nwnprc/trunk/spells/sp_claw_bebil.nss
Normal file
@@ -0,0 +1,118 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: 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();
|
||||
}
|
Reference in New Issue
Block a user