Files
PRC8/nwn/nwnprc/trunk/newspellbook/moi_mld_sandalft.nss
Jaysyn904 73ce19db22 2026/02/21 Update
Updated all soulmelds to allow double chakra binds.
Updated Totemist soulmelds to allow double totem binds.
Pearl of Black Doubt should play nice with Vow of Poverty.
2026-02-21 19:25:00 -05:00

98 lines
4.2 KiB
Plaintext

/*
Cerulean Sandals
Descriptors: None
Classes: Incarnate, Soulborn
Chakra: Feet
Saving Throw: None
Incarnum forms into a pair of sandals that surround your feet and any other footwear you might have on. The sandals resemble blue crystal ice, but just beneath the surface, they seem to flow like water.
Your cerulean sandals make you immune to movement speed decreases.
Essentia: Every point of essentia invested in this soulmeld grants an enhancement bonus of +5 feet to your base land speed.
Chakra Bind (Feet)
Your feet and lower legs are encased in a sheath of blue-gray energy. This substance resembles ice, but motes of light like tiny stars drift through it as well.
You can use dimension door as the spell, up to a total distance of 10 feet per meldshaper level. You can use this ability (in increments of 10 feet) any number of times, until the total distance has been traversed, at which point the soulmeld unshapes. This requires a standard action to activate.
*/
//::////////////////////////////////////////////////////////
//::
//:: Updated by: Jaysyn
//:: Updated on: 2026-02-20 09:50:29
//::
//:: Double Chakra Bind support added
//::
//::////////////////////////////////////////////////////////
#include "spinc_dimdoor"
#include "moi_inc_moifunc"
void main()
{
object oMeldshaper = OBJECT_SELF;
location lTarget = PRCGetSpellTargetLocation();
float fTraveled = GetLocalFloat(oMeldshaper, "CeruleanSandalsDist");
float fDist = GetDistanceBetweenLocations(lTarget, GetLocation(oMeldshaper));
// We know it's bound, now to check which class bound it
int nClass = GetMeldShapedClass(oMeldshaper, MELD_CERULEAN_SANDALS);
int nLevel = GetMeldshaperLevel(oMeldshaper, nClass, MELD_CERULEAN_SANDALS);
float fMax = 10.0 * nLevel;
// Check if bound to Feet chakra (regular or double)
int nMeldId = MELD_CERULEAN_SANDALS;
int nBoundToFeet = FALSE;
if (GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_FEET)) == nMeldId ||
GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_DOUBLE_FEET)) == nMeldId)
nBoundToFeet = TRUE;
if (!nBoundToFeet)
{
FloatingTextStringOnCreature("Cerulean Sandals must be bound to Feet to use this ability.", oMeldshaper, FALSE);
return;
}
// If it's within range
if (fMax >= (fDist+fTraveled))
{
DimensionDoor(oMeldshaper, nLevel);
SetLocalFloat(oMeldshaper, "CeruleanSandalsDist", (fDist+fTraveled));
FloatingTextStringOnCreature("You have "+FloatToString(fMax - (fDist+fTraveled))+" of distance left in your Cerulean Sandals", oMeldshaper, FALSE);
}
else
{
// Using this ability ends the meld until tomorrow.
PRCRemoveSpellEffects(MELD_CERULEAN_SANDALS, oMeldshaper, oMeldshaper);
FloatingTextStringOnCreature("Cerulean Sandals unshaped", oMeldshaper, FALSE);
ExecuteScript("prc_speed", oMeldshaper); // This will remove any speed bonus from the spell
}
}
/* void main()
{
object oMeldshaper = OBJECT_SELF;
location lTarget = PRCGetSpellTargetLocation();
float fTraveled = GetLocalFloat(oMeldshaper, "CeruleanSandalsDist");
float fDist = GetDistanceBetweenLocations(lTarget, GetLocation(oMeldshaper));
// We know it's bound, now to check which class bound it
int nClass = GetMeldShapedClass(oMeldshaper, MELD_CERULEAN_SANDALS);
int nLevel = GetMeldshaperLevel(oMeldshaper, nClass, MELD_CERULEAN_SANDALS);
float fMax = 10.0 * nLevel;
// If it's within range
if (fMax >= (fDist+fTraveled))
{
DimensionDoor(oMeldshaper, nLevel);
SetLocalFloat(oMeldshaper, "CeruleanSandalsDist", (fDist+fTraveled));
FloatingTextStringOnCreature("You have "+FloatToString(fMax - (fDist+fTraveled))+" of distance left in your Cerulean Sandals", oMeldshaper, FALSE);
}
else
{
// Using this ability ends the meld until tomorrow.
PRCRemoveSpellEffects(MELD_CERULEAN_SANDALS, oMeldshaper, oMeldshaper);
FloatingTextStringOnCreature("Cerulean Sandals unshaped", oMeldshaper, FALSE);
ExecuteScript("prc_speed", oMeldshaper); // This will remove any speed bonus from the spell
}
} */