Files
PRC8/nwn/nwnprc/trunk/newspellbook/moi_mld_diadem.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

106 lines
4.4 KiB
Plaintext
Raw Blame History

/*
1/1/20 by Stratovarius
Diadem of Purelight
Descriptors: Light
Classes: Incarnate, Soulborn
Chakra: Crown
Saving Throw: None
A shimmering ring of incarnum energy wreathes your head, shedding a pure blue-white light. The light clearly outlines the shapes of creatures and objects it illuminates, enhancing your visual acuity.
You shape incarnum into a circlet that illuminates the area around you. Your diadem of purelight sheds light as a torch, and grants you a +2 bonus on Spot checks. It also negates darkness spells.
Essentia: Every point of essentia invested in this soulmeld increases the bonus on Spot checks by +2.
Chakra Bind (Crown)
The light from the headband becomes steady and constant, amplifying the contrast between different creatures and objects.
The diadem of purelight negates any concealment within a 20 ft radius.
*/
//::////////////////////////////////////////////////////////
//::
//:: Updated by: Jaysyn
//:: Updated on: 2026-02-21 00:58:50
//::
//:: Double Chakra Bind support added
//::
//::////////////////////////////////////////////////////////
void DiademHB(object oMeldshaper);
#include "moi_inc_moifunc"
void DiademHB(object oMeldshaper)
{
// Validate Crown bind (regular or double) before processing
int nBoundToCrown = FALSE;
if (GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_CROWN)) == MELD_DIADEM_OF_PURELIGHT ||
GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_DOUBLE_CROWN)) == MELD_DIADEM_OF_PURELIGHT)
nBoundToCrown = TRUE;
if (!nBoundToCrown) return;
location lTarget = GetLocation(oMeldshaper);
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, FeetToMeters(20.0), lTarget, TRUE, OBJECT_TYPE_CREATURE);
while (GetIsObjectValid(oTarget))
{
PRCRemoveSpecificEffect(EFFECT_TYPE_CONCEALMENT, oTarget);
oTarget = MyNextObjectInShape(SHAPE_SPHERE, FeetToMeters(20.0), lTarget, TRUE, OBJECT_TYPE_CREATURE);
}
if (GetHasSpellEffect(MELD_DIADEM_OF_PURELIGHT, oMeldshaper)) DelayCommand(1.0, DiademHB(oMeldshaper));
}
void main()
{
object oMeldshaper = PRCGetSpellTargetObject();
int nMeldId = PRCGetSpellId();
int nEssentia = GetEssentiaInvested(oMeldshaper);
effect eLink = EffectSkillIncrease(SKILL_SPOT, 2 + (nEssentia * 2));
SetLocalInt(oMeldshaper, "PRCInLight", GetLocalInt(oMeldshaper, "PRCInLight") + 1);
SetLocalInt(oMeldshaper, "DiademPurelight", TRUE);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(eLink), oMeldshaper, 9999.0);
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_DIADEM_OF_PURELIGHT), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
// Crown bind (negate concealment in 20 ft) <20> check regular or double Crown
int nBoundToCrown = FALSE;
if (GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_CROWN)) == nMeldId ||
GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_DOUBLE_CROWN)) == nMeldId)
nBoundToCrown = TRUE;
if (nBoundToCrown) DiademHB(oMeldshaper);
}
/* void DiademHB(object oMeldshaper)
{
location lTarget = GetLocation(oMeldshaper);
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, FeetToMeters(20.0), lTarget, TRUE, OBJECT_TYPE_CREATURE);
//Cycle through the targets within the spell shape until an invalid object is captured.
while (GetIsObjectValid(oTarget))
{
PRCRemoveSpecificEffect(EFFECT_TYPE_CONCEALMENT, oTarget);
//Select the next target within the spell shape.
oTarget = MyNextObjectInShape(SHAPE_SPHERE, FeetToMeters(20.0), lTarget, TRUE, OBJECT_TYPE_CREATURE);
}
if (GetHasSpellEffect(MELD_DIADEM_OF_PURELIGHT, oMeldshaper)) DelayCommand(1.0, DiademHB(oMeldshaper));
} */
/* void main()
{
object oMeldshaper = PRCGetSpellTargetObject();
int nEssentia = GetEssentiaInvested(oMeldshaper);
effect eLink = EffectSkillIncrease(SKILL_SPOT, 2 + (nEssentia*2));
SetLocalInt(oMeldshaper, "PRCInLight", GetLocalInt(oMeldshaper, "PRCInLight")+1);
SetLocalInt(oMeldshaper, "DiademPurelight", TRUE);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(eLink), oMeldshaper, 9999.0);
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_DIADEM_OF_PURELIGHT), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
if (GetIsMeldBound(oMeldshaper) == CHAKRA_CROWN) DiademHB(oMeldshaper);
} */