PRC8/nwn/nwnprc/trunk/psionics/psi_pow_clwbeast.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

170 lines
6.9 KiB
Plaintext

/*
----------------
Claws of the Beast
psi_pow_clwbeast
----------------
29/10/05 by Stratovarius
*/ /** @file
Claws of the Beast
Psychometabolism
Level: Psychic warrior 1
Manifesting Time: 1 swift action
Range: Personal
Target: You
Duration: 1 hour/level
Power Points: see text
Metapsionics: Extend
You call forth the aggressive nature of the beast inherent in yourself,
psionically transforming your hands into deadly claws. You gain two natural
attacks with your claws, each dealing 1d4 points of damage (1d6 if you are
Large or larger, or 1d3 if you are Small or smaller) plus your Strength
bonus.
Your claws are natural weapons, so you are considered armed when attacking
with them, and they can be affected by powers, spells, and effects that
enhance or improve natural.
Your claws work just like the natural weapons of many monsters. You can make
an attack with one claw or a full attack with two claws at your normal
attack bonus, replacing your normal attack routine. You take no penalties
for two-weapon fighting, and neither attack is a secondary attack. If your
base attack bonus is +6 or higher, you do not gain any additional attacks -
you simply have two claw attacks at your normal attack bonus.
You can manifest this power with an instant thought, quickly enough to gain
the benefit of the power on your turn before you attack. Manifesting this
power is a swift action, like manifesting a quickened power, and it counts
toward the normal limit of one quickened power per round.
You can still hold and manipulate items with your claws or cast spells just
as well as you could with your hands.
Augment: If you spend additional power points, you can create larger,
sharper, and more deadly claws, as shown on the table below.
Power Points Claw Damage
Small Medium Large
1 1d3 1d4 1d6
3 1d4 1d6 1d8
5 1d6 1d8 2d6
7 1d8 2d6 3d6
11 2d6 3d6 4d6
15 3d6 4d6 5d6
19 4d6 5d6 6d6
This augmentation is implemented as the following two augmentation options:
1. For every 2 power points spent, the size of the claws increases by one
step on the table above. This increase may be used up to 3 times.
2. For every 4 power points spent, the size of the claws increases by one
step on the table above. This increase may be used up to 3 times.
*/
#include "psi_inc_psifunc"
#include "psi_inc_pwresist"
#include "psi_spellhook"
#include "prc_inc_natweap"
void main()
{
/*
Spellcast Hook Code
Added 2004-11-02 by Stratovarius
If you want to make changes to all powers,
check psi_spellhook to find out more
*/
if (!PsiPrePowerCastCode())
{
// If code within the PrePowerCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
object oManifester = OBJECT_SELF;
object oTarget = PRCGetSpellTargetObject();
struct manifestation manif =
EvaluateManifestation(oManifester, oTarget,
PowerAugmentationProfile(PRC_NO_GENERIC_AUGMENTS,
2, 3,
4, 3
),
METAPSIONIC_EXTEND
);
if(manif.bCanManifest)
{
// {0, 1, 2}, depending on the size of the creature
int nEffectiveSize = max(min(PRCGetCreatureSize(oTarget), CREATURE_SIZE_LARGE), CREATURE_SIZE_SMALL) - CREATURE_SIZE_SMALL;
int nClawSize = nEffectiveSize + manif.nTimesAugOptUsed_1 + manif.nTimesAugOptUsed_2;
int nBaseDamage;
effect eVis = EffectVisualEffect(VFX_IMP_PULSE_FIRE);
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
object oLClaw, oRClaw;
float fDuration = HoursToSeconds(manif.nManifesterLevel);
if(manif.bExtend) fDuration *= 2;
// Determine base damage
switch(nClawSize)
{
case 0: nBaseDamage = IP_CONST_MONSTERDAMAGE_1d3; break;
case 1: nBaseDamage = IP_CONST_MONSTERDAMAGE_1d4; break;
case 2: nBaseDamage = IP_CONST_MONSTERDAMAGE_1d6; break;
case 3: nBaseDamage = IP_CONST_MONSTERDAMAGE_1d8; break;
case 4: nBaseDamage = IP_CONST_MONSTERDAMAGE_2d6; break;
case 5: nBaseDamage = IP_CONST_MONSTERDAMAGE_3d6; break;
case 6: nBaseDamage = IP_CONST_MONSTERDAMAGE_4d6; break;
case 7: nBaseDamage = IP_CONST_MONSTERDAMAGE_6d6; break;
/*default:{
string sErr = "psi_pow_clwbeast: ERROR: Unknown nClawSize value: " + IntToString(nClawSize);
if(DEBUG) DoDebug(sErr);
else WriteTimestampedLogEntry(sErr);
}*/
}
// Catch exceptions here
if (nClawSize < 0) nBaseDamage = IP_CONST_MONSTERDAMAGE_1d3;
else if (nClawSize > 7) nBaseDamage = IP_CONST_MONSTERDAMAGE_6d6;
// Create the creature weapon
oLClaw = GetPsionicCreatureWeapon(oTarget, "PRC_UNARMED_SP", INVENTORY_SLOT_CWEAPON_L, fDuration);
oRClaw = GetPsionicCreatureWeapon(oTarget, "PRC_UNARMED_SP", INVENTORY_SLOT_CWEAPON_R, fDuration);
// Add the base damage
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyMonsterDamage(nBaseDamage), oLClaw, fDuration);
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyMonsterDamage(nBaseDamage), oRClaw, fDuration);
// Do VFX
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
DelayCommand(1.0, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
DelayCommand(2.0, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDur, oTarget, fDuration, FALSE);
string sResRef;
switch(nClawSize)
{
case 0: sResRef = "prc_claw_1d6l_"; break;
case 1: sResRef = "prc_claw_1d6m_"; break;
case 2: sResRef = "prc_claw_1d8m_"; break;
case 3: sResRef = "prc_claw_2d6m_"; break;
case 4: sResRef = "prc_claw_3d6m_"; break;
case 5: sResRef = "prc_claw_4d6m_"; break;
case 6: sResRef = "prc_claw_5d6m_"; break;
case 7: sResRef = "prc_claw_6d6m_"; break;
}
sResRef += GetAffixForSize(PRCGetCreatureSize(oTarget));
AddNaturalPrimaryWeapon(oTarget, sResRef, 2, TRUE);
DelayCommand(6.0f,
NaturalPrimaryWeaponTempCheck(oManifester, oTarget, manif.nSpellID, FloatToInt(fDuration) / 6, sResRef));
}// end if - Successfull manifestation
}