2026/04/27 Update

Fighter was missing Weapon Proficiency: Scythe.
Tentative fix for Sweeping Strike + Eldritch Glaive.
Fixed Necrocarnum Weapon reducing AB.
Updated creature abilities to more closely follow PnP.
Updated tlk for Sanctified & Holy Ki Strike.
This commit is contained in:
Jaysyn904
2026-04-27 10:31:20 -04:00
parent b5be848a4e
commit f397206b74
54 changed files with 2062 additions and 1774 deletions

View File

@@ -696,7 +696,28 @@ void main()
if (GetAlignmentGoodEvil(oMeldshaper) == ALIGNMENT_EVIL)
IPSafeAddItemProperty(oItem, ItemPropertyDamageBonus(DamageTypeToIPConst(GetWeaponDamageType(oItem)), IPDamageConstant((nEssentia*2) + nBonus)), 9999.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, TRUE);
}
if (GetHasSpellEffect(MELD_NECROCARNUM_WEAPON, oMeldshaper))
if (GetHasSpellEffect(MELD_NECROCARNUM_WEAPON, oMeldshaper))
{
// Get current enhancement bonus
int nCurrentEnh = IPGetWeaponEnhancementBonus(oItem, FALSE);
// Calculate needed enhancement to reach +3 total
int nNeededEnh = 3 - nCurrentEnh;
if (nNeededEnh > 0)
{
IPSafeAddItemProperty(oItem, ItemPropertyEnhancementBonus(nNeededEnh), 9999.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, TRUE);
// Add matching penalty to keep attack bonus unchanged
IPSafeAddItemProperty(oItem, ItemPropertyEnhancementPenalty(nNeededEnh), 9999.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, TRUE);
}
if (GetIsMeldBound(oMeldshaper, MELD_NECROCARNUM_WEAPON) == CHAKRA_HANDS || GetIsMeldBound(oMeldshaper, MELD_NECROCARNUM_WEAPON) == CHAKRA_DOUBLE_HANDS)
{
IPSafeAddItemProperty(oItem, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
AddEventScript(oItem, EVENT_ITEM_ONHIT, "moi_events", TRUE, FALSE);
}
}
/* if (GetHasSpellEffect(MELD_NECROCARNUM_WEAPON, oMeldshaper))
{
IPSafeAddItemProperty(oItem, ItemPropertyAttackBonus(3), 9999.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, TRUE);
IPSafeAddItemProperty(oItem, ItemPropertyAttackPenalty(3), 9999.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, TRUE);
@@ -706,7 +727,7 @@ void main()
IPSafeAddItemProperty(oItem, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
AddEventScript(oItem, EVENT_ITEM_ONHIT, "moi_events", TRUE, FALSE);
}
}
} */
if (GetIsMeldBound(oMeldshaper, MELD_MAULING_GAUNTLETS) == CHAKRA_ARMS || GetIsMeldBound(oMeldshaper, MELD_MAULING_GAUNTLETS) == CHAKRA_DOUBLE_ARMS)
IPSafeAddItemProperty(oItem, ItemPropertyKeen(), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
}

View File

@@ -1,6 +1,16 @@
#include "moi_inc_moifunc"
#include "inc_dynconv"
// Add this function to handle delayed processing
void DelayedChakraBindUnequip(object oMeldshaper, object oItem)
{
// Check if we're still in a valid state
if(GetIsObjectValid(oMeldshaper) && GetIsObjectValid(oItem))
{
ChakraBindUnequip(oMeldshaper, oItem);
}
}
void main()
{
int nEvent = GetRunningEvent();
@@ -12,6 +22,7 @@ void main()
{
case EVENT_ONPLAYERREST_FINISHED: oMeldshaper = GetLastBeingRested(); break;
case EVENT_ONCLIENTENTER: oMeldshaper = GetEnteringObject(); break;
case EVENT_ONPLAYEREQUIPITEM: oMeldshaper = GetItemLastEquippedBy(); break;
default:
oMeldshaper = OBJECT_SELF;
@@ -38,7 +49,7 @@ void main()
AssignCommand(oMeldshaper, ClearAllActions(TRUE));
SetLocalInt(oMeldshaper, "MeldshapeClass", CLASS_TYPE_INCARNATE);
StartDynamicConversation("moi_meldshapecnv", oMeldshaper, DYNCONV_EXIT_NOT_ALLOWED, FALSE, TRUE, oMeldshaper);
}
}
else if(nEvent == EVENT_ONPLAYEREQUIPITEM)
{
oMeldshaper = GetItemLastEquippedBy();

View File

@@ -1,4 +1,7 @@
/*
/*
moi_mld_necrowpn
20/1/20 by Stratovarius
Necrocarnum Weapon
@@ -58,7 +61,7 @@ void main()
effect eLink = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
if (nEssentia) eLink = EffectLinkEffects(eLink, NecrocarnumWeapon(nEssentia));
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(eLink), oMeldshaper, 9999.0);
DelayCommand(0.1f, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(eLink), oMeldshaper, 9999.0));
IPSafeAddItemProperty(GetPCSkin(oMeldshaper), ItemPropertyBonusFeat(IP_CONST_MELD_NECROCARNUM_WEAPON), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
}