PRC8_fork/nwn/nwnprc/trunk/psionics/psi_pow_bitewolf.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

113 lines
3.9 KiB
Plaintext
Raw Permalink 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
}