2025/05/25 Update

Updated all ToB maneuvers with saves to respect Blade Meditation.
Added HasBladeMeditationForDiscipline()
Expanded Witchborn Binder for epic progression.
Fixed a few bugs around Vile Martial strike.
Echo Spell shouldn't target self or items.
Muckdweller should have a -6 STR.
Added new Vile Martial feats to GetVileFeats().
Grappling something now removes invisibility.
Started on Power Attack NUI.
Starmantle shouldn't stack.
Factotum & Shadow Thief of Amn require UMD checks for scroll casting.
This commit is contained in:
Jaysyn904
2025-05-25 16:16:36 -04:00
parent 41e2f2b91c
commit 8a034b0da0
76 changed files with 3280 additions and 1090 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -169,22 +169,22 @@ const int FEAT_VILE_MARTIAL_ELVEN_THINBLADE = 24814;
const int FEAT_VILE_MARTIAL_ELVEN_COURTBLADE = 24815;
//:: Sanctify Martial Strike Expansion
const int FEAT_SANCTIFY_MARTIAL_EAGLE_CLAW = 24850;
const int FEAT_SANCTIFY_MARTIAL_LIGHT_LANCE = 24851;
const int FEAT_SANCTIFY_MARTIAL_HEAVY_PICK = 24852;
const int FEAT_SANCTIFY_MARTIAL_LIGHT_PICK = 24853;
const int FEAT_SANCTIFY_MARTIAL_SAI = 24854;
const int FEAT_SANCTIFY_MARTIAL_NUNCHAKU = 24855;
const int FEAT_SANCTIFY_MARTIAL_FALCHION = 24856;
const int FEAT_SANCTIFY_MARTIAL_SAP = 24857;
const int FEAT_SANCTIFY_MARTIAL_KATAR = 24858;
const int FEAT_SANCTIFY_MARTIAL_HEAVY_MACE = 24859;
const int FEAT_SANCTIFY_MARTIAL_MAUL = 24860;
const int FEAT_SANCTIFY_MARTIAL_DBL_SCIMITAR = 24861;
const int FEAT_SANCTIFY_MARTIAL_GOAD = 24862;
const int FEAT_SANCTIFY_MARTIAL_ELVEN_LIGHTBLADE = 24863;
const int FEAT_SANCTIFY_MARTIAL_ELVEN_THINBLADE = 24864;
const int FEAT_SANCTIFY_MARTIAL_ELVEN_COURTBLADE = 24865;
const int FEAT_SANCTIFY_MARTIAL_EAGLE_CLAW = 24850;
const int FEAT_SANCTIFY_MARTIAL_LIGHT_LANCE = 24851;
const int FEAT_SANCTIFY_MARTIAL_HEAVY_PICK = 24852;
const int FEAT_SANCTIFY_MARTIAL_LIGHT_PICK = 24853;
const int FEAT_SANCTIFY_MARTIAL_SAI = 24854;
const int FEAT_SANCTIFY_MARTIAL_NUNCHAKU = 24855;
const int FEAT_SANCTIFY_MARTIAL_FALCHION = 24856;
const int FEAT_SANCTIFY_MARTIAL_SAP = 24857;
const int FEAT_SANCTIFY_MARTIAL_KATAR = 24858;
const int FEAT_SANCTIFY_MARTIAL_HEAVY_MACE = 24859;
const int FEAT_SANCTIFY_MARTIAL_MAUL = 24860;
const int FEAT_SANCTIFY_MARTIAL_DBL_SCIMITAR = 24861;
const int FEAT_SANCTIFY_MARTIAL_GOAD = 24862;
const int FEAT_SANCTIFY_MARTIAL_ELVEN_LIGHTBLADE = 24863;
const int FEAT_SANCTIFY_MARTIAL_ELVEN_THINBLADE = 24864;
const int FEAT_SANCTIFY_MARTIAL_ELVEN_COURTBLADE = 24865;
//:: Web Enhancement Feats
const int FEAT_CHARMING_THE_ARROW = 25997;

View File

@@ -1506,8 +1506,8 @@ struct WeaponFeat GetAllFeatsOfWeaponType(int iWeaponType)
sFeat.OverwhelmingCritical = FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTMACE;
sFeat.DevastatingCritical = FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTMACE;
sFeat.WeaponOfChoice = FEAT_WEAPON_OF_CHOICE_LIGHTMACE;
sFeat.SanctifyMartialStrike = FEAT_VILE_MARTIAL_LIGHTMACE;
sFeat.VileMartialStrike = FEAT_SANCTIFY_MARTIAL_LIGHTMACE;
sFeat.SanctifyMartialStrike = FEAT_SANCTIFY_MARTIAL_LIGHTMACE;
sFeat.VileMartialStrike = FEAT_VILE_MARTIAL_LIGHTMACE;
break;
}
case BASE_ITEM_LONGBOW: {

View File

@@ -1355,7 +1355,8 @@ const int IP_CONST_FEAT_VILE_MARTIAL_SICKLE = 24794;
const int IP_CONST_FEAT_VILE_MARTIAL_DWARVENAXE = 24795;
const int IP_CONST_FEAT_VILE_MARTIAL_WHIP = 24796;
const int IP_CONST_FEAT_VILE_MARTIAL_TRIDENT = 24797;
const int IP_CONST_FEAT_VILE_MARTIAL_MINDBLADE = 24898;
const int IP_CONST_FEAT_VILE_MARTIAL_MINDBLADE = 24798;
//:: New Weapons
const int IP_CONST_FEAT_VILE_MARTIAL_EAGLE_CLAW = 26500;
const int IP_CONST_FEAT_VILE_MARTIAL_LIGHT_LANCE = 26501;

View File

@@ -1,5 +1,8 @@
//const int FOOBAR = -1; // Comment or uncomment whenever the compiler croaks on an error code 5.
//:: NUI Spell constants
const int SPELL_NUI_POWER_ATTACK = 2691;
//spell
const int SPELL_MAJOR_MAGIC_MISSILE = 2247;
const int SPELL_GREAT_WALL_OF_DISPEL = 2096;

View File

@@ -228,8 +228,10 @@ int GetSanctifyMartialStrikeFeatItemProperty(int nFeatNumber)
int GetVileMartialStrikeFeatItemProperty(int nFeatNumber)
{
int nItemProperty;
nItemProperty = GetFeatItemProperty(nFeatNumber, IP_CONST_FEAT_VILE_MARTIAL_CLUB, IP_CONST_FEAT_VILE_MARTIAL_MINDBLADE);
nItemProperty = GetFeatItemProperty(nFeatNumber, IP_CONST_FEAT_VILE_MARTIAL_CLUB, IP_CONST_FEAT_VILE_MARTIAL_TRIDENT);
if(nItemProperty != -1) return nItemProperty;
nItemProperty = GetFeatItemProperty(nFeatNumber, IP_CONST_FEAT_VILE_MARTIAL_MINDBLADE, IP_CONST_FEAT_VILE_MARTIAL_MINDBLADE);
if(nItemProperty != -1) return nItemProperty;
nItemProperty = GetFeatItemProperty(nFeatNumber, IP_CONST_FEAT_VILE_MARTIAL_EAGLE_CLAW, IP_CONST_FEAT_VILE_MARTIAL_ELVEN_COURTBLADE);
if(nItemProperty != -1) return nItemProperty;
return -1;

View File

@@ -341,6 +341,16 @@ int BladeMeditationFeat(object oInitiator);
*/
int BladeMeditationDamage(object oInitiator, int nMoveId);
/**
* Returns 1 if Blade Meditation & Discipline match
* @param oInitiator Person to check
* @param nDiscipline Discipline to match
*
* @return 1 or 0
*/
int HasBladeMeditationForDiscipline(object oInitiator, int nDiscipline);
//////////////////////////////////////////////////
/* Includes */
//////////////////////////////////////////////////
@@ -1266,4 +1276,18 @@ int BladeMeditationDamage(object oInitiator, int nMoveId)
return 1;
return -1;
}
int HasBladeMeditationForDiscipline(object oInitiator, int nDiscipline)
{
if (!GetIsObjectValid(oInitiator))
return FALSE;
int nFeatDiscipline = BladeMeditationFeat(oInitiator);
// If the discipline for Blade Meditation matches the one we're checking, return true
if (nFeatDiscipline == nDiscipline)
return TRUE;
return FALSE;
}