Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
97 lines
2.7 KiB
Plaintext
97 lines
2.7 KiB
Plaintext
/*
|
|
----------------
|
|
Far Hand
|
|
|
|
psi_pow_farhand
|
|
----------------
|
|
|
|
6/12/04 by Stratovarius
|
|
*/ /** @file
|
|
|
|
Far Hand
|
|
|
|
Psychokinesis
|
|
Level: Psion/wilder 1
|
|
Manifesting Time: 1 standard action
|
|
Range: Medium (100 ft. + 10 ft./ level)
|
|
Target: An unattended object weighing up to 5 pounds
|
|
Duration: Instantaneous
|
|
Saving Throw: None
|
|
Power Resistance: No
|
|
Power Points: 1
|
|
Metapsionics: None
|
|
|
|
You can mentally lift and move an object from a distance to yourself.
|
|
|
|
Augment: For every additional power point you spend, the weight limit of the
|
|
target increases by 2 pounds.
|
|
|
|
|
|
Implementation note - WARNING: The method used for moving the object
|
|
involves creating a copy and destroying the original. This may break some
|
|
modules.
|
|
*/
|
|
|
|
#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();
|
|
object oItem;
|
|
struct manifestation manif =
|
|
EvaluateManifestation(oManifester, oTarget,
|
|
PowerAugmentationProfile(PRC_NO_GENERIC_AUGMENTS,
|
|
1, PRC_UNLIMITED_AUGMENTATION
|
|
),
|
|
METAPSIONIC_NONE
|
|
);
|
|
|
|
if(manif.bCanManifest)
|
|
{
|
|
int nMaxWeight = 50 + (20 * manif.nTimesAugOptUsed_1);
|
|
int nTargetType = GetObjectType(oTarget);
|
|
|
|
if(nTargetType == OBJECT_TYPE_PLACEABLE)
|
|
{
|
|
if(GetTag(oTarget) == "BodyBag")
|
|
oItem = GetFirstItemInInventory(oTarget);
|
|
}
|
|
else if(nTargetType == OBJECT_TYPE_ITEM)
|
|
{
|
|
oItem = oTarget;
|
|
}
|
|
if(!GetIsObjectValid(oItem))
|
|
FloatingTextStrRefOnCreature(16826245, oManifester, FALSE); // "* Target is not an item *"
|
|
|
|
// And light enough
|
|
if(GetWeight(oItem) <= nMaxWeight)
|
|
{
|
|
//ActionGiveItem(oTarget, oCaster);
|
|
CopyItem(oItem, oManifester, FALSE);
|
|
MyDestroyObject(oItem); // Make sure the item does get destroyed
|
|
}
|
|
else
|
|
FloatingTextStrRefOnCreature(16824062, oManifester, FALSE); // "This item is too heavy for you to pick up"
|
|
}
|
|
}
|