Files
PRC8/nwn/nwnprc/trunk/psionics/psi_pow_bitewolf.nss
Jaysyn904 ce7d550670 2025/12/06 Update
Added Inscribe Epic Runes.
Added Great Intelligence and Inscribe Epic Runes as Runecaster epic bons feats.
Changed Runecaster epic bonus feat progression to 1 every 4 levels past 10th.
Bardic PrCs should be able to take Lingering Song & Extra Music as general feats.
Forsakers can't use psionics, invocations, spellfire, shadowcasting, truenaming, binding, soulmelds or Supernatural Martial Maneuvers.
Fixed elven courtblade / ambidexterity bug.
Added more guardrails to prevent self-damage from onHit spells during PerformAttack().
Updated GetProperTarget()
Removed ableist slur.
RHD casters should work with JPM now.
Reworked Blood in the Water's effect icon.
Fixed Seize Item's VFX.
RHD casters should be able to enter Dragon Disciple.
Sharp Note doesn't step on Dragonfire Inspiration anymore.
2025-12-06 22:55:23 -05:00

112 lines
3.8 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
----------------
Bite of the Wolf
psi_pow_bitewolf
----------------
29/10/05 by Stratovarius
*/ /** @file
Bite of the Wolf
Psychometabolism
Level: Psychic warrior 1
Manifesting Time: 1 standard action
Range: Personal
Target: You
Duration: 1 min./level
Power Points: 1
Metapsioncs: Extend
Your posture becomes stooped forward, and you grow a muzzle complete with
fangs. You gain a bite attack, that deals 1d8 points of damage (assuming you
are a Medium creature) when it hits.
Your bite attack is a natural weapon, so you are considered armed when
attacking with it, and it can be affected by powers, spells, and effects
that enhance or improve natural weapons.
If you are not a Medium creature, your bite attacks base damage varies as
follows: Fine 1d2, Diminutive 1d3, Tiny 1d4, Small 1d6, Large 2d6, Huge 2d8,
Gargantuan 4d6, Colossal 6d6.
Based on your psychic warrior level, your bite increases in ferocity as
noted here: at 5th level your bite deals an extra 1d8 points of damage,
at 10th level an extra 2d8, at 15th level an extra 3d8,
and at 20th level an extra 4d8 points.
@todo Invent a trick to make this dispellable
*/
#include "psi_inc_psifunc"
#include "psi_inc_pwresist"
#include "psi_spellhook"
#include "prc_alterations"
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(),
METAPSIONIC_EXTEND
);
if(manif.bCanManifest)
{
int nEffectivePsyWarLevel = GetLevelByClass(CLASS_TYPE_PSYWAR, oManifester)
+ GetLevelByClass(CLASS_TYPE_FIST_OF_ZUOKEN, oManifester)
+ GetLevelByClass(CLASS_TYPE_WARMIND, oManifester);
int nBonusDamage;
int nBaseDamage;
effect eVis = EffectVisualEffect(VFX_IMP_PULSE_NATURE);
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
eDur = EffectLinkEffects(eDur, EffectSkillIncrease(SKILL_HIDE, 1));
eDur = EffectLinkEffects(eDur, EffectSkillDecrease(SKILL_HIDE, 1));
object oCWeapon;
float fDuration = 60.0f * manif.nManifesterLevel;
if(manif.bExtend) fDuration *= 2;
// 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);
// Determine bonus damage from Psychic Warrior levels
int nBonus = 0;
if (nEffectivePsyWarLevel >= 20) nBonus = 4;
else if(nEffectivePsyWarLevel >= 15) nBonus = 3;
else if(nEffectivePsyWarLevel >= 10) nBonus = 2;
else if(nEffectivePsyWarLevel >= 5) nBonus = 1;
string sResRef = "prc_bw"+IntToString(nBonus)+"_bite_";
sResRef += GetAffixForSize(PRCGetCreatureSize(oTarget));
AddNaturalSecondaryWeapon(oTarget, sResRef, 1);
// Start dispelling monitor and heartbeat
DelayCommand(6.0f,
NaturalSecondaryWeaponTempCheck(oManifester, oTarget, manif.nSpellID, FloatToInt(fDuration) / 6, sResRef));
}// end if - Successfull manifestation
}