Initial upload.
Adding base PRC 4.19a files to repository.
This commit is contained in:
59
trunk/scripts/prc_reservdimrch.nss
Normal file
59
trunk/scripts/prc_reservdimrch.nss
Normal file
@@ -0,0 +1,59 @@
|
||||
//Spell script for reserve feat dimensional reach
|
||||
//prc_reservdimrch
|
||||
//by ebonfowl
|
||||
//Dedicated to Edgar, the real Ebonfowl
|
||||
|
||||
#include "spinc_dimdoor"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oPC = OBJECT_SELF;
|
||||
object oTarget = PRCGetSpellTargetObject();
|
||||
object oItem;
|
||||
int nTargetType = GetObjectType(oTarget);
|
||||
int nBonus = GetLocalInt(oPC, "DimensionalReachBonus");
|
||||
int nMaxWeight = nBonus*2;
|
||||
int nSpellID = PRCGetSpellId();
|
||||
float fMaxDistance = FeetToMeters(IntToFloat(nBonus*5));
|
||||
float fDistance = GetDistanceBetween(oTarget, oPC);
|
||||
|
||||
if (!GetLocalInt(oPC, "DimensionalReachBonus"))
|
||||
{
|
||||
FloatingTextStringOnCreature("You do not have a spell available of adequate level or type", oPC, FALSE);
|
||||
return;
|
||||
}
|
||||
|
||||
//Range check
|
||||
if(fDistance > fMaxDistance)
|
||||
{
|
||||
string sPretty = FloatToString(fMaxDistance);
|
||||
sPretty = GetSubString(sPretty, 0, FindSubString(sPretty, ".") + 2); // Trunctate decimals to the last two
|
||||
sPretty += "m"; // Note the unit. Since this is SI, the letter should be universal
|
||||
FloatingTextStringOnCreature("Dimensional Reach range limited to " + sPretty, oPC, FALSE);
|
||||
return;
|
||||
}
|
||||
|
||||
//Object check
|
||||
if(nTargetType == OBJECT_TYPE_ITEM)
|
||||
{
|
||||
oItem = oTarget;
|
||||
}
|
||||
else
|
||||
{
|
||||
FloatingTextStrRefOnCreature(16826245, oPC, FALSE); // "* Target is not an item *"
|
||||
return;
|
||||
}
|
||||
|
||||
if(!GetIsObjectValid(oItem))
|
||||
FloatingTextStrRefOnCreature(16826245, oPC, FALSE); // "* Target is not an item *"
|
||||
|
||||
// And light enough
|
||||
if(GetWeight(oItem) <= nMaxWeight)
|
||||
{
|
||||
//ActionGiveItem(oTarget, oPC);
|
||||
CopyItem(oItem, oPC, FALSE);
|
||||
MyDestroyObject(oItem); // Make sure the item does get destroyed
|
||||
}
|
||||
else
|
||||
FloatingTextStrRefOnCreature(16824062, oPC, FALSE); // "This item is too heavy for you to pick up"
|
||||
}
|
Reference in New Issue
Block a user