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.
84 lines
3.0 KiB
Plaintext
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);
|
|
}
|
|
} |