Fixed Expanded Incarnum Capacity II-V to require the previous feat as a prereq. Fixed bonus feats granted by soulmelds to be removed when rebinding.
138 lines
7.1 KiB
Plaintext
138 lines
7.1 KiB
Plaintext
/*
|
|
31/01/21 by Stratovarius
|
|
|
|
Astral Vambraces
|
|
Descriptors: None
|
|
Classes: Incarnate, soulborn
|
|
Chakra: Arms or hands
|
|
Saving Throw: None
|
|
|
|
You form vambraces from ectoplasm, and their shimmering silver color is highlighted with glints of azure blue.
|
|
|
|
Your astral vambraces infuse you with the fortitude of an astral construct, granting you damage reduction 2/magic.
|
|
|
|
Astral vambraces are not affected by dismiss ectoplasm.
|
|
|
|
Essentia: Every point of essentia you invest in your astral vambraces increases the damage reduction by 2.
|
|
|
|
Chakra Bind (Arms)
|
|
|
|
The ectoplasm fuses closely to your arms, encasing them in silver-blue ectoplasm.
|
|
|
|
You benefit from one special ability of your choice in the Astral Construct Menu A. You can select a different ability each time you bind the astral vambraces to your arms.
|
|
|
|
Your options are:
|
|
Buff: 5 temporary hit points
|
|
Celerity: Speed increased by 10 feet
|
|
Cleave: Cleave feat
|
|
Deflection: +1 Deflection AC
|
|
Improved Bull Rush: Improved Bull Rush feat
|
|
Mobility: Mobility feat
|
|
Power Attack: Power Attack feat
|
|
Resistance: Resistance 5/- to acid, cold, electricity, fire, or sonic (pick one).
|
|
|
|
Chakra Bind (Hands)
|
|
|
|
The vambraces extend down and cover your hands in ectoplasm.
|
|
|
|
You gain two slam attacks, which act as primary natural weapons. The slam attacks deal 1d4 points of damage if you are Small,
|
|
1d6 points of damage if you are Medium, or 1d8 points of damage if you are Large, plus your Strength bonus.
|
|
*/
|
|
//::////////////////////////////////////////////////////////
|
|
//::
|
|
//:: Updated by: Jaysyn
|
|
//:: Updated on: 2026-02-21 15:44:37
|
|
//::
|
|
//:: Double Chakra Bind support added
|
|
//::
|
|
//:: Updated on: 2026-05-01 12:04:32
|
|
//::
|
|
//:: Fixed Bonus feats hanging stay around after
|
|
//:: reshaping soulmelds.
|
|
//::
|
|
//::////////////////////////////////////////////////////////
|
|
#include "moi_inc_moifunc"
|
|
|
|
void main()
|
|
{
|
|
object oMeldshaper = PRCGetSpellTargetObject();
|
|
int nEssentia = GetEssentiaInvested(oMeldshaper);
|
|
int nBonus = (1 + nEssentia) * 2;
|
|
|
|
effect eLink = EffectDamageReduction(nBonus, DAMAGE_POWER_PLUS_ONE);
|
|
if (GetIsMeldBound(oMeldshaper) == CHAKRA_ARMS || GetIsMeldBound(oMeldshaper) == CHAKRA_DOUBLE_ARMS)
|
|
{
|
|
int nChoice = GetLocalInt(oMeldshaper, "AstralVambraces");
|
|
//FloatingTextStringOnCreature("Astral Vambrace Arms Chakra nChoice "+IntToString(nChoice), oMeldshaper, FALSE);
|
|
if (nChoice == 1) eLink = EffectLinkEffects(eLink, EffectTemporaryHitpoints(5));
|
|
//else if (nChoice == 2) Handled in prc_speed
|
|
else if (nChoice == 3) eLink = EffectLinkEffects(eLink, EffectBonusFeat(FEAT_CLEAVE));
|
|
else if (nChoice == 4) eLink = EffectLinkEffects(eLink, EffectACIncrease(1, AC_DEFLECTION_BONUS));
|
|
else if (nChoice == 5) eLink = EffectLinkEffects(eLink, EffectBonusFeat(FEAT_IMPROVED_BULLRUSH));
|
|
else if (nChoice == 6) eLink = EffectLinkEffects(eLink, EffectBonusFeat(FEAT_MOBILITY));
|
|
else if (nChoice == 7) eLink = EffectLinkEffects(eLink, EffectBonusFeat(FEAT_POWER_ATTACK));
|
|
else if (nChoice == 8) eLink = EffectLinkEffects(eLink, EffectDamageResistance(DAMAGE_TYPE_ACID, 5));
|
|
else if (nChoice == 9) eLink = EffectLinkEffects(eLink, EffectDamageResistance(DAMAGE_TYPE_COLD, 5));
|
|
else if (nChoice == 10) eLink = EffectLinkEffects(eLink, EffectDamageResistance(DAMAGE_TYPE_ELECTRICAL, 5));
|
|
else if (nChoice == 11) eLink = EffectLinkEffects(eLink, EffectDamageResistance(DAMAGE_TYPE_FIRE, 5));
|
|
else if (nChoice == 12) eLink = EffectLinkEffects(eLink, EffectDamageResistance(DAMAGE_TYPE_SONIC, 5));
|
|
}
|
|
|
|
// Tag the effect link for easy removal
|
|
eLink = TagEffect(eLink, "SOULMELD_ASTRAL_VAMBRACES_FEATS");
|
|
eLink = SupernaturalEffect(eLink);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oMeldshaper, 9999.0);
|
|
|
|
// Keep meld identification as item property
|
|
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_ASTRAL_VAMBRACES), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
|
if (GetIsMeldBound(oMeldshaper) == CHAKRA_HANDS || GetIsMeldBound(oMeldshaper) == CHAKRA_DOUBLE_HANDS)
|
|
{
|
|
string sResRef = "prc_hdarc_slam_";
|
|
int nSize = PRCGetCreatureSize(oMeldshaper);
|
|
// This is correct to get the right damage profile
|
|
sResRef += GetAffixForSize(nSize+1);
|
|
AddNaturalPrimaryWeapon(oMeldshaper, sResRef, 2);
|
|
SetLocalString(oMeldshaper, "IncarnumPrimaryAttackL", sResRef);
|
|
}
|
|
}
|
|
|
|
/* #include "moi_inc_moifunc"
|
|
|
|
void main()
|
|
{
|
|
object oMeldshaper = PRCGetSpellTargetObject();
|
|
int nEssentia = GetEssentiaInvested(oMeldshaper);
|
|
int nBonus = (1 + nEssentia) * 2;
|
|
|
|
effect eLink = EffectDamageReduction(nBonus, DAMAGE_POWER_PLUS_ONE);
|
|
if (GetIsMeldBound(oMeldshaper) == CHAKRA_ARMS || GetIsMeldBound(oMeldshaper) == CHAKRA_DOUBLE_ARMS)
|
|
{
|
|
int nChoice = GetLocalInt(oMeldshaper, "AstralVambraces");
|
|
//FloatingTextStringOnCreature("Astral Vambrace Arms Chakra nChoice "+IntToString(nChoice), oMeldshaper, FALSE);
|
|
if (nChoice == 1) eLink = EffectLinkEffects(eLink, EffectTemporaryHitpoints(5));
|
|
//else if (nChoice == 2) Handled in prc_speed
|
|
else if (nChoice == 3) IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_FEAT_CLEAVE), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
|
else if (nChoice == 4) eLink = EffectLinkEffects(eLink, EffectACIncrease(1, AC_DEFLECTION_BONUS));
|
|
else if (nChoice == 5) IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_FEAT_IMPROVED_BULL_RUSH), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
|
else if (nChoice == 6) IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_FEAT_MOBILITY), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
|
else if (nChoice == 7) IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_FEAT_POWERATTACK), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
|
else if (nChoice == 8) eLink = EffectLinkEffects(eLink, EffectDamageResistance(DAMAGE_TYPE_ACID, 5));
|
|
else if (nChoice == 9) eLink = EffectLinkEffects(eLink, EffectDamageResistance(DAMAGE_TYPE_COLD, 5));
|
|
else if (nChoice == 10) eLink = EffectLinkEffects(eLink, EffectDamageResistance(DAMAGE_TYPE_ELECTRICAL, 5));
|
|
else if (nChoice == 11) eLink = EffectLinkEffects(eLink, EffectDamageResistance(DAMAGE_TYPE_FIRE, 5));
|
|
else if (nChoice == 12) eLink = EffectLinkEffects(eLink, EffectDamageResistance(DAMAGE_TYPE_SONIC, 5));
|
|
}
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(eLink), oMeldshaper, 9999.0);
|
|
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_ASTRAL_VAMBRACES), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
|
if (GetIsMeldBound(oMeldshaper) == CHAKRA_HANDS || GetIsMeldBound(oMeldshaper) == CHAKRA_DOUBLE_HANDS)
|
|
{
|
|
string sResRef = "prc_hdarc_slam_";
|
|
int nSize = PRCGetCreatureSize(oMeldshaper);
|
|
// This is correct to get the right damage profile
|
|
sResRef += GetAffixForSize(nSize+1);
|
|
AddNaturalPrimaryWeapon(oMeldshaper, sResRef, 2);
|
|
SetLocalString(oMeldshaper, "IncarnumPrimaryAttackL", sResRef);
|
|
}
|
|
} */ |