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

80 lines
4.1 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
11/1/20 by Stratovarius
Shadow Mantle
Descriptors: Darkness
Classes: Totemist
Chakra: Shoulders (totem)
Saving Throw: None
Incarnum forms a rough cloak of stony gray around your shoulders and back. As you move, the cloak writhes behind you, suggesting the movement of tentacles. It seems to collect shadow, always appearing darker than the surrounding area.
Channeling the merest suggestion of a darkmantles powerful blindsight, you gain a +4 competence bonus on Listen checks.
Essentia: Every point of essentia you invest in your shadow mantle increases the competence bonus on Listen checks by 2.
Chakra Bind (Shoulders)
The shadows of your mantle deepen, and its coloration grows darker. Blackness seems to cling in every fold and sometimes trail off in wisps from the mantles substance. You start to hear sounds too high for most humans to detect, and occasionally sounds too low, as well.
As a swift action, you can surround yourself with a globe of magical darkness and gain the benefits of ultravision. You can end the darkness effect as a swift action; ending the darkness effect also ends your ultravision.
Chakra Bind (Totem)
Your shadow mantle literally draws shadows to itself, and it changes color to match your surroundings. You find it much easier to hide from view by drawing the cloak around your body and ducking your head into its membranous collar.
You gain a competence bonus on Hide checks equal to the bonus the soulmeld grants on Listen checks (+4 plus an additional +2 per point of invested essentia).
*/
//::////////////////////////////////////////////////////////
//::
//:: Updated by: Jaysyn
//:: Updated on: 2026-02-20 23:20:37
//::
//:: Double Totem Bind support added
//:: Double Chakra Bind support added
//::
//::////////////////////////////////////////////////////////
#include "moi_inc_moifunc"
void main()
{
object oMeldshaper = PRCGetSpellTargetObject();
int nMeldId = PRCGetSpellId();
int nEssentia = GetEssentiaInvested(oMeldshaper);
int nBonus = 4 + (nEssentia * 2);
effect eLink = EffectSkillIncrease(SKILL_LISTEN, nBonus);
// Totem bind (Hide bonus) — check regular or double Totem
int nBoundToTotem = FALSE;
if (GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_TOTEM)) == nMeldId ||
GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_DOUBLE_TOTEM)) == nMeldId)
nBoundToTotem = TRUE;
if (nBoundToTotem) eLink = EffectLinkEffects(eLink, EffectSkillIncrease(SKILL_HIDE, nBonus));
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(eLink), oMeldshaper, 9999.0);
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_SHADOW_MANTLE), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
// Shoulders bind (darkness + ultravision) — check regular or double Shoulders
int nBoundToShoulders = FALSE;
if (GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_SHOULDERS)) == nMeldId ||
GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_DOUBLE_SHOULDERS)) == nMeldId)
nBoundToShoulders = TRUE;
if (nBoundToShoulders) IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_SHADOW_MANTLE_SHOULDERS), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
}
/* void main()
{
object oMeldshaper = PRCGetSpellTargetObject();
int nEssentia = GetEssentiaInvested(oMeldshaper);
int nBonus = 4+(nEssentia*2);
effect eLink = EffectSkillIncrease(SKILL_LISTEN, nBonus);
if (GetIsMeldBound(oMeldshaper) == CHAKRA_TOTEM) EffectLinkEffects(eLink, EffectSkillIncrease(SKILL_HIDE, nBonus));
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(eLink), oMeldshaper, 9999.0);
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_SHADOW_MANTLE), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
if (GetIsMeldBound(oMeldshaper) == CHAKRA_SHOULDERS) IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_SHADOW_MANTLE_SHOULDERS), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
} */