2025/12/03 Update
Finished Hidden Talent. Tweaked Factotum abilities to hopefully not run out of uses. Tweaked Twinfiends skill function. Hopefully fixed the Factotum's Inspiration not generating issues. Hopefullly fixed Double Chakra bind. Hopefully fixed Totemist's Double Totem Bind. Hopefully fixed Girallon Arms. Fixed Kuthrik Claws not granting Weapon Finesse. Added missing medium centaur hoof slam uti. Added new tentacle slam creature weapon (works the same, looks better). Updated Spell Effect NUI to ignore system spells (@Rakiov). Fixed typo in Guided Strike.
This commit is contained in:
@@ -32,21 +32,79 @@ Enormous, serrated, scythelike claws extend from your wrists to cover your hands
|
||||
|
||||
You can use your two claws as natural weapons that deal 1d6 points of damage plus your Strength modifier. For every point of essentia you invest in your kruthik claws, you deal an additional 1d4 points of acid damage with each claw attack.
|
||||
*/
|
||||
//::////////////////////////////////////////////////////////
|
||||
//::
|
||||
//:: Updated by: Jaysyn
|
||||
//:: Updated on: 2025-12-02 15:04:22
|
||||
//::
|
||||
//:: Hands / Weapon finesse added
|
||||
//:: ItemPropertyTag() support added
|
||||
//:: Double Chakra support added
|
||||
//::
|
||||
//::////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
#include "moi_inc_moifunc"
|
||||
|
||||
void main()
|
||||
{
|
||||
object oMeldshaper = PRCGetSpellTargetObject();
|
||||
int nEssentia = GetEssentiaInvested(oMeldshaper);
|
||||
int nBonus = 4+(nEssentia*2);
|
||||
effect eLink = EffectLinkEffects(EffectSkillIncrease(SKILL_HIDE, nBonus), EffectSkillIncrease(SKILL_MOVE_SILENTLY, nBonus));
|
||||
object oSkin = GetPCSkin(oMeldshaper);
|
||||
|
||||
int nMeldId = PRCGetSpellId();
|
||||
int nEssentia = GetEssentiaInvested(oMeldshaper);
|
||||
int nBonus = 4+(nEssentia*2);
|
||||
|
||||
if (GetIsMeldBound(oMeldshaper) == CHAKRA_SHOULDERS) eLink = EffectLinkEffects(eLink, EffectDamageResistance(DAMAGE_TYPE_ACID, 10 + (nBonus * 5)));
|
||||
effect eLink = EffectLinkEffects(EffectSkillIncrease(SKILL_HIDE, nBonus), EffectSkillIncrease(SKILL_MOVE_SILENTLY, nBonus));
|
||||
|
||||
// Check if bound to Shoulders chakra
|
||||
int nBoundToShoulders = FALSE;
|
||||
if (GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_SHOULDERS)) == nMeldId||
|
||||
GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_DOUBLE_SHOULDERS)) == nMeldId)
|
||||
nBoundToShoulders = TRUE;
|
||||
|
||||
if (nBoundToShoulders)
|
||||
{
|
||||
eLink = EffectLinkEffects(eLink, EffectDamageResistance(DAMAGE_TYPE_ACID, 10 + (nBonus * 5)));
|
||||
}
|
||||
|
||||
// Check if bound to Hands chakra
|
||||
int nBoundToHands = FALSE;
|
||||
if (GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_HANDS)) == nMeldId||
|
||||
GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_DOUBLE_HANDS)) == nMeldId)
|
||||
nBoundToHands = TRUE;
|
||||
|
||||
if (nBoundToHands)
|
||||
{
|
||||
// Add the rend IP with a unique tag
|
||||
itemproperty ipFinesse = ItemPropertyBonusFeat(IP_CONST_FEAT_WEAPFINESSE);
|
||||
ipFinesse = TagItemProperty(ipFinesse, "IP_KRUTHIK_CLAWS");
|
||||
IPSafeAddItemProperty(oSkin, ipFinesse, 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Remove the rend IP by tag
|
||||
itemproperty ip = GetFirstItemProperty(oSkin);
|
||||
while (GetIsItemPropertyValid(ip))
|
||||
{
|
||||
if (GetItemPropertyTag(ip) == "IP_KRUTHIK_CLAWS")
|
||||
{
|
||||
RemoveItemProperty(oSkin, ip);
|
||||
}
|
||||
ip = GetNextItemProperty(oSkin);
|
||||
}
|
||||
}
|
||||
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(eLink), oMeldshaper, 9999.0);
|
||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_KRUTHIK_CLAWS), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
if (GetIsMeldBound(oMeldshaper) == CHAKRA_TOTEM)
|
||||
|
||||
// Check if bound to Totem chakra
|
||||
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_1d6m_";
|
||||
// Gets up to the proper size
|
||||
@@ -63,4 +121,84 @@ void main()
|
||||
DelayCommand(3.0, IPSafeAddItemProperty(GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oMeldshaper), ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_ACID, nDamage), 9999.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, TRUE));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* void main()
|
||||
{
|
||||
object oMeldshaper = PRCGetSpellTargetObject();
|
||||
object oSkin = GetPCSkin(oMeldshaper);
|
||||
|
||||
int nMeldId = PRCGetSpellId();
|
||||
int nClass = GetMeldshapingClass(oMeldshaper);
|
||||
int nEssentia = GetEssentiaInvested(oMeldshaper);
|
||||
int nBonus = 4+(nEssentia*2);
|
||||
|
||||
effect eLink = EffectLinkEffects(EffectSkillIncrease(SKILL_HIDE, nBonus), EffectSkillIncrease(SKILL_MOVE_SILENTLY, nBonus));
|
||||
|
||||
// Check if bound to Shoulder chakra
|
||||
int nBoundToShoulders = FALSE;
|
||||
if (GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_SHOULDERS)) == nMeldId||
|
||||
GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_DOUBLE_SHOULDERS)) == nMeldId)
|
||||
nBoundToShoulders = TRUE;
|
||||
|
||||
if (nBoundToShoulders)
|
||||
{
|
||||
eLink = EffectLinkEffects(eLink, EffectDamageResistance(DAMAGE_TYPE_ACID, 10 + (nBonus * 5)));
|
||||
}
|
||||
|
||||
//if (GetIsMeldBound(oMeldshaper) == CHAKRA_SHOULDERS) eLink = EffectLinkEffects(eLink, EffectDamageResistance(DAMAGE_TYPE_ACID, 10 + (nBonus * 5)));
|
||||
|
||||
//if (GetIsMeldBound(oMeldshaper) == CHAKRA_HANDS) IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_FEAT_WEAPFINESSE), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
|
||||
// Check if bound to Hands chakra
|
||||
int nBoundToHands = FALSE;
|
||||
if (GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_HANDS)) == nMeldId||
|
||||
GetLocalInt(oMeldshaper, "BoundMeld" + IntToString(CHAKRA_DOUBLE_HANDS)) == nMeldId)
|
||||
nBoundToHands = TRUE;
|
||||
|
||||
//if (GetIsMeldBound(oMeldshaper) == CHAKRA_HANDS)
|
||||
if (nBoundToHands)
|
||||
{
|
||||
// Add the rend IP with a unique tag
|
||||
itemproperty ipFinesse = ItemPropertyBonusFeat(IP_CONST_FEAT_WEAPFINESSE);
|
||||
ipFinesse = TagItemProperty(ipFinesse, "IP_KRUTHIK_CLAWS");
|
||||
IPSafeAddItemProperty(oSkin, ipFinesse, 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Remove the rend IP by tag
|
||||
itemproperty ip = GetFirstItemProperty(oSkin);
|
||||
while (GetIsItemPropertyValid(ip))
|
||||
{
|
||||
if (GetItemPropertyTag(ip) == "IP_KRUTHIK_CLAWS")
|
||||
{
|
||||
RemoveItemProperty(oSkin, ip);
|
||||
}
|
||||
ip = GetNextItemProperty(oSkin);
|
||||
}
|
||||
}
|
||||
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(eLink), oMeldshaper, 9999.0);
|
||||
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_KRUTHIK_CLAWS), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||||
|
||||
//if (GetIsMeldBound(oMeldshaper) == CHAKRA_TOTEM)
|
||||
int nBoundChakra = GetIsMeldBound(oMeldshaper);
|
||||
if (nBoundChakra == CHAKRA_TOTEM || nBoundChakra == CHAKRA_DOUBLE_TOTEM)
|
||||
//if (GetIsChakraUsed(oMeldshaper, CHAKRA_TOTEM, nClass) == nMeldId || GetIsChakraUsed(oMeldshaper, CHAKRA_DOUBLE_TOTEM, nClass) == nMeldId)
|
||||
{
|
||||
string sResRef = "prc_claw_1d6m_";
|
||||
// Gets up to the proper size
|
||||
int nSize = PRCGetCreatureSize(oMeldshaper);
|
||||
sResRef += GetAffixForSize(nSize);
|
||||
AddNaturalPrimaryWeapon(oMeldshaper, sResRef, 2);
|
||||
SetLocalString(oMeldshaper, "IncarnumPrimaryAttackL", 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_ACID, nDamage), 9999.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, TRUE));
|
||||
DelayCommand(3.0, IPSafeAddItemProperty(GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oMeldshaper), ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_ACID, nDamage), 9999.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, TRUE));
|
||||
}
|
||||
}
|
||||
} */
|
||||
Reference in New Issue
Block a user