May Day Update
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.
This commit is contained in:
@@ -8947,11 +8947,11 @@
|
||||
8943 DoubleChakra_Heart 16838122 16838125 ife_overchannel **** **** **** **** **** **** **** **** **** **** 0 0 1 **** **** **** **** 1 **** 53 **** **** **** **** **** **** **** **** **** **** FEAT_COMBAT_CASTING 4 **** 6 **** **** **** 0 1
|
||||
8944 DoubleChakra_Soul 16838123 16838125 ife_overchannel **** **** **** **** **** **** **** **** **** **** 0 0 1 **** **** **** **** 1 **** 53 **** **** **** **** **** **** **** **** **** **** FEAT_COMBAT_CASTING 4 **** 6 **** **** **** 0 1
|
||||
8945 DoubleChakra_Totem 16838124 16838125 ife_overchannel **** **** **** **** **** **** **** **** **** **** 0 0 1 **** **** **** **** 1 **** 53 **** **** **** **** **** **** **** **** **** **** FEAT_COMBAT_CASTING 4 **** 6 **** **** **** 0 1
|
||||
8946 ExpandedSoulmeldCapacity_1 16838126 16838131 ife_X2EpicWill **** **** **** **** **** 15 **** **** **** **** 0 0 1 **** **** **** **** 1 **** 53 **** **** **** **** **** **** **** **** **** **** FEAT_EXPANDED_SOULMELD_CAPACITY_1 4 **** **** **** **** **** 0 1
|
||||
8947 ExpandedSoulmeldCapacity_2 16838127 16838131 ife_X2EpicWill **** **** **** **** **** 15 **** **** **** **** 0 0 1 **** **** **** **** 1 **** 53 **** **** **** **** **** **** **** **** **** **** FEAT_EXPANDED_SOULMELD_CAPACITY_2 4 **** **** **** **** **** 0 1
|
||||
8948 ExpandedSoulmeldCapacity_3 16838128 16838131 ife_X2EpicWill **** **** **** **** **** 15 **** **** **** **** 0 0 1 **** **** **** **** 1 **** 53 **** **** **** **** **** **** **** **** **** **** FEAT_EXPANDED_SOULMELD_CAPACITY_3 4 **** **** **** **** **** 0 1
|
||||
8949 ExpandedSoulmeldCapacity_4 16838129 16838131 ife_X2EpicWill **** **** **** **** **** 15 **** **** **** **** 0 0 1 **** **** **** **** 1 **** 53 **** **** **** **** **** **** **** **** **** **** FEAT_EXPANDED_SOULMELD_CAPACITY_4 4 **** **** **** **** **** 0 1
|
||||
8950 ExpandedSoulmeldCapacity_5 16838130 16838131 ife_X2EpicWill **** **** **** **** **** 15 **** **** **** **** 0 0 1 **** **** **** **** 1 **** 53 **** **** **** **** **** **** **** **** **** **** FEAT_EXPANDED_SOULMELD_CAPACITY_5 4 **** **** **** **** **** 0 1
|
||||
8946 ExpandedSoulmeldCapacity_1 16838126 16838131 ife_X2EpicWill **** **** **** **** **** 15 **** **** **** **** 0 0 1 **** **** **** 8947 1 **** 53 **** **** **** **** **** **** **** **** **** **** FEAT_EXPANDED_SOULMELD_CAPACITY_1 4 **** **** **** **** **** 0 1
|
||||
8947 ExpandedSoulmeldCapacity_2 16838127 16838131 ife_X2EpicWill **** **** **** **** **** 15 **** **** 8946 **** 0 0 1 **** **** **** 8948 1 **** 53 **** **** **** **** **** **** **** **** **** **** FEAT_EXPANDED_SOULMELD_CAPACITY_2 4 **** **** **** **** **** 0 1
|
||||
8948 ExpandedSoulmeldCapacity_3 16838128 16838131 ife_X2EpicWill **** **** **** **** **** 15 **** **** 8947 **** 0 0 1 **** **** **** 8949 1 **** 53 **** **** **** **** **** **** **** **** **** **** FEAT_EXPANDED_SOULMELD_CAPACITY_3 4 **** **** **** **** **** 0 1
|
||||
8949 ExpandedSoulmeldCapacity_4 16838129 16838131 ife_X2EpicWill **** **** **** **** **** 15 **** **** 8948 **** 0 0 1 **** **** **** 8950 1 **** 53 **** **** **** **** **** **** **** **** **** **** FEAT_EXPANDED_SOULMELD_CAPACITY_4 4 **** **** **** **** **** 0 1
|
||||
8950 ExpandedSoulmeldCapacity_5 16838130 16838131 ife_X2EpicWill **** **** **** **** **** 15 **** **** 8949 **** 0 0 1 **** **** **** **** 1 **** 53 **** **** **** **** **** **** **** **** **** **** FEAT_EXPANDED_SOULMELD_CAPACITY_5 4 **** **** **** **** **** 0 1
|
||||
8951 BlademeldShout 16838142 16838143 ir_GenHowl **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 18646 **** 1 -1 **** 1 **** **** **** **** **** **** **** **** **** FEAT_SUDDEN_EMPOWER 5 **** **** **** **** **** 0 1
|
||||
8952 RebindBlademeld 16838140 16838141 ife_X1HTym **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 18645 **** 1 10 **** 1 **** **** **** **** **** **** **** **** **** FEAT_SUDDEN_EMPOWER 5 **** **** **** **** **** 0 1
|
||||
8953 Meldshield_Invest 16838148 16838150 ife_X1ADAbj **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 18633 **** 1 -1 **** 1 **** **** **** **** **** **** **** **** **** FEAT_SUDDEN_EMPOWER 5 **** **** **** **** **** 0 0
|
||||
|
||||
@@ -15,10 +15,118 @@
|
||||
*/
|
||||
//:://////////////////////////////////////////////
|
||||
//:://////////////////////////////////////////////
|
||||
|
||||
#include "moi_meld_const"
|
||||
//////////////////////////////////////////////////
|
||||
/* Function prototypes */
|
||||
//////////////////////////////////////////////////
|
||||
/**
|
||||
* @brief Retrieves the effect tag associated with a specific soulmeld.
|
||||
*
|
||||
* Maps a soulmeld identifier to its corresponding effect tag string used
|
||||
* for applying or removing feat-granting effects tied to that soulmeld.
|
||||
*
|
||||
* @param nMeldId The integer identifier of the soulmeld (e.g., MELD_FROST_HELM).
|
||||
*
|
||||
* @return A string representing the effect tag associated with the given
|
||||
* soulmeld, or an empty string ("") if the soulmeld ID is not recognized.
|
||||
*
|
||||
* @note The returned tag is intended for use with effect tagging systems,
|
||||
* such as applying or removing effects via GetEffectTag().
|
||||
*
|
||||
* @warning If a new soulmeld is added and not included in this switch,
|
||||
* this function will return an empty string, which may cause
|
||||
* dependent systems to fail silently.
|
||||
*/
|
||||
string GetSoulmeldTag(int nMeldId)
|
||||
{
|
||||
if (nMeldId == MELD_FROST_HELM) return "SOULMELD_FROST_HELM_FEATS";
|
||||
else if (nMeldId == MELD_IMPULSE_BOOTS) return "SOULMELD_IMPULSE_BOOTS_FEATS";
|
||||
else if (nMeldId == MELD_PHOENIX_BELT) return "SOULMELD_PHOENIX_BELT_FEATS";
|
||||
else if (nMeldId == MELD_WORMTAIL_BELT) return "SOULMELD_WORMTAIL_BELT_FEATS";
|
||||
else if (nMeldId == MELD_APPARITION_RIBBON) return "SOULMELD_APPARITION_RIBBON_FEATS";
|
||||
else if (nMeldId == MELD_MANTICORE_BELT) return "SOULMELD_MANTICORE_BELT_FEATS";
|
||||
else if (nMeldId == MELD_THEFT_GLOVES) return "SOULMELD_THEFT_GLOVES_FEATS";
|
||||
else if (nMeldId == MELD_BLOODTALONS) return "SOULMELD_BLOODTALONS_FEATS";
|
||||
else if (nMeldId == MELD_LAMIA_BELT) return "SOULMELD_LAMIA_BELT_FEATS";
|
||||
else if (nMeldId == MELD_CRYSTAL_HELM) return "SOULMELD_CRYSTAL_HELM_FEATS";
|
||||
else if (nMeldId == MELD_BASILISK_MASK) return "SOULMELD_BASILISK_MASK_FEATS";
|
||||
else if (nMeldId == MELD_ASTRAL_VAMBRACES) return "SOULMELD_ASTRAL_VAMBRACES_FEATS";
|
||||
else if (nMeldId == MELD_MAULING_GAUNTLETS) return "SOULMELD_MAULING_GAUNTLETS_FEATS";
|
||||
else if (nMeldId == MELD_DRAGONFIRE_MASK) return "SOULMELD_DRAGONFIRE_MASK_FEATS";
|
||||
else return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Removes all effects from a creature that match a specific soulmeld tag.
|
||||
*
|
||||
* Iterates through all active effects on the specified object and removes any
|
||||
* effect whose tag matches the provided soulmeld tag. This is typically used
|
||||
* to strip feat-granting effects associated with a single soulmeld.
|
||||
*
|
||||
* @param oPC The creature (typically a player character) from which effects
|
||||
* will be removed.
|
||||
* @param sMeldTag The effect tag identifying the soulmeld-related feat effects
|
||||
* to remove.
|
||||
*
|
||||
* @note This function performs an exact string comparison using GetEffectTag().
|
||||
*
|
||||
* @warning Passing an empty string ("") as sMeldTag may result in unintended
|
||||
* behavior if any effects are tagged with an empty string.
|
||||
*/
|
||||
void RemoveSpecificSoulmeldFeats(object oPC, string sMeldTag)
|
||||
{
|
||||
effect eEffect = GetFirstEffect(oPC);
|
||||
while(GetIsEffectValid(eEffect))
|
||||
{
|
||||
if(GetEffectTag(eEffect) == sMeldTag)
|
||||
RemoveEffect(oPC, eEffect);
|
||||
|
||||
eEffect = GetNextEffect(oPC);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Removes all soulmeld-related feat effects from a creature.
|
||||
*
|
||||
* Iterates through all active effects on the specified object and removes any
|
||||
* effects that match known soulmeld feat tags. These effects are assumed to
|
||||
* have been applied to grant feats associated with specific soulmelds.
|
||||
*
|
||||
* @param oPC The creature (typically a player character) from which soulmeld
|
||||
* feat effects will be removed.
|
||||
*
|
||||
* @note This function relies on effect tags to identify soulmeld feat effects.
|
||||
* Only effects with explicitly listed tags will be removed.
|
||||
*
|
||||
* @warning Any soulmeld feat effect not included in the tag list will remain
|
||||
* active. Ensure new soulmelds are added here if they apply feat effects.
|
||||
*/
|
||||
void RemoveSoulmeldFeatEffects(object oPC)
|
||||
{
|
||||
effect eEffect = GetFirstEffect(oPC);
|
||||
while(GetIsEffectValid(eEffect))
|
||||
{
|
||||
string sTag = GetEffectTag(eEffect);
|
||||
if(sTag == "SOULMELD_FROST_HELM_FEATS" ||
|
||||
sTag == "SOULMELD_IMPULSE_BOOTS_FEATS" ||
|
||||
sTag == "SOULMELD_PHOENIX_BELT_FEATS" ||
|
||||
sTag == "SOULMELD_WORMTAIL_BELT_FEATS" ||
|
||||
sTag == "SOULMELD_APPARITION_RIBBON_FEATS" ||
|
||||
sTag == "SOULMELD_MANTICORE_BELT_FEATS" ||
|
||||
sTag == "SOULMELD_THEFT_GLOVES_FEATS" ||
|
||||
sTag == "SOULMELD_BLOODTALONS_FEATS" ||
|
||||
sTag == "SOULMELD_LAMIA_BELT_FEATS" ||
|
||||
sTag == "SOULMELD_CRYSTAL_HELM_FEATS" ||
|
||||
sTag == "SOULMELD_BASILISK_MASK_FEATS" ||
|
||||
sTag == "SOULMELD_ASTRAL_VAMBRACES_FEATS" ||
|
||||
sTag == "SOULMELD_MAULING_GAUNTLETS_FEATS" ||
|
||||
sTag == "SOULMELD_DRAGONFIRE_MASK_FEATS")
|
||||
{
|
||||
RemoveEffect(oPC, eEffect);
|
||||
}
|
||||
eEffect = GetNextEffect(oPC);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines the given creature's Meldshaper level.
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
int RebindFeatToChakra(int nSpellId)
|
||||
{
|
||||
int nReturn = -1;
|
||||
if (nSpellId == 18977) nReturn = CHAKRA_CROWN;
|
||||
if (nSpellId == 18977) nReturn = CHAKRA_CROWN;
|
||||
else if (nSpellId == 18978) nReturn = CHAKRA_FEET ;
|
||||
else if (nSpellId == 18979) nReturn = CHAKRA_HANDS ;
|
||||
else if (nSpellId == 18980) nReturn = CHAKRA_ARMS ;
|
||||
@@ -20,6 +20,32 @@ int RebindFeatToChakra(int nSpellId)
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
object oMeldshaper = OBJECT_SELF;
|
||||
int nClass = GetPrimaryIncarnumClass(oMeldshaper);
|
||||
int nChakra = RebindFeatToChakra(GetSpellId());
|
||||
int nMeld = GetIsChakraBound(oMeldshaper, nChakra);
|
||||
|
||||
// Get the swap target
|
||||
int nTest = GetIsChakraUsed(oMeldshaper, nChakra, nClass);
|
||||
int nTest2 = GetIsChakraUsed(oMeldshaper, nChakra+11, nClass);
|
||||
int nSwap = nTest2;
|
||||
if (nMeld == nTest2) nSwap = nTest;
|
||||
|
||||
// Clean only the specific soulmelds being reconfigured
|
||||
RemoveSpecificSoulmeldFeats(oMeldshaper, GetSoulmeldTag(nMeld));
|
||||
RemoveSpecificSoulmeldFeats(oMeldshaper, GetSoulmeldTag(nSwap));
|
||||
|
||||
// Unbind the meld, then bind it
|
||||
DeleteLocalInt(oMeldshaper, "BoundMeld"+IntToString(nChakra));
|
||||
BindMeldToChakra(oMeldshaper, nSwap, nChakra, nClass);
|
||||
|
||||
// Shape them both
|
||||
ShapeSoulmeld(oMeldshaper, nMeld);
|
||||
ShapeSoulmeld(oMeldshaper, nSwap);
|
||||
}
|
||||
|
||||
/* void main()
|
||||
{
|
||||
object oMeldshaper = OBJECT_SELF;
|
||||
int nClass = GetPrimaryIncarnumClass(oMeldshaper);
|
||||
@@ -40,10 +66,10 @@ void main()
|
||||
|
||||
// Shape them both
|
||||
ShapeSoulmeld(oMeldshaper, nMeld);
|
||||
ShapeSoulmeld(oMeldshaper, nSwap);
|
||||
ShapeSoulmeld(oMeldshaper, nSwap); */
|
||||
|
||||
/* if (GetLocalInt(oMeldshaper, "PerfectMeldshaper")) return;
|
||||
AssignCommand(oMeldshaper, ClearAllActions(TRUE));
|
||||
SetLocalInt(oMeldshaper, "RebindSoulmeldCnv", GetSpellId());
|
||||
StartDynamicConversation("moi_rebindcnv", oMeldshaper, DYNCONV_EXIT_NOT_ALLOWED, FALSE, TRUE, oMeldshaper); */
|
||||
}
|
||||
StartDynamicConversation("moi_rebindcnv", oMeldshaper, DYNCONV_EXIT_NOT_ALLOWED, FALSE, TRUE, oMeldshaper);
|
||||
}*/
|
||||
|
||||
@@ -1,6 +1,25 @@
|
||||
#include "moi_inc_moifunc"
|
||||
#include "inc_dynconv"
|
||||
|
||||
// Stage constant for Rapid Meldshaping
|
||||
const int STAGE_SELECT_UNSHAPE_MELD = 3;
|
||||
|
||||
void main()
|
||||
{
|
||||
object oMeldshaper = OBJECT_SELF;
|
||||
if (GetLocalInt(oMeldshaper, "PerfectMeldshaper")) return;
|
||||
AssignCommand(oMeldshaper, ClearAllActions(TRUE));
|
||||
SetLocalInt(oMeldshaper, "RapidMeldshaping", GetSpellId());
|
||||
|
||||
// Set the initial stage for unshape selection
|
||||
SetStage(STAGE_SELECT_UNSHAPE_MELD, oMeldshaper);
|
||||
|
||||
StartDynamicConversation("moi_inc_rpdcnv", oMeldshaper, DYNCONV_EXIT_NOT_ALLOWED, FALSE, TRUE, oMeldshaper);
|
||||
}
|
||||
|
||||
/* #include "moi_inc_moifunc"
|
||||
#include "inc_dynconv"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oMeldshaper = OBJECT_SELF;
|
||||
@@ -8,4 +27,4 @@ void main()
|
||||
AssignCommand(oMeldshaper, ClearAllActions(TRUE));
|
||||
SetLocalInt(oMeldshaper, "RapidMeldshaping", GetSpellId());
|
||||
StartDynamicConversation("moi_inc_rpdcnv", oMeldshaper, DYNCONV_EXIT_NOT_ALLOWED, FALSE, TRUE, oMeldshaper);
|
||||
}
|
||||
} */
|
||||
|
||||
@@ -313,12 +313,20 @@ void main()
|
||||
}
|
||||
else if(nStage == STAGE_CONFIRM_UNSHAPE_SELECTION)
|
||||
{
|
||||
if (nChoice)
|
||||
/* if (nChoice)
|
||||
{
|
||||
PRCRemoveSpellEffects(GetIsChakraUsed(oMeldshaper, GetLocalInt(oMeldshaper, "nChakra"), nClass), oMeldshaper, oMeldshaper);
|
||||
PRCRemoveSpellEffects(GetIsChakraUsed(oMeldshaper, GetLocalInt(oMeldshaper, "nChakra"), nClass), oMeldshaper, oMeldshaper);
|
||||
DeleteLocalInt(oMeldshaper, "nChakra");
|
||||
nStage = STAGE_SELECT_CHAKRA;
|
||||
}
|
||||
} */
|
||||
if (nChoice)
|
||||
{
|
||||
int nMeldId = GetIsChakraUsed(oMeldshaper, GetLocalInt(oMeldshaper, "nChakra"), nClass);
|
||||
RemoveSpecificSoulmeldFeats(oMeldshaper, GetSoulmeldTag(nMeldId));
|
||||
PRCRemoveSpellEffects(nMeldId, oMeldshaper, oMeldshaper);
|
||||
DeleteLocalInt(oMeldshaper, "nChakra");
|
||||
nStage = STAGE_SELECT_CHAKRA;
|
||||
}
|
||||
else
|
||||
{
|
||||
nStage = STAGE_SELECT_UNSHAPE_MELD;
|
||||
|
||||
@@ -29,9 +29,50 @@ it was activated. Each day, you can spend a total number of rounds incorporeal e
|
||||
//::
|
||||
//:: 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 nMeldId = PRCGetSpellId();
|
||||
int nEssentia = GetEssentiaInvested(oMeldshaper);
|
||||
|
||||
effect eLink;
|
||||
|
||||
// Add Blind-Fight as effect
|
||||
eLink = EffectBonusFeat(FEAT_BLIND_FIGHT);
|
||||
|
||||
if (nEssentia) eLink = EffectLinkEffects(eLink, VersusRacialTypeEffect(EffectDamageIncrease(IPGetDamageBonusConstantFromNumber(nEssentia)), RACIAL_TYPE_UNDEAD));
|
||||
|
||||
// Tag the effect link for easy removal
|
||||
eLink = TagEffect(eLink, "SOULMELD_APPARITION_RIBBON_FEATS");
|
||||
eLink = SupernaturalEffect(eLink);
|
||||
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oMeldshaper, 9999.0);
|
||||
|
||||
// Throat bind (incorporeal) <20> 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_APPARITION_RIBBON_THROAT), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
}
|
||||
|
||||
// Keep meld identification as item property
|
||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_APPARITION_RIBBON), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
}
|
||||
|
||||
/* #include "moi_inc_moifunc"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oMeldshaper = PRCGetSpellTargetObject();
|
||||
@@ -56,7 +97,7 @@ void main()
|
||||
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(eLink), oMeldshaper, 9999.0);
|
||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_APPARITION_RIBBON), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
}
|
||||
} */
|
||||
|
||||
/* void main()
|
||||
{
|
||||
|
||||
@@ -45,9 +45,60 @@ You gain two slam attacks, which act as primary natural weapons. The slam attack
|
||||
//::
|
||||
//:: 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();
|
||||
@@ -84,4 +135,4 @@ void main()
|
||||
AddNaturalPrimaryWeapon(oMeldshaper, sResRef, 2);
|
||||
SetLocalString(oMeldshaper, "IncarnumPrimaryAttackL", sResRef);
|
||||
}
|
||||
}
|
||||
} */
|
||||
@@ -34,9 +34,58 @@ By directing your gaze on a creature within 30 feet, you can temporarily turn th
|
||||
//:: Double Totem Bind support added
|
||||
//:: 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 nMeldId = PRCGetSpellId();
|
||||
int nEssentia = GetEssentiaInvested(oMeldshaper);
|
||||
effect eLink = EffectUltravision();
|
||||
|
||||
if (nEssentia) eLink = EffectLinkEffects(eLink, EffectSkillIncrease(SKILL_SPOT, nEssentia * 2));
|
||||
|
||||
// Check for Brow bind and add Blind-Fight if bound
|
||||
int nBoundToBrow = FALSE;
|
||||
if (GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_BROW)) == nMeldId ||
|
||||
GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_DOUBLE_BROW)) == nMeldId)
|
||||
nBoundToBrow = TRUE;
|
||||
|
||||
if (nBoundToBrow)
|
||||
{
|
||||
eLink = EffectLinkEffects(eLink, EffectBonusFeat(FEAT_BLIND_FIGHT));
|
||||
}
|
||||
|
||||
// Tag the effect link for easy removal
|
||||
eLink = TagEffect(eLink, "SOULMELD_BASILISK_MASK_FEATS");
|
||||
eLink = SupernaturalEffect(eLink);
|
||||
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oMeldshaper, 9999.0);
|
||||
|
||||
// Keep meld identification as item properties
|
||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_BASILISK_MASK), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
|
||||
// Totem bind (petrifying gaze) <20> 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)
|
||||
{
|
||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_BASILISK_MASK_TOTEM), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* #include "moi_inc_moifunc"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oMeldshaper = PRCGetSpellTargetObject();
|
||||
@@ -66,7 +115,7 @@ void main()
|
||||
|
||||
if (nBoundToTotem)
|
||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_BASILISK_MASK_TOTEM), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
}
|
||||
} */
|
||||
|
||||
/* void main()
|
||||
{
|
||||
|
||||
@@ -34,6 +34,11 @@ You can make two claw attacks that each deal 1d4 points of damage plus your Stre
|
||||
//:: Double Chakra Bind support added
|
||||
//:: Double Totem bind support added
|
||||
//::
|
||||
//:: Updated on: 2026-05-01 12:04:32
|
||||
//::
|
||||
//:: Fixed Bonus feats hanging stay around after
|
||||
//:: reshaping soulmelds.
|
||||
//::
|
||||
//::////////////////////////////////////////////////////////
|
||||
#include "moi_inc_moifunc"
|
||||
|
||||
@@ -47,6 +52,71 @@ void BloodtalonsTotem(object oMeldshaper, int nEssentia)
|
||||
AddEventScript(GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oMeldshaper), EVENT_ITEM_ONHIT, "moi_events", TRUE, FALSE);
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
object oMeldshaper = PRCGetSpellTargetObject();
|
||||
int nMeldId = PRCGetSpellId();
|
||||
int nEssentia = GetEssentiaInvested(oMeldshaper);
|
||||
effect eLink = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
|
||||
|
||||
if (nEssentia) eLink = EffectLinkEffects(eLink, EffectSkillIncrease(SKILL_SPOT, nEssentia*2));
|
||||
|
||||
// Add Diehard as effect
|
||||
eLink = EffectLinkEffects(eLink, EffectBonusFeat(FEAT_DIEHARD));
|
||||
|
||||
// Hands bind (Weapon Finesse) <20> check regular or double Hands
|
||||
int nBoundToHands = FALSE;
|
||||
if (GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_HANDS)) == nMeldId ||
|
||||
GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_DOUBLE_HANDS)) == nMeldId)
|
||||
nBoundToHands = TRUE;
|
||||
|
||||
if (nBoundToHands)
|
||||
{
|
||||
// Add Weapon Finesse as effect
|
||||
eLink = EffectLinkEffects(eLink, EffectBonusFeat(FEAT_WEAPON_FINESSE));
|
||||
}
|
||||
|
||||
// Tag the effect link for easy removal
|
||||
eLink = TagEffect(eLink, "SOULMELD_BLOODTALONS_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_BLOODTALONS), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
|
||||
// Totem bind (claws) <20> 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_claw_1d6l_";
|
||||
int nSize = PRCGetCreatureSize(oMeldshaper);
|
||||
sResRef += GetAffixForSize(nSize);
|
||||
AddNaturalPrimaryWeapon(oMeldshaper, sResRef, 2);
|
||||
SetLocalString(oMeldshaper, "IncarnumPrimaryAttackL", sResRef);
|
||||
SetLocalInt(oMeldshaper, "ClearEventTotem", TRUE);
|
||||
|
||||
// All natural attacks end up here
|
||||
DelayCommand(3.0, BloodtalonsTotem(oMeldshaper, nEssentia));
|
||||
}
|
||||
}
|
||||
|
||||
/* #include "moi_inc_moifunc"
|
||||
|
||||
void BloodtalonsTotem(object oMeldshaper, int nEssentia)
|
||||
{
|
||||
IPSafeAddItemProperty(GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oMeldshaper), ItemPropertyAttackBonus(nEssentia), 99999.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, TRUE);
|
||||
IPSafeAddItemProperty(GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oMeldshaper), ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1), 99999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
AddEventScript(GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oMeldshaper), EVENT_ITEM_ONHIT, "moi_events", TRUE, FALSE);
|
||||
IPSafeAddItemProperty(GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oMeldshaper), ItemPropertyAttackBonus(nEssentia), 99999.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, TRUE);
|
||||
IPSafeAddItemProperty(GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oMeldshaper), ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1), 99999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
AddEventScript(GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oMeldshaper), EVENT_ITEM_ONHIT, "moi_events", TRUE, FALSE);
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
object oMeldshaper = PRCGetSpellTargetObject();
|
||||
@@ -87,7 +157,7 @@ void main()
|
||||
// All natural attacks end up here
|
||||
DelayCommand(3.0, BloodtalonsTotem(oMeldshaper, nEssentia));
|
||||
}
|
||||
}
|
||||
} */
|
||||
|
||||
/* void main()
|
||||
{
|
||||
|
||||
@@ -32,9 +32,44 @@ Your melee attacks gain the force descriptor, making them useful against incorpo
|
||||
//:: Double Chakra Bind support added
|
||||
//:; Fixed broken Brow bind
|
||||
//::
|
||||
//:: 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 nMeldId = PRCGetSpellId();
|
||||
|
||||
effect eLink = EffectSavingThrowIncrease(SAVING_THROW_WILL, 2, SAVING_THROW_TYPE_MIND_SPELLS);
|
||||
|
||||
if (nEssentia) eLink = EffectLinkEffects(eLink, EffectACIncrease(nEssentia, AC_DEFLECTION_BONUS));
|
||||
|
||||
// Check for Brow bind and add Blind-Fight if bound
|
||||
if (GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_BROW)) == nMeldId ||
|
||||
GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_DOUBLE_BROW)) == nMeldId)
|
||||
{
|
||||
eLink = EffectLinkEffects(eLink, EffectBonusFeat(FEAT_BLIND_FIGHT));
|
||||
}
|
||||
|
||||
// Tag the effect link for easy removal
|
||||
eLink = TagEffect(eLink, "SOULMELD_CRYSTAL_HELM_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_CRYSTAL_HELM), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
}
|
||||
|
||||
|
||||
/* #include "moi_inc_moifunc"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oMeldshaper = PRCGetSpellTargetObject();
|
||||
@@ -54,4 +89,4 @@ void main()
|
||||
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(eLink), oMeldshaper, 9999.0);
|
||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_CRYSTAL_HELM), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
}
|
||||
} */
|
||||
@@ -40,9 +40,63 @@ You can emanate an aura of frightful presence once per round as a swift action.
|
||||
//:: Double Totem Bind support added
|
||||
//:: 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 nMeldId = PRCGetSpellId();
|
||||
int nEssentia = GetEssentiaInvested(oMeldshaper);
|
||||
|
||||
effect eLink = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
|
||||
if (nEssentia) eLink = EffectLinkEffects(eLink, EffectSkillIncrease(SKILL_SPOT, 2 * nEssentia));
|
||||
|
||||
eLink = EffectLinkEffects(eLink, EffectBonusFeat(FEAT_LOWLIGHTVISION));
|
||||
|
||||
// Brow bind (darkvision) <20> check regular or double Brow
|
||||
int nBoundToBrow = FALSE;
|
||||
if (GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_BROW)) == nMeldId ||
|
||||
GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_DOUBLE_BROW)) == nMeldId)
|
||||
nBoundToBrow = TRUE;
|
||||
|
||||
if (nBoundToBrow) eLink = EffectLinkEffects(eLink, EffectUltravision());
|
||||
|
||||
// Tag the effect link for easy removal
|
||||
eLink = TagEffect(eLink, "SOULMELD_DRAGONFIRE_MASK_FEATS");
|
||||
eLink = SupernaturalEffect(eLink);
|
||||
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oMeldshaper, 9999.0);
|
||||
|
||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_DRAGONFIRE_MASK), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
|
||||
// Totem bind (frightful presence) <20> 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)
|
||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_DRAGONFIRE_MASK_TOTEM), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
|
||||
// Throat bind (breath weapon) <20> 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_DRAGONFIRE_MASK_THROAT), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
}
|
||||
|
||||
|
||||
/* #include "moi_inc_moifunc"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oMeldshaper = PRCGetSpellTargetObject();
|
||||
@@ -82,7 +136,7 @@ void main()
|
||||
if (nBoundToThroat)
|
||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_DRAGONFIRE_MASK_THROAT), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/* void main()
|
||||
|
||||
@@ -34,9 +34,61 @@ As a standard action, you can produce a trilling sound that stuns opponents with
|
||||
//:: Double Chakra Bind support added
|
||||
//:: Double Totem 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 nMeldId = PRCGetSpellId();
|
||||
int nEssentia = GetEssentiaInvested(oMeldshaper, MELD_FROST_HELM);
|
||||
effect eLink = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
|
||||
|
||||
if (nEssentia) eLink = EffectLinkEffects(eLink, EffectDamageResistance(DAMAGE_TYPE_COLD, nEssentia * 5));
|
||||
|
||||
// Add Cold Endurance as tagged effect
|
||||
eLink = EffectLinkEffects(eLink, EffectBonusFeat(IP_CONST_FEAT_COLD_ENDURANCE));
|
||||
|
||||
// Tag the entire effect link for easy removal
|
||||
eLink = TagEffect(eLink, "SOULMELD_FROST_HELM_FEATS");
|
||||
eLink = SupernaturalEffect(eLink);
|
||||
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oMeldshaper, 9999.0);
|
||||
|
||||
// Keep meld identification as item properties
|
||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_FROST_HELM), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
|
||||
// Crown bind (cold ray)
|
||||
int nBoundToCrown = FALSE;
|
||||
if (GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_CROWN)) == nMeldId ||
|
||||
GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_DOUBLE_CROWN)) == nMeldId)
|
||||
nBoundToCrown = TRUE;
|
||||
|
||||
if (nBoundToCrown)
|
||||
{
|
||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_FROST_HELM_CROWN), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
}
|
||||
|
||||
// Totem bind (stun)
|
||||
int nBoundToTotem = FALSE;
|
||||
if (GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_TOTEM)) == nMeldId ||
|
||||
GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_DOUBLE_TOTEM)) == nMeldId)
|
||||
nBoundToTotem = TRUE;
|
||||
|
||||
if (nBoundToTotem)
|
||||
{
|
||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_FROST_HELM_TOTEM), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* #include "moi_inc_moifunc"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oMeldshaper = PRCGetSpellTargetObject();
|
||||
@@ -71,7 +123,7 @@ void main()
|
||||
{
|
||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_FROST_HELM_TOTEM), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
}
|
||||
}
|
||||
} */
|
||||
|
||||
/* void main()
|
||||
{
|
||||
|
||||
@@ -27,9 +27,42 @@ You gain the evasion ability.
|
||||
//::
|
||||
//:: 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);
|
||||
effect eLink = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
|
||||
|
||||
if (nEssentia) eLink = EffectLinkEffects(eLink, EffectSavingThrowIncrease(SAVING_THROW_REFLEX, nEssentia));
|
||||
|
||||
// Add Uncanny Dodge as effect
|
||||
eLink = EffectLinkEffects(eLink, EffectBonusFeat(FEAT_UNCANNY_DODGE_1));
|
||||
|
||||
// Check for Feet bind and add Evasion if bound
|
||||
if (GetIsMeldBound(oMeldshaper) == CHAKRA_FEET || GetIsMeldBound(oMeldshaper) == CHAKRA_DOUBLE_FEET)
|
||||
eLink = EffectLinkEffects(eLink, EffectBonusFeat(FEAT_EVASION));
|
||||
|
||||
// Tag the effect link for easy removal
|
||||
eLink = TagEffect(eLink, "SOULMELD_IMPULSE_BOOTS_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_IMPULSE_BOOTS), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
}
|
||||
|
||||
|
||||
/* #include "moi_inc_moifunc"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oMeldshaper = PRCGetSpellTargetObject();
|
||||
@@ -44,4 +77,4 @@ void main()
|
||||
|
||||
if (GetIsMeldBound(oMeldshaper) == CHAKRA_FEET || GetIsMeldBound(oMeldshaper) == CHAKRA_DOUBLE_FEET)
|
||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_FEAT_EVASION), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
}
|
||||
} */
|
||||
@@ -34,9 +34,63 @@ The lower part of your body below your lamia belt takes on the shape of a lion,
|
||||
//:: Double Totem Bind support added
|
||||
//:: 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 nMeldId = PRCGetSpellId();
|
||||
int nEssentia = GetEssentiaInvested(oMeldshaper);
|
||||
int nBonus = 4 + (nEssentia * 2);
|
||||
effect eLink = EffectLinkEffects(EffectSkillIncrease(SKILL_HIDE, nBonus), EffectSkillIncrease(SKILL_BLUFF, nBonus));
|
||||
|
||||
// Waist bind (speed + Spring Attack) <20> check regular or double Waist
|
||||
int nBoundToWaist = FALSE;
|
||||
if (GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_WAIST)) == nMeldId ||
|
||||
GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_DOUBLE_WAIST)) == nMeldId)
|
||||
nBoundToWaist = TRUE;
|
||||
|
||||
if (nBoundToWaist)
|
||||
{
|
||||
// Add Spring Attack as effect using FEAT_* constant
|
||||
eLink = EffectLinkEffects(eLink, EffectBonusFeat(FEAT_SPRING_ATTACK));
|
||||
SetLocalInt(oMeldshaper, "LamiaBeltSpeed", TRUE);
|
||||
}
|
||||
|
||||
// Tag the effect link for easy removal
|
||||
eLink = TagEffect(eLink, "SOULMELD_LAMIA_BELT_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_LAMIA_BELT), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
|
||||
// Totem bind (claws) <20> 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_claw_1d6l_";
|
||||
int nSize = PRCGetCreatureSize(oMeldshaper);
|
||||
sResRef += GetAffixForSize(nSize);
|
||||
AddNaturalSecondaryWeapon(oMeldshaper, sResRef, 2);
|
||||
SetLocalString(oMeldshaper, "IncarnumSecondaryAttackL", sResRef);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* #include "moi_inc_moifunc"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oMeldshaper = PRCGetSpellTargetObject();
|
||||
@@ -74,7 +128,7 @@ void main()
|
||||
AddNaturalSecondaryWeapon(oMeldshaper, sResRef, 2);
|
||||
SetLocalString(oMeldshaper, "IncarnumSecondaryAttackL", sResRef);
|
||||
}
|
||||
}
|
||||
} */
|
||||
|
||||
|
||||
/* void main()
|
||||
|
||||
@@ -33,9 +33,69 @@ You gain a morale bonus on unarmed strike damage equal to the morale bonus on St
|
||||
//::
|
||||
//:: 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 nMeldId = PRCGetSpellId();
|
||||
int nEssentia = GetEssentiaInvested(oMeldshaper);
|
||||
effect eLink = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
|
||||
|
||||
// Check for Hands bind and add Improved Unarmed Strike if bound
|
||||
int nBoundToHands = FALSE;
|
||||
if (GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_HANDS)) == nMeldId ||
|
||||
GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_DOUBLE_HANDS)) == nMeldId)
|
||||
nBoundToHands = TRUE;
|
||||
|
||||
if (nBoundToHands)
|
||||
{
|
||||
eLink = EffectLinkEffects(eLink, EffectBonusFeat(FEAT_IMPROVED_UNARMED_STRIKE));
|
||||
}
|
||||
|
||||
// Tag the effect link for easy removal
|
||||
eLink = TagEffect(eLink, "SOULMELD_MAULING_GAUNTLETS_FEATS");
|
||||
eLink = SupernaturalEffect(eLink);
|
||||
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oMeldshaper, 9999.0);
|
||||
|
||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_MAULING_GAUNTLETS), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
|
||||
// Arms bind (keen) <20> check regular or double Arms
|
||||
int nBoundToArms = FALSE;
|
||||
if (GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_ARMS)) == nMeldId ||
|
||||
GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_DOUBLE_ARMS)) == nMeldId)
|
||||
nBoundToArms = TRUE;
|
||||
|
||||
if (nBoundToArms)
|
||||
{
|
||||
// Apply keen to equipped melee weapons with a tag for future use
|
||||
object oWeapR = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oMeldshaper);
|
||||
if (GetIsObjectValid(oWeapR) && IPGetIsMeleeWeapon(oWeapR))
|
||||
{
|
||||
itemproperty ipKeen = ItemPropertyKeen();
|
||||
ipKeen = TagItemProperty(ipKeen, "moi_MaulingGauntletsKeen");
|
||||
IPSafeAddItemProperty(oWeapR, ipKeen, 9999.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, TRUE);
|
||||
}
|
||||
object oWeapL = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oMeldshaper);
|
||||
if (GetIsObjectValid(oWeapL) && IPGetIsMeleeWeapon(oWeapL))
|
||||
{
|
||||
itemproperty ipKeen = ItemPropertyKeen();
|
||||
ipKeen = TagItemProperty(ipKeen, "moi_MaulingGauntletsKeen");
|
||||
IPSafeAddItemProperty(oWeapL, ipKeen, 9999.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, TRUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* #include "moi_inc_moifunc"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oMeldshaper = PRCGetSpellTargetObject();
|
||||
@@ -79,7 +139,7 @@ void main()
|
||||
IPSafeAddItemProperty(oWeapL, ipKeen, 9999.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, TRUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
} */
|
||||
|
||||
/* void main()
|
||||
{
|
||||
|
||||
@@ -34,9 +34,55 @@ As a standard action, you can snap your tail to loose a volley of spikes equal t
|
||||
//:: Double Chakra Bind support added
|
||||
//:: Double Totem 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 nMeldId = PRCGetSpellId();
|
||||
int nEssentia = GetEssentiaInvested(oMeldshaper);
|
||||
int nBonus = 2 + (nEssentia * 2);
|
||||
effect eLink = EffectLinkEffects(EffectSkillIncrease(SKILL_SPOT, nBonus), EffectSkillIncrease(SKILL_JUMP, nBonus));
|
||||
|
||||
// Check for Waist bind and add Spring Attack if bound
|
||||
int nBoundToWaist = FALSE;
|
||||
if (GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_WAIST)) == nMeldId ||
|
||||
GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_DOUBLE_WAIST)) == nMeldId)
|
||||
nBoundToWaist = TRUE;
|
||||
|
||||
if (nBoundToWaist)
|
||||
{
|
||||
eLink = EffectLinkEffects(eLink, EffectBonusFeat(FEAT_SPRING_ATTACK));
|
||||
}
|
||||
|
||||
// Tag the effect link for easy removal
|
||||
eLink = TagEffect(eLink, "SOULMELD_MANTICORE_BELT_FEATS");
|
||||
eLink = SupernaturalEffect(eLink);
|
||||
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oMeldshaper, 9999.0);
|
||||
|
||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_MANTICORE_BELT), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
|
||||
// Totem bind (spike volley) <20> 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)
|
||||
{
|
||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_MANTICORE_TOTEM), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
}
|
||||
}
|
||||
|
||||
/* #include "moi_inc_moifunc"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oMeldshaper = PRCGetSpellTargetObject();
|
||||
@@ -69,7 +115,7 @@ void main()
|
||||
{
|
||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_MANTICORE_TOTEM), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
}
|
||||
}
|
||||
} */
|
||||
|
||||
/* void main()
|
||||
{
|
||||
|
||||
@@ -33,9 +33,37 @@ As a standard action, you can create a momentary ring of fire that surrounds you
|
||||
//::
|
||||
//:: Double Totem 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);
|
||||
effect eLink = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
|
||||
|
||||
if (nEssentia) eLink = EffectLinkEffects(eLink, EffectDamageResistance(DAMAGE_TYPE_FIRE, nEssentia * 5));
|
||||
|
||||
eLink = EffectLinkEffects(eLink, EffectBonusFeat(FEAT_HEAT_ENDURANCE));
|
||||
|
||||
eLink = TagEffect(eLink, "SOULMELD_PHOENIX_BELT_FEATS");
|
||||
eLink = SupernaturalEffect(eLink);
|
||||
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oMeldshaper, 9999.0);
|
||||
|
||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_PHOENIX_BELT), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
|
||||
if (GetIsMeldBound(oMeldshaper) == CHAKRA_TOTEM || GetIsMeldBound(oMeldshaper) == CHAKRA_DOUBLE_TOTEM)
|
||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_PHOENIX_BELT_TOTEM), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
}
|
||||
|
||||
/* #include "moi_inc_moifunc"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oMeldshaper = PRCGetSpellTargetObject();
|
||||
@@ -50,4 +78,4 @@ void main()
|
||||
|
||||
if (GetIsMeldBound(oMeldshaper) == CHAKRA_TOTEM || GetIsMeldBound(oMeldshaper) == CHAKRA_DOUBLE_TOTEM)
|
||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_PHOENIX_BELT_TOTEM), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
}
|
||||
} */
|
||||
@@ -27,9 +27,46 @@ You gain the trapfinding ability.
|
||||
//::
|
||||
//:: 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 nMeldId = PRCGetSpellId();
|
||||
int nEssentia = GetEssentiaInvested(oMeldshaper);
|
||||
int nBonus = 2 + (nEssentia * 2);
|
||||
effect eLink = EffectLinkEffects(EffectSkillIncrease(SKILL_OPEN_LOCK, nBonus), EffectSkillIncrease(SKILL_DISABLE_TRAP, nBonus));
|
||||
eLink = EffectLinkEffects(eLink, EffectSkillIncrease(SKILL_PICK_POCKET, nBonus));
|
||||
|
||||
// Check for Hands bind and add Trapfinding if bound
|
||||
int nBoundToHands = FALSE;
|
||||
if (GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_HANDS)) == nMeldId ||
|
||||
GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_DOUBLE_HANDS)) == nMeldId)
|
||||
nBoundToHands = TRUE;
|
||||
|
||||
if (nBoundToHands)
|
||||
{
|
||||
eLink = EffectLinkEffects(eLink, EffectBonusFeat(FEAT_TRAPFINDING));
|
||||
}
|
||||
|
||||
// Tag the effect link for easy removal
|
||||
eLink = TagEffect(eLink, "SOULMELD_THEFT_GLOVES_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_THEFT_GLOVES), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
}
|
||||
|
||||
/* #include "moi_inc_moifunc"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oMeldshaper = PRCGetSpellTargetObject();
|
||||
@@ -50,7 +87,7 @@ void main()
|
||||
|
||||
if (nBoundToHands)
|
||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_FEAT_TRAPFINDING), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
}
|
||||
} */
|
||||
|
||||
/* void main()
|
||||
{
|
||||
|
||||
@@ -34,9 +34,58 @@ You can use your wormtail belt
|
||||
//:: Double Chakra Bind support added
|
||||
//:: Double Totem 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 nMeldId = PRCGetSpellId();
|
||||
int nEssentia = GetEssentiaInvested(oMeldshaper);
|
||||
int nBonus = 2 + nEssentia;
|
||||
effect eLink = EffectACIncrease(nBonus, AC_NATURAL_BONUS);
|
||||
|
||||
// Check for Waist bind and add Awesome Blow if bound
|
||||
int nBoundToWaist = FALSE;
|
||||
if (GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_WAIST)) == nMeldId ||
|
||||
GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_DOUBLE_WAIST)) == nMeldId)
|
||||
nBoundToWaist = TRUE;
|
||||
|
||||
if (nBoundToWaist)
|
||||
{
|
||||
// Add Awesome Blow as effect
|
||||
eLink = EffectLinkEffects(eLink, EffectBonusFeat(FEAT_AWESOME_BLOW));
|
||||
}
|
||||
|
||||
// Tag the effect link for easy removal
|
||||
eLink = TagEffect(eLink, "SOULMELD_WORMTAIL_BELT_FEATS");
|
||||
eLink = SupernaturalEffect(eLink);
|
||||
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oMeldshaper, 9999.0);
|
||||
|
||||
// Keep meld identification as item properties
|
||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_WORMTAIL_BELT), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
|
||||
// Totem bind (stinger) <20> 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)
|
||||
{
|
||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_WORMTAIL_BELT_TOTEM), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* #include "moi_inc_moifunc"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oMeldshaper = PRCGetSpellTargetObject();
|
||||
@@ -69,7 +118,7 @@ void main()
|
||||
{
|
||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_WORMTAIL_BELT_TOTEM), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
}
|
||||
}
|
||||
} */
|
||||
|
||||
/* void main()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user