PRC8/nwn/nwnprc/trunk/include/psi_inc_psicraft.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

84 lines
3.0 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Psionic include: Psicraft Skill
//:: psi_inc_psicraft
//::///////////////////////////////////////////////
/** @file
Defines various functions and other stuff that
do something related to the Psicraft skill
Functions below are called by the manifester as
he makes a power.
@author Stratovarius
@date Created - 2008.9.17
*/
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////
//////////////////////////////////////////////////
/* Constants */
//////////////////////////////////////////////////
// Constants are provided via psi_inc_core
//////////////////////////////////////////////////
/* Function prototypes */
//////////////////////////////////////////////////
/**
* Returns the power that the manifester just used
* @param oManifester The power manifester
* @param nPowerId Power to check
*
* @return nothing, uses SendMessageToPC to give results
*/
void IdentifyPower(object oManifester, int nPowerId);
//////////////////////////////////////////////////
/* Includes */
//////////////////////////////////////////////////
// Always access via psi_inc_psifunc.
//#include "psi_inc_core"
//////////////////////////////////////////////////
/* Internal functions */
//////////////////////////////////////////////////
void _DoPsicraftCheck(object oManifester, object oCheck, int nPowerLevel, int nPowerId)
{
// NPCs wouldn't benefit from being told the name of the maneuver
if (!GetIsPC(oCheck)) return;
// Roll the check
if(GetIsSkillSuccessful(oCheck, SKILL_PSICRAFT, 10 + nPowerLevel))
{ // get the name of the manifester and power
FloatingTextStringOnCreature(GetName(oManifester) + " manifests " + GetStringByStrRef(StringToInt(Get2DACache("spells", "Name", nPowerId))), oCheck, FALSE);
}
else // Skill check failed
{
FloatingTextStringOnCreature(GetName(oManifester) + " manifests unknown power", oCheck, FALSE);
}
}
//////////////////////////////////////////////////
/* Function definitions */
//////////////////////////////////////////////////
void IdentifyPower(object oManifester, int nPowerId)
{
int nPowerLevel = GetPowerLevel(oManifester);
// The area to check for martial lore users
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, GetLocation(oManifester), TRUE, OBJECT_TYPE_CREATURE);
//Cycle through the targets within the spell shape until an invalid object is captured.
while (GetIsObjectValid(oTarget) && oTarget != oManifester)
{
// If the target has points in the skill
if (GetSkillRank(SKILL_PSICRAFT, oTarget) > 0) _DoPsicraftCheck(oManifester, oTarget, nPowerLevel, nPowerId);
//Select the next target within the area.
oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, GetLocation(oManifester), TRUE, OBJECT_TYPE_CREATURE);
}
}