2025-04-15 Update
Added Elven blades to Weaponmaster prereqs Fixed Beckon the Frozen Fixed bug with Fire Brand Fixed duration bug with Improved Invisibility Added Soul Eater to Shifter prereqs Fixed ability based class prereqs in prc_prereq.nss Update Eye of Gruumsh for epic levels Update Ur-Priest for epic levels Update Forsaker for epic levels Update Anima Mage for epic levels Update Serene Guardian for epic levels Bladesinger abilities can use chain shirts Fixed Elemental Abjuration Fixed bug with prc cache creature. Forsakers can use non-magic items (heal kits, alchemy, etc) Updated ruleset.2da for NWNEE update Updated AotS bonus feats -Notes Added 3.5e Template index Added 3.5e update booklet Removed release archive
This commit is contained in:
@@ -23,6 +23,8 @@ void main()
|
||||
{
|
||||
int iEOGLevel = GetLevelByClass(CLASS_TYPE_PRC_EYE_OF_GRUUMSH, oCaster);
|
||||
effect eWill = EffectSavingThrowIncrease(SAVING_THROW_WILL, 2, SAVING_THROW_TYPE_ALL);
|
||||
eWill = ExtraordinaryEffect(eWill);
|
||||
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eWill, oTarget, HoursToSeconds(iEOGLevel) );
|
||||
|
||||
effect eVis = EffectVisualEffect(VFX_IMP_WILL_SAVING_THROW_USE, FALSE);
|
||||
|
@@ -32,10 +32,10 @@ void main()
|
||||
|
||||
if(GetDistanceBetween(oCaster, oTarget) < 6.2 && // has to be within 20 ft.
|
||||
iTargetRace != RACIAL_TYPE_OOZE && // has to use sight to attack
|
||||
iTargetRace != RACIAL_TYPE_CONSTRUCT &&
|
||||
iTargetRace != RACIAL_TYPE_UNDEAD &&
|
||||
iTargetRace != RACIAL_TYPE_ELEMENTAL &&
|
||||
iTargetRace != RACIAL_TYPE_VERMIN &&
|
||||
//iTargetRace != RACIAL_TYPE_CONSTRUCT &&
|
||||
//iTargetRace != RACIAL_TYPE_UNDEAD && //:: none of these have any intrinsic immmunity to blindness
|
||||
//iTargetRace != RACIAL_TYPE_ELEMENTAL &&
|
||||
//iTargetRace != RACIAL_TYPE_VERMIN &&
|
||||
!iBeholder)
|
||||
{
|
||||
int iHitEnemy = PRCDoRangedTouchAttack(oTarget);;
|
||||
|
@@ -32,11 +32,38 @@ void RemoveSpellEffectSong(object oPC)
|
||||
}
|
||||
|
||||
void OnEquip(object oPC,object oSkin)
|
||||
{
|
||||
object oChest = GetItemInSlot(INVENTORY_SLOT_CHEST, oPC);
|
||||
int nBaseAC = GetBaseAC(oChest);
|
||||
int nWeight = GetWeight(oChest);
|
||||
|
||||
//:: 1 longsword/rapier & light armour
|
||||
if (!GetIsBladesongWeapon(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC))
|
||||
|| GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC))
|
||||
|| (nBaseAC > 3 && !(nBaseAC == 4 && nWeight < 160)))
|
||||
{
|
||||
if (GetHasFeatEffect(FEAT_SONG_OF_FURY, oPC))
|
||||
RemoveSpellEffectSong(oPC);
|
||||
|
||||
SetCompositeBonus(oSkin, "BladesAC", 0, ITEM_PROPERTY_AC_BONUS);
|
||||
SetCompositeBonus(oSkin, "BladesCon", 0, ITEM_PROPERTY_SKILL_BONUS, SKILL_CONCENTRATION);
|
||||
return;
|
||||
}
|
||||
//:: Bonus Lvl BladeSinger Max Bonus Int
|
||||
int BladeLv = PRCMin(GetLevelByClass(CLASS_TYPE_BLADESINGER, oPC), GetAbilityModifier(ABILITY_INTELLIGENCE, oPC));
|
||||
SetCompositeBonus(oSkin, "BladesAC", BladeLv, ITEM_PROPERTY_AC_BONUS);
|
||||
|
||||
if (GetHasFeat(FEAT_LESSER_SPELLSONG, oPC))
|
||||
SetCompositeBonus(oSkin, "BladesCon", 5, ITEM_PROPERTY_SKILL_BONUS, SKILL_CONCENTRATION);
|
||||
}
|
||||
|
||||
/* void OnEquip(object oPC,object oSkin)
|
||||
{
|
||||
// 1 longsword/rapier & light armour
|
||||
if(!GetIsBladesongWeapon(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC))
|
||||
|| GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC))
|
||||
|| GetBaseAC(GetItemInSlot(INVENTORY_SLOT_CHEST, oPC)) > 3)
|
||||
//:: Handles Mithral Chain Shirt
|
||||
|| GetBaseAC(GetItemInSlot(INVENTORY_SLOT_CHEST, oPC)) > 3 || GetBaseAC(GetItemInSlot(INVENTORY_SLOT_CHEST, oPC)) == 4 && GetWeight(GetItemInSlot(INVENTORY_SLOT_CHEST)) < 160)
|
||||
{
|
||||
if(GetHasFeatEffect(FEAT_SONG_OF_FURY, oPC))
|
||||
RemoveSpellEffectSong(oPC);
|
||||
@@ -54,7 +81,7 @@ void OnEquip(object oPC,object oSkin)
|
||||
|
||||
if(GetHasFeat(FEAT_LESSER_SPELLSONG,oPC))
|
||||
SetCompositeBonus(oSkin, "BladesCon", 5, ITEM_PROPERTY_SKILL_BONUS, SKILL_CONCENTRATION);
|
||||
}
|
||||
} */
|
||||
|
||||
void OnUnEquip(object oPC,object oSkin)
|
||||
{
|
||||
|
@@ -8,12 +8,32 @@
|
||||
//:: Created By: Oni5115
|
||||
//:: Created On: July 19, 2004
|
||||
//:://////////////////////////////////////////////
|
||||
|
||||
#include "prc_alterations"
|
||||
#include "prc_feat_const"
|
||||
#include "prc_class_const"
|
||||
|
||||
void ApplyRitualScarringDefense(object oPC, object oSkin)
|
||||
|
||||
//:: Ritual Scarring Natural AC bonus now handled in cls_stat_eog.2da
|
||||
|
||||
/* void ApplyRitualScarringDefense(object oPC, object oSkin)
|
||||
{
|
||||
int iEOGLevel = GetLevelByClass(CLASS_TYPE_PRC_EYE_OF_GRUUMSH, oPC);
|
||||
int ACBonus = 0;
|
||||
|
||||
// For levels 3 and above, scale the bonus indefinitely:
|
||||
// Level 3-5: bonus = 1; Level 6-8: bonus = 2; Level 9-11: bonus = 3; etc.
|
||||
if (iEOGLevel >= 3)
|
||||
{
|
||||
ACBonus = iEOGLevel / 3;
|
||||
}
|
||||
|
||||
itemproperty ipACBonus = ItemPropertyACBonus(ACBonus);
|
||||
|
||||
SetCompositeBonus(oSkin, "RitualScarringDefenseBonus", ACBonus, ITEM_PROPERTY_AC_BONUS);
|
||||
SetLocalInt(oPC, "HasRitualScarring", 2);
|
||||
}
|
||||
*/
|
||||
/* void ApplyRitualScarringDefense(object oPC, object oSkin)
|
||||
{
|
||||
int ACBonus = 0;
|
||||
int iEOGLevel = GetLevelByClass(CLASS_TYPE_PRC_EYE_OF_GRUUMSH, oPC);
|
||||
@@ -35,13 +55,13 @@ void ApplyRitualScarringDefense(object oPC, object oSkin)
|
||||
|
||||
SetCompositeBonus(oSkin, "RitualScarringDefenseBonus", ACBonus, ITEM_PROPERTY_AC_BONUS);
|
||||
SetLocalInt(oPC, "HasRitualScarring", 2);
|
||||
}
|
||||
} */
|
||||
|
||||
void RemoveRitualScarringDefense(object oPC, object oSkin)
|
||||
/* void RemoveRitualScarringDefense(object oPC, object oSkin)
|
||||
{
|
||||
SetCompositeBonus(oSkin, "RitualScarringDefenseBonus", 0, ITEM_PROPERTY_AC_BONUS);
|
||||
SetLocalInt(oPC, "HasRitualScarring", 1);
|
||||
}
|
||||
} */
|
||||
|
||||
void ApplySightOfGruumsh(object oPC, object oSkin)
|
||||
{
|
||||
@@ -75,7 +95,7 @@ void main()
|
||||
// Because the variables are not yet set.
|
||||
if(GetLocalInt(oPC, "HasRitualScarring") == 0 || GetLocalInt(oPC, "HasSightOfGruumsh") == 0 )
|
||||
{
|
||||
RemoveRitualScarringDefense(oPC, oSkin);
|
||||
//RemoveRitualScarringDefense(oPC, oSkin);
|
||||
RemoveSightOfGruumsh(oPC, oSkin);
|
||||
|
||||
if(GetHasFeat(FEAT_SIGHT_OF_GRUUMSH, oPC) )
|
||||
|
@@ -224,6 +224,12 @@ void Shifter(object oPC, int iArcSpell, int iDivSpell)
|
||||
SetLocalInt(oPC, "PRC_PrereqShift", 0);
|
||||
}
|
||||
|
||||
//6th lvl Soul Eater's Soul Radiance qualifies
|
||||
if (GetLevelByClass(CLASS_TYPE_SOUL_EATER) > 5)
|
||||
{
|
||||
SetLocalInt(oPC, "PRC_PrereqShift", 0);
|
||||
}
|
||||
|
||||
//Any class that has Polymorph Self spell qualifies
|
||||
if (PRCGetIsRealSpellKnown(SPELL_POLYMORPH_SELF, oPC))
|
||||
{
|
||||
@@ -590,9 +596,12 @@ void reqCombatMedic(object oPC)
|
||||
*/
|
||||
|
||||
//:: Get casting ability scores
|
||||
int iCha = GetLocalInt(GetPCSkin(oPC), "PRC_trueCHA");
|
||||
int iInt = GetLocalInt(GetPCSkin(oPC), "PRC_trueINT");
|
||||
int iWis = GetLocalInt(GetPCSkin(oPC), "PRC_trueWIS");
|
||||
//int iCha = GetLocalInt(GetPCSkin(oPC), "PRC_trueCHA");
|
||||
//int iInt = GetLocalInt(GetPCSkin(oPC), "PRC_trueINT");
|
||||
//int iWis = GetLocalInt(GetPCSkin(oPC), "PRC_trueWIS");
|
||||
int iCha = GetAbilityScore(oPC, ABILITY_CHARISMA, TRUE);
|
||||
int iInt = GetAbilityScore(oPC, ABILITY_INTELLIGENCE, TRUE);
|
||||
int iWis = GetAbilityScore(oPC, ABILITY_WISDOM, TRUE);
|
||||
|
||||
//:: Check PRC NewSpellBook divine classes (Archivist,
|
||||
//:: Favoured Soul, JoWaW, Spirit Shaman)
|
||||
@@ -872,7 +881,8 @@ void FistRaziel(object oPC)
|
||||
|
||||
SetLocalInt(oPC, "PRC_PrereqFistRaz", 1);
|
||||
object oSkin = GetPCSkin(oPC);
|
||||
int iWis = GetLocalInt(oSkin, "PRC_trueWIS");
|
||||
//int iWis = GetLocalInt(oSkin, "PRC_trueWIS");
|
||||
int iWis = GetAbilityScore(oPC, ABILITY_WISDOM, TRUE);
|
||||
// hard code it to work for Bioware classes
|
||||
if (GetLevelByClass(CLASS_TYPE_CLERIC))
|
||||
{
|
||||
@@ -1074,8 +1084,9 @@ void FMMPreReqs(object oPC)
|
||||
SetLocalInt(oPC, "PRC_PrereqFMM", 0);
|
||||
}
|
||||
//:: Check Bioware Sorcerer
|
||||
int iCha = GetLocalInt(GetPCSkin(oPC), "PRC_trueCHA");
|
||||
if(iCha > 10)
|
||||
//int iCha = GetLocalInt(GetPCSkin(oPC), "PRC_trueCHA");
|
||||
//if(iCha > 10)
|
||||
if (GetLevelByClass(CLASS_TYPE_SORCERER, oPC) > 0 && GetAbilityScore(oPC, ABILITY_CHARISMA, TRUE) > 10)
|
||||
{
|
||||
if(GetIsInKnownSpellList(oPC, CLASS_TYPE_SORCERER, SPELL_MAGIC_MISSILE))
|
||||
{
|
||||
@@ -1084,15 +1095,17 @@ void FMMPreReqs(object oPC)
|
||||
}
|
||||
|
||||
//:: Check Wizard
|
||||
int iInt = GetLocalInt(GetPCSkin(oPC), "PRC_trueINT");
|
||||
if(iInt > 10)
|
||||
//int iInt = GetLocalInt(GetPCSkin(oPC), "PRC_trueINT");
|
||||
//if(iInt > 10)
|
||||
if (GetLevelByClass(CLASS_TYPE_WIZARD, oPC) > 0 && GetAbilityScore(oPC, ABILITY_INTELLIGENCE, TRUE) > 10)
|
||||
{
|
||||
if(GetHasSpell(SPELL_MAGIC_MISSILE, oPC))
|
||||
SetLocalInt(oPC, "PRC_PrereqFMM", 0);
|
||||
}
|
||||
|
||||
//:: Check Nentyar Hunter
|
||||
int iWis = GetLocalInt(GetPCSkin(oPC), "PRC_trueWis");
|
||||
int iWis = GetAbilityScore(oPC, ABILITY_WISDOM, TRUE);
|
||||
//int iWis = GetLocalInt(GetPCSkin(oPC), "PRC_trueWis");
|
||||
if(iWis > 10)
|
||||
{
|
||||
if(GetLevelByClass(CLASS_TYPE_NENTYAR_HUNTER, oPC))
|
||||
@@ -1579,9 +1592,12 @@ void main()
|
||||
}
|
||||
|
||||
// Find the spell levels.
|
||||
int iCha = GetLocalInt(oSkin, "PRC_trueCHA") - 10;
|
||||
int iWis = GetLocalInt(oSkin, "PRC_trueWIS") - 10;
|
||||
int iInt = GetLocalInt(oSkin, "PRC_trueINT") - 10;
|
||||
int iCha = GetAbilityScore(oPC, ABILITY_CHARISMA, TRUE) - 10;
|
||||
int iInt = GetAbilityScore(oPC, ABILITY_INTELLIGENCE, TRUE) - 10;
|
||||
int iWis = GetAbilityScore(oPC, ABILITY_WISDOM, TRUE) - 10;
|
||||
//int iCha = GetLocalInt(oSkin, "PRC_trueCHA") - 10;
|
||||
//int iWis = GetLocalInt(oSkin, "PRC_trueWIS") - 10;
|
||||
//int iInt = GetLocalInt(oSkin, "PRC_trueINT") - 10;
|
||||
int nArcHighest;
|
||||
int nDivHighest;
|
||||
int nPsiHighest;
|
||||
|
@@ -149,7 +149,7 @@ void DoWeaponUnequip(object oPC, object oItem)
|
||||
}
|
||||
}
|
||||
|
||||
if(DEBUG) DoDebug("prc_restwpnsize - OnUnEquip");
|
||||
// if(DEBUG) DoDebug("prc_restwpnsize - OnUnEquip"); // <-script no longer exists
|
||||
|
||||
// remove any TWF penalties
|
||||
//if weapon was a not light, and there's still something equipped in the main hand(meaning that an offhand item was de-equipped)
|
||||
|
Reference in New Issue
Block a user