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

109 lines
5.4 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.

/*
13/1/20 by Stratovarius
Winter Mask
Descriptors: Cold
Classes: Totemist
Chakra: Throat (totem)
Saving Throw: See text
You shape incarnum into a snow-white mask resembling the head of a wolf. A snarling muzzle filled with sharp teeth protrudes from the front of the mask, and eyes like blue ice crystals stare out in defiance.
You must make a successful melee touch attack. The target is fatigued unless it succeeds on a Fortitude save.
Essentia: Your touch attack also deals 1d4 points of cold damage for every point of essentia you invest in your winter mask.
Chakra Bind (Throat)
White fur spreads down from your winter mask to cover your throat. Your mouth is filled with a pleasant cold, like sucking a piece of ice on a hot day.
You gain the ability to breathe a cone of cold. Once every 1d4 rounds, you can emit a 15-foot-long cone of cold. Targets in the cone take 2d6 points of cold damage plus 2d6 additional points of damage for every point of invested essentia (Reflex half).
Chakra Bind (Totem)
Your face blends into that of your winter mask, merging with its lupine features. Your eyes appear in the masks eye sockets, and they become the pale ice-blue of a winter wolfs eyes. Your jaws become the powerful maw of a winter wolf as well, and frost clings to the white fur around your muzzle as you breathe.
You gain a bite attack that deals 1d6 points of damage. Every point of essentia invested in this soulmeld adds 1d4 points of cold damage to your bite damage.
*/
//::////////////////////////////////////////////////////////
//::
//:: Updated by: Jaysyn
//:: Updated on: 2026-02-20 20:43:39
//::
//:: Double Chakra Bind support added
//::
//::////////////////////////////////////////////////////////
#include "moi_inc_moifunc"
void main()
{
object oMeldshaper = PRCGetSpellTargetObject();
int nMeldId = PRCGetSpellId();
int nEssentia = GetEssentiaInvested(oMeldshaper);
effect eLink = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(eLink), oMeldshaper, 9999.0);
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_WINTER_MASK), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_WINTER_MASK_TOUCH), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
// Throat bind (cone of cold) — check regular or double Throat
int nBoundToThroat = FALSE;
if (GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_THROAT)) == nMeldId ||
GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_DOUBLE_THROAT)) == nMeldId)
nBoundToThroat = TRUE;
if (nBoundToThroat)
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_WINTER_MASK_THROAT), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
// Totem bind (bite attack + cold damage) — 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)
{
string sResRef = "prc_rdd_bite_";
int nSize = PRCGetCreatureSize(oMeldshaper);
sResRef += GetAffixForSize(nSize);
AddNaturalPrimaryWeapon(oMeldshaper, sResRef);
SetLocalString(oMeldshaper, "IncarnumPrimaryAttackB", sResRef);
int nDamage = EssentiaToD4(nEssentia);
// All natural attacks end up here
if (nEssentia)
{
DelayCommand(3.0, IPSafeAddItemProperty(GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oMeldshaper), ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_COLD, nDamage), 9999.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, TRUE));
}
}
}
/* void main()
{
object oMeldshaper = PRCGetSpellTargetObject();
int nEssentia = GetEssentiaInvested(oMeldshaper);
effect eLink = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(eLink), oMeldshaper, 9999.0);
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_WINTER_MASK), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_WINTER_MASK_TOUCH), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
if (GetIsMeldBound(oMeldshaper, MELD_TOTEM_AVATAR) == CHAKRA_THROAT) IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_WINTER_MASK_THROAT), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
if (GetIsMeldBound(oMeldshaper) == CHAKRA_TOTEM)
{
string sResRef = "prc_rdd_bite_";
int nSize = PRCGetCreatureSize(oMeldshaper);
sResRef += GetAffixForSize(nSize);
AddNaturalPrimaryWeapon(oMeldshaper, sResRef);
SetLocalString(oMeldshaper, "IncarnumPrimaryAttackB", sResRef);
int nDamage = EssentiaToD4(nEssentia);
// All natural attacks end up here
if (nEssentia)
{
DelayCommand(3.0, IPSafeAddItemProperty(GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oMeldshaper), ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_COLD, nDamage), 9999.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, TRUE));
}
}
} */