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

85 lines
2.7 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.

/*
----------------
Call Weaponry
psi_pow_callweap
----------------
29/10/05 by Stratovarius
*/ /** @file
Call Weaponry
Psychoportation (Teleportation)
Level: Psychic warrior 1
Manifesting Time: 1 round
Range: 0 ft.
Effect: One weapon; see text
Duration: 1 min./level; see text
Saving Throw: None
Power Resistance: No
Power Points: 1
Metapsionics: Extend
You call a weapon “from thin air” into your waiting hand (actually, it is a
real weapon hailing from another location in space and time). You dont have
to see or know of a weapon to call it-in fact, you cant call a specific
weapon; you just specify the kind. If you call a projectile weapon, it comes
with 3d6 bolts, arrows, or sling bullets, as appropriate. The weapon is made
of ordinary materials as appropriate for its kind.
Weapons gained by call weaponry are distinctive due to their astral glimmer.
They are considered magic weapons and thus are effective against damage
reduction that requires a magic weapon to overcome.
Augment: For every 4 additional power points you spend, this power improves
the weapons enhancement bonus on attack rolls and damage rolls by 1.
*/
#include "psi_inc_psifunc"
#include "psi_inc_pwresist"
#include "psi_spellhook"
#include "prc_alterations"
#include "prc_inc_teleport"
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,
4, PRC_UNLIMITED_AUGMENTATION
),
METAPSIONIC_EXTEND
);
if(manif.bCanManifest)
{
float fDuration = 60.0f * manif.nManifesterLevel;
if(manif.bExtend) fDuration *= 2;
SetLocalInt(oManifester, "PRC_Power_CallWeapon_Augment", manif.nTimesAugOptUsed_1);
SetLocalFloat(oManifester, "PRC_Power_CallWeapon_Duration", fDuration);
// Dimensional travel prevention check
if(GetCanTeleport(oManifester, GetLocation(oManifester), FALSE, TRUE))
StartDynamicConversation("psi_callweapon", oManifester, DYNCONV_EXIT_NOT_ALLOWED, FALSE, TRUE, oManifester);
}
}