Added Vow of Poverty

Added Vow of Poverty, Jaebrin, Hobgoblin Warsoul & Forsaker fixes (thanks PRC5 & @Fencas).  Added iprp_matcost.2da for new materials.  Updated PRC8 Tester module.  Cohorts updated to support 8 classes. Fixed ranged disarm w/ Fighter. Updated release archive.
This commit is contained in:
Jaysyn904
2024-12-26 17:37:36 -05:00
parent 02658b7717
commit e81e395031
73 changed files with 29545 additions and 28368 deletions

View File

@@ -188,7 +188,7 @@ void main()
int nLevel = nStage - STAGE_LVL0;
SetLocalInt(oPC, "DynConv_Waiting", TRUE);
PopulateList(oPC, nLevel, GetETArcaneClass(oPC));
PopulateList(oPC, nLevel, GetPrimaryArcaneClass(oPC));
MarkStageSetUp(nStage, oPC);
}

View File

@@ -134,7 +134,7 @@ void main()
SetHeader("Select Spell:");
SetLocalInt(oPC, "DynConv_Waiting", TRUE);
PopulateList(oPC, GetETArcaneClass(oPC));
PopulateList(oPC, GetPrimaryArcaneClass(oPC));
MarkStageSetUp(nStage, oPC);
}

View File

@@ -183,7 +183,8 @@ void main()
// This is because feats can't have temporary essentia invested in them
if (!GetTemporaryEssentia(oMeldshaper)) AddChoice("Feats", 2, oMeldshaper);
AddChoice("Class Features", 1, oMeldshaper);
if (GetLevelByClass(CLASS_TYPE_SOULCASTER, oMeldshaper)) AddChoice("Spells & Powers", 4, oMeldshaper);
//This will fail if the PC cannot take the class
if (GetLevelByClass(CLASS_TYPE_SOULCASTER, oMeldshaper) && !GetLocalInt(oMeldshaper, "PRC_PrereqSoulcaster")) AddChoice("Spells & Powers", 4, oMeldshaper);
// Set the next, previous and wait tokens to default values
SetDefaultTokens();

View File

@@ -339,6 +339,18 @@ void WorgPeltHB(object oMeldshaper)
}
}
void JaebrinHB(object oMeldshaper)
{
object oBite = GetItemInSlot(INVENTORY_SLOT_CWEAPON_B, oMeldshaper);
if (GetIsObjectValid(oBite))
{
// Add eventhook to the bite
IPSafeAddItemProperty(oBite, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1), 6.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
AddEventScript(oBite, EVENT_ITEM_ONHIT, "moi_events", TRUE, FALSE);
}
}
void WorgPeltOnHit(object oMeldshaper, object oItem, object oTarget)
{
if (GetIsMeldBound(oMeldshaper, MELD_WORG_PELT) != CHAKRA_HANDS) return;
@@ -349,6 +361,22 @@ void WorgPeltOnHit(object oMeldshaper, object oItem, object oTarget)
}// end if - Item is a melee weapon
}
void JaebrinOnHit(object oMeldshaper, object oItem, object oTarget)
{
if (GetRacialType(oMeldshaper) != RACIAL_TYPE_JAEBRIN) return;
if(oItem == GetItemInSlot(INVENTORY_SLOT_CWEAPON_B, oMeldshaper))
{
int nDC = 10 + GetHitDice(oMeldshaper)/2 + GetAbilityModifier(ABILITY_CONSTITUTION);
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC))
{
effect eEssence = EffectSavingThrowDecrease(SAVING_THROW_WILL, 4);
eEssence = EffectLinkEffects(eEssence, EffectVisualEffect(VFX_DUR_MIND_AFFECTING_NEGATIVE));
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEssence, oTarget, RoundsToSeconds(10));
}
}// end if - Item is a melee weapon
}
void CobaltExpertise(object oMeldshaper)
{
// Only applies when using expertise
@@ -520,7 +548,9 @@ void main()
if(IPGetIsMeleeWeapon(oItem))
{
if (GetIsMeldBound(oMeldshaper, MELD_NECROCARNUM_WEAPON) == CHAKRA_HANDS) NecrocarnumWeaponHands(oMeldshaper, oTarget, oItem);
}
}
WorgPeltOnHit(oMeldshaper, oItem, oTarget);
JaebrinOnHit(oMeldshaper, oItem, oTarget);
}// end if - Running OnHit event
else if(nEvent == EVENT_ONPLAYEREQUIPITEM)
{
@@ -677,6 +707,7 @@ void main()
if (GetIsMeldBound(oMeldshaper, MELD_RIDING_BRACERS) == CHAKRA_ARMS || GetIsMeldBound(oMeldshaper, MELD_RIDING_BRACERS) == CHAKRA_TOTEM) RidingBracers(oMeldshaper);
if (GetIsMeldBound(oMeldshaper, MELD_TOTEM_AVATAR) == CHAKRA_SHOULDERS || GetIsMeldBound(oMeldshaper, MELD_TOTEM_AVATAR) == CHAKRA_TOTEM) TotemAvatar(oMeldshaper);
if (GetIsMeldBound(oMeldshaper, MELD_WORG_PELT) == CHAKRA_HANDS) WorgPeltHB(oMeldshaper);
if (GetRacialType(oMeldshaper) == RACIAL_TYPE_JAEBRIN) JaebrinHB(oMeldshaper);
if (GetEssentiaInvestedFeat(oMeldshaper, FEAT_COBALT_EXPERTISE)) CobaltExpertise(oMeldshaper);
//if (GetEssentiaInvestedFeat(oMeldshaper, FEAT_COBALT_POWER)) CobaltPower(oMeldshaper); Commented out so it doesn't work with Bioware PA any more.
if (GetEssentiaInvestedFeat(oMeldshaper, FEAT_MIDNIGHT_DODGE)) MidnightDodge(oMeldshaper);

View File

@@ -308,6 +308,10 @@ int CheckMissingSpells(object oPC, int nClass, int nMinLevel, int nMaxLevel)
else if(nClass == CLASS_TYPE_SORCERER && GetRacialType(oPC) == RACIAL_TYPE_ARKAMOI)
nLevel = GetSpellslotLevel(nClass, oPC); //GetLevelByClass(CLASS_TYPE_MONSTROUS, oPC);
//::Hobgoblin Warsouls cast as sorcerers
else if(nClass == CLASS_TYPE_SORCERER && GetRacialType(oPC) == RACIAL_TYPE_HOBGOBLIN_WARSOUL)
nLevel = GetSpellslotLevel(nClass, oPC); //GetLevelByClass(CLASS_TYPE_MONSTROUS, oPC);
//:: Driders cast as sorcerers
else if(nClass == CLASS_TYPE_SORCERER && GetRacialType(oPC) == RACIAL_TYPE_DRIDER)
nLevel = GetSpellslotLevel(nClass, oPC); //GetLevelByClass(CLASS_TYPE_ABERRATION, oPC);

View File

@@ -136,7 +136,7 @@ void PopulateList(object oPC, int nLevel, int iClass, int nChoice)
}
}
if(iClass == 3)
if(iClass == 8)
{
SetDefaultTokens();
DeleteLocalInt(oPC, "DynConv_Waiting");