Exalted update

Updated Vow of Poverty. Added Sanctify Ki Strike, Holy Strike, Fist of Heavens, Vow of Abstinence, Vow of Chastity & Gift of Faith.  (@fenac).  Turned off the Taunt & Parry skills.  Re-disabled AC & save bonuses from Tumble & Spellcraft.   Updated min() & max() to PRCmin() & PRCmax() to not conflict with similarly named NUI adjacent functions.  Set Point Blank Shot to 30' per PnP.  Added icon for Chosen of Evil.  Started work on Hidden Talent.  Created Psionics function cheatsheet.  Updated release archive.
This commit is contained in:
Jaysyn904 2025-01-29 22:46:38 -05:00
parent 370b29e917
commit e641b42f84
209 changed files with 1893 additions and 926 deletions

View File

@ -0,0 +1,110 @@
Here is a list of all the identified psionic functions along with a brief synopsis of their parameters and what they represent:
From psi_inc_core.txt
- GetPowerLevel(object oManifester)
- oManifester: The creature object manifesting power. This function retrieves the psionic power level of the creature.
From psi_inc_psifunc.txt
- EvaluateManifestation(object oManifester, object oTarget, struct power_augment_profile pap, int nMetaPsiFlags)
- oManifester: The creature that is attempting to manifest the power.
- oTarget: The target of the power.
- pap: A structure containing parameters outlining how the power may be augmented.
- nMetaPsiFlags: Bit flags indicating which metapsionic powers might apply during this manifestation.
- UsePower(int nPower, int nClass, int bIsPsiLike = FALSE, int nLevelOverride = 0)
- nPower: Identifier of the psionic power to use.
- nClass: Class identifier from which the power is being used.
- bIsPsiLike: Boolean flag specifying whether the power being used should be treated as a psi-like ability.
- nLevelOverride: Optional parameter to override the default power level.
- DebugManifestation2Str(struct manifestation manif)
- manif: Struct containing data about the current psionic manifestation—used to generate a string for debugging purposes.
- SetLocalManifestation(object oObject, string sName, struct manifestation manif)
- oObject, sName: Target object and the string name under which this data is stored.
- manif: Data about the current psionic manifestation to store.
- GetLocalManifestation(object oObject, string sName)
- oObject and sName: Retrieve stored manifestation data from the object using the given name.
- DebugIgnoreConstraints(object oManifester)
- oManifester: Creature to ignore psionic constraints for debugging.
- EvaluateDiaDragChannel(object oManifester, object oTarget, struct power_augment_profile pap, int nPowerLevel)
- Similar to EvaluateManifestation but tailored for specific channeling functionality in psionics.
From psi_inc_metapsi.txt
- EvaluateMetapsionics(struct manifestation manif, int nMetaPsiFlags)
- Describes how metapsionic modifications affect the current psionic power manifestation.
- PayMetapsionicsFocuses(struct manifestation manif)
- Calculates costs in terms of psionic focuses for using metapsionic modifications.
- MetaPsionicsDamage(struct manifestation manif, int nDieSize, int nNumberOfDice, int nBonus = 0, int nBonusPerDie = 0, int bDoesHPDamage = FALSE, int bIsRayOrRangedTouch = FALSE)
- Calculates how metapsionics affect the damage output of a psionic power.
- EvaluateWidenPower(struct manifestation manif, float fBase)
- Determines the effect of the "Widen Power" metapsionic on the area of effect size.
- EvaluateChainPower(struct manifestation manif, object oPrimaryTarget, int bAutoDelete = TRUE)
- Builds a list of secondary targets for chained psionic powers.
- GetSplitPsionicRayTarget(struct manifestation manif, object oPrimaryTarget)
- Identifies an additional target for the "Split Psionic Ray" metapsionic.
From psi_inc_augment.txt
- PowerAugmentationProfile(...)
- Sets up a profile detailing how a psionic power can be augmented.
- GetUserAugmentationProfile(object oUser, int nIndex, int bQuickSelection = FALSE)
- Retrieves a user-defined configuration of how they want their psionic power augmented.
- GetCurrentUserAugmentationProfile(object oUser)
- Retrieves the current, active augmentation profile for a user.
- StoreUserAugmentationProfile(object oUser, int nIndex, struct user_augment_profile uap, int bQuickSelection = FALSE)
- Stores or updates a psionic augmentation configuration.
- UserAugmentationProfileToString(struct user_augment_profile uap)
- Converts an augmentation profile to a human-readable string.
- EvaluateAugmentation(struct manifestation manif, struct power_augment_profile pap)
- Applies user-defined augmentations to a psionic power manifestation to adjust its effects.
- SetAugmentationOverride(object oCreature, struct user_augment_profile uap)
- Allows overriding the current augmentation settings forcibly.
From psi_inc_ppoints.txt
- GetCurrentPowerPoints(object oChar)
- Retrieves the current power points of a character.
- GetMaximumPowerPoints(object oChar)
- Calculates the maximum power points a character can have.
- GetPowerPointsAsString(object oChar)
- Gets a string representation of both current and maximum power points.
- TellCharacterPowerPointStatus(object oChar)
- Displays a characters power points.
- ResetPowerPoints(object oChar)
- Resets a characters power points to maximum.
- GainPowerPoints(object oChar, int nGain, int bCanExceedMax = FALSE, int bInform = TRUE)
- Increases a characters power points, possibly beyond the maximum.
- LosePowerPoints(object oChar, int nLoss, int bInform = TRUE)
- Deducts from a characters power points without going below zero.
- LoseAllPowerPoints(object oChar, int bInform = TRUE)
- Sets a characters power points to zero, including notification.
These functions manage various aspects of psionic powers in the game, including their initialization, application, augmentation, power points management, and interactions with metapsionic abilities.

View File

@ -1,209 +0,0 @@
int GetArcanePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
{
int nArcane;
int nOozeMLevel = GetLevelByClass(CLASS_TYPE_OOZEMASTER, oCaster);
int nUM = GetLevelByClass(CLASS_TYPE_ULTIMATE_MAGUS, oCaster);
int nFirstClass = GetClassByPosition(1, oCaster);
int nSecondClass = GetClassByPosition(2, oCaster);
int nThirdClass = GetClassByPosition(3, oCaster);
int nFourthClass = GetClassByPosition(4, oCaster);
int nFifthClass = GetClassByPosition(5, oCaster);
int nSixthClass = GetClassByPosition(6, oCaster);
int nSeventhClass = GetClassByPosition(7, oCaster);
int nEighthClass = GetClassByPosition(8, oCaster);
if (GetFirstArcaneClassPosition(oCaster)) nArcane += GetLevelByClass(CLASS_TYPE_SOULCASTER, oCaster);
nArcane += GetLevelByClass(CLASS_TYPE_ABJURANT_CHAMPION, oCaster)
+ GetLevelByClass(CLASS_TYPE_ALIENIST, oCaster)
+ GetLevelByClass(CLASS_TYPE_ANIMA_MAGE, oCaster)
+ GetLevelByClass(CLASS_TYPE_ARCANE_HIEROPHANT, oCaster)
+ GetLevelByClass(CLASS_TYPE_ARCHMAGE, oCaster)
+ GetLevelByClass(CLASS_TYPE_ARCTRICK, oCaster)
+ GetLevelByClass(CLASS_TYPE_CEREBREMANCER, oCaster)
+ GetLevelByClass(CLASS_TYPE_DIABOLIST, oCaster)
+ GetLevelByClass(CLASS_TYPE_DRAGONHEART_MAGE, oCaster)
+ GetLevelByClass(CLASS_TYPE_ELDRITCH_KNIGHT, oCaster)
+ GetLevelByClass(CLASS_TYPE_ELDRITCH_THEURGE, oCaster)
+ GetLevelByClass(CLASS_TYPE_ELEMENTAL_SAVANT,oCaster)
+ GetLevelByClass(CLASS_TYPE_FMM, oCaster)
+ GetLevelByClass(CLASS_TYPE_FROST_MAGE, oCaster)
+ GetLevelByClass(CLASS_TYPE_HARPERMAGE, oCaster)
+ GetLevelByClass(CLASS_TYPE_JADE_PHOENIX_MAGE, oCaster)
+ GetLevelByClass(CLASS_TYPE_MAGEKILLER, oCaster)
+ GetLevelByClass(CLASS_TYPE_MASTER_ALCHEMIST, oCaster)
+ GetLevelByClass(CLASS_TYPE_MASTER_HARPER, oCaster)
+ GetLevelByClass(CLASS_TYPE_MYSTIC_THEURGE, oCaster)
+ GetLevelByClass(CLASS_TYPE_NOCTUMANCER, oCaster)
+ GetLevelByClass(CLASS_TYPE_SPELLDANCER, oCaster)
+ GetLevelByClass(CLASS_TYPE_TRUENECRO, oCaster)
+ GetLevelByClass(CLASS_TYPE_RED_WIZARD, oCaster)
+ GetLevelByClass(CLASS_TYPE_SHADOW_ADEPT, oCaster)
+ GetLevelByClass(CLASS_TYPE_SUBLIME_CHORD, oCaster)
+ GetLevelByClass(CLASS_TYPE_UNSEEN_SEER, oCaster)
+ GetLevelByClass(CLASS_TYPE_VIRTUOSO, oCaster)
+ GetLevelByClass(CLASS_TYPE_WAR_WIZARD_OF_CORMYR, oCaster)
+ (GetLevelByClass(CLASS_TYPE_BLADESINGER, oCaster) + 1) / 2
+ (GetLevelByClass(CLASS_TYPE_BONDED_SUMMONNER, oCaster) + 1) / 2
+ (GetLevelByClass(CLASS_TYPE_PALEMASTER, oCaster) + 1) / 2
+ (GetLevelByClass(CLASS_TYPE_HATHRAN, oCaster) + 1) / 2
+ (GetLevelByClass(CLASS_TYPE_HAVOC_MAGE, oCaster) + 1) / 2
+ (GetLevelByClass(CLASS_TYPE_SPELLSWORD, oCaster) + 1) / 2
+ (GetLevelByClass(CLASS_TYPE_THRALL_OF_GRAZZT_A, oCaster) + 1) / 2
+ (GetLevelByClass(CLASS_TYPE_TALON_OF_TIAMAT, oCaster) + 1) / 2
+ (GetLevelByClass(CLASS_TYPE_RAGE_MAGE, oCaster) + 1) / 2
+ (GetLevelByClass(CLASS_TYPE_WAYFARER_GUIDE, oCaster) + 1) / 2
+ (GetLevelByClass(CLASS_TYPE_JUDICATOR, oCaster) + 1) / 3;
int nClass = GetLevelByClass(CLASS_TYPE_WILD_MAGE, oCaster);
if (nClass)
nArcane += nClass - 3 + d6();
//The following changes are to prevent a mage/invoker from gaining bonus caster levels in both base classes.
if(GetLocalInt(oCaster, "INV_Caster") == 1 ||
(!GetLevelByClass(CLASS_TYPE_WARLOCK, oCaster) && !GetLevelByClass(CLASS_TYPE_DRAGONFIRE_ADEPT, oCaster)))
nArcane += (GetLevelByClass(CLASS_TYPE_ACOLYTE, oCaster) + 1) / 2
+ (GetLevelByClass(CLASS_TYPE_DISCIPLE_OF_ASMODEUS, oCaster) + 1) / 2
+ (GetLevelByClass(CLASS_TYPE_TALON_OF_TIAMAT, oCaster) + 1) / 2
+ GetLevelByClass(CLASS_TYPE_ENLIGHTENEDFIST, oCaster)
+ GetLevelByClass(CLASS_TYPE_MAESTER, oCaster);
/* oozemaster levels count towards arcane caster level if:
*
* first class slot is arcane OR
* first class slot is NOT divine AND second class slot is arcane OR
* first AND second class slot is NOT divine AND 3rd class slot is arcane
*/
if (nOozeMLevel) //:: [PRC .35] This needs marker feats.
{
if (GetIsArcaneClass(nFirstClass, oCaster)
|| (!GetIsDivineClass(nFirstClass, oCaster)
&& GetIsArcaneClass(nSecondClass, oCaster))
|| (!GetIsDivineClass(nFirstClass, oCaster)
&& !GetIsDivineClass(nSecondClass, oCaster)
&& GetIsArcaneClass(nThirdClass, oCaster)))
nArcane += nOozeMLevel / 2;
}
if (nUM)
{
int nBoost = nUM - 1; //Prep caster always loses a level on first level of the class
if (nUM >= 4) nBoost = nUM - 2;
if (nUM >= 7) nBoost = nUM - 3;
nArcane += nBoost;
if (nCastingClass == CLASS_TYPE_SORCERER)
{
int nBoost = 1; //Sorcerer gets the lost levels back
if (nUM >= 4) nBoost = 2;
if (nUM >= 7) nBoost = 3;
nArcane += nBoost;
}
}
if(GetLevelByClass(CLASS_TYPE_SORCERER, oCaster))
{
int nRace = GetRacialType(oCaster);
//includes RHD HD as sorc
//if they have sorcerer levels, then it counts as a prestige class
//otherwise its used instead of sorc levels
if(nRace == RACIAL_TYPE_ARANEA)
nArcane += GetLevelByClass(CLASS_TYPE_SHAPECHANGER);
if(nRace == RACIAL_TYPE_RAKSHASA)
nArcane += GetLevelByClass(CLASS_TYPE_OUTSIDER);
if(nRace == RACIAL_TYPE_DRIDER)
nArcane += GetLevelByClass(CLASS_TYPE_ABERRATION);
if(nRace == RACIAL_TYPE_ARKAMOI)
nArcane += GetLevelByClass(CLASS_TYPE_MONSTROUS);
if(nRace == RACIAL_TYPE_REDSPAWN_ARCANISS)
nArcane += GetLevelByClass(CLASS_TYPE_MONSTROUS)*3/4;
if(nRace == RACIAL_TYPE_MARRUTACT)
nArcane += (GetLevelByClass(CLASS_TYPE_MONSTROUS)*6/7)-1;
}
if(GetLevelByClass(CLASS_TYPE_BARD, oCaster))
{
int nRace = GetRacialType(oCaster);
//includes RHD HD as bard
//if they have bard levels, then it counts as a prestige class
//otherwise its used instead of bard levels
if(nRace == RACIAL_TYPE_GLOURA)
nArcane += GetLevelByClass(CLASS_TYPE_FEY);
}
return nArcane;
}
int GetDivinePRCLevels(object oCaster)
{
int nDivine;
int nOozeMLevel = GetLevelByClass(CLASS_TYPE_OOZEMASTER, oCaster);
int nFirstClass = GetClassByPosition(1, oCaster);
int nSecondClass = GetClassByPosition(2, oCaster);
int nThirdClass = GetClassByPosition(3, oCaster);
int nFourthClass = GetClassByPosition(4, oCaster);
int nFifthClass = GetClassByPosition(5, oCaster);
int nSixthClass = GetClassByPosition(6, oCaster);
int nSeventhClass = GetClassByPosition(7, oCaster);
int nEighthClass = GetClassByPosition(8, oCaster);
// This section accounts for full progression classes
nDivine += GetLevelByClass(CLASS_TYPE_ARCANE_HIEROPHANT, oCaster)
+ GetLevelByClass(CLASS_TYPE_BLIGHTLORD, oCaster)
+ GetLevelByClass(CLASS_TYPE_COMBAT_MEDIC, oCaster)
+ GetLevelByClass(CLASS_TYPE_CONTEMPLATIVE, oCaster)
+ GetLevelByClass(CLASS_TYPE_ELDRITCH_DISCIPLE, oCaster)
+ GetLevelByClass(CLASS_TYPE_FORESTMASTER, oCaster)
+ GetLevelByClass(CLASS_TYPE_FISTRAZIEL, oCaster)
+ GetLevelByClass(CLASS_TYPE_HEARTWARDER, oCaster)
+ GetLevelByClass(CLASS_TYPE_HIEROPHANT, oCaster)
+ GetLevelByClass(CLASS_TYPE_HOSPITALER, oCaster)
+ GetLevelByClass(CLASS_TYPE_MASTER_OF_SHROUDS, oCaster)
+ GetLevelByClass(CLASS_TYPE_MORNINGLORD, oCaster)
+ GetLevelByClass(CLASS_TYPE_MYSTIC_THEURGE, oCaster)
+ GetLevelByClass(CLASS_TYPE_PSYCHIC_THEURGE, oCaster)
+ GetLevelByClass(CLASS_TYPE_RUBY_VINDICATOR, oCaster)
+ GetLevelByClass(CLASS_TYPE_RUNECASTER, oCaster)
+ GetLevelByClass(CLASS_TYPE_SACREDPURIFIER, oCaster)
+ GetLevelByClass(CLASS_TYPE_SAPPHIRE_HIERARCH, oCaster)
+ GetLevelByClass(CLASS_TYPE_SHADOWBANE_STALKER,oCaster)
+ GetLevelByClass(CLASS_TYPE_STORMLORD, oCaster)
+ GetLevelByClass(CLASS_TYPE_SWIFT_WING, oCaster)
+ GetLevelByClass(CLASS_TYPE_TENEBROUS_APOSTATE, oCaster)
+ (GetLevelByClass(CLASS_TYPE_BFZ, oCaster) + 1) / 2
+ (GetLevelByClass(CLASS_TYPE_BRIMSTONE_SPEAKER, oCaster) + 1) / 2
+ (GetLevelByClass(CLASS_TYPE_HATHRAN, oCaster) + 1) / 2
+ (GetLevelByClass(CLASS_TYPE_MIGHTY_CONTENDER_KORD, oCaster) + 1) / 2
+ (GetLevelByClass(CLASS_TYPE_OLLAM, oCaster) + 1) / 2
+ (GetLevelByClass(CLASS_TYPE_ORCUS, oCaster) + 1) / 2
+ (GetLevelByClass(CLASS_TYPE_SHINING_BLADE, oCaster) + 1) / 2
+ (GetLevelByClass(CLASS_TYPE_TEMPUS, oCaster) + 1) / 2
+ (GetLevelByClass(CLASS_TYPE_WARPRIEST, oCaster) + 1) / 2
+ (GetLevelByClass(CLASS_TYPE_JUDICATOR, oCaster) + 1) / 3;
if (!GetHasFeat(FEAT_SF_CODE, oCaster))
{
nDivine += GetLevelByClass(CLASS_TYPE_SACREDFIST, oCaster);
}
if (nOozeMLevel) //:: [PRC .35] This needs marker feats.
{
if (GetIsDivineClass(nFirstClass, oCaster)
|| (!GetIsArcaneClass(nFirstClass, oCaster)
&& GetIsDivineClass(nSecondClass, oCaster))
|| (!GetIsArcaneClass(nFirstClass, oCaster)
&& !GetIsArcaneClass(nSecondClass, oCaster)
&& GetIsDivineClass(nThirdClass, oCaster)))
nDivine += nOozeMLevel / 2;
}
return nDivine;
}

BIN
Release/PRC8_20250129.7z Normal file

Binary file not shown.

BIN
_backup/PRC8_20250128.7z Normal file

Binary file not shown.

View File

@ -220,8 +220,8 @@
216 WP_Light_Pick 7940 3 1 0
217 WP_Falchion 7943 3 1 0
218 WP_Maul 7947 3 1 0
219 FEAT_CHARMING_THE_ARROW 25997 3 1 0
220 FEAT_MARTIAL_STALKER 25998 3 1 0
219 FEAT_CHARMING_THE_ARROW 25997 1 -1 0
220 FEAT_MARTIAL_STALKER 25998 1 -1 0
221 Expertise 389 1 -1 0
222 ImpExpertise 390 1 -1 0
223 GreatCleave 391 1 -1 0

View File

@ -14267,7 +14267,7 @@
14263 Prevenom **** 1 1 1 1 0
14264 PrevenomWeapon **** 1 1 1 1 1
14265 GripOfIron **** 1 1 1 1 0
14266 PsionicLionsCharge **** 1 1 1 1 0
14266 PsionicLionsCharge **** 1 1 1 2 0
14267 **Level_6_Powers** **** 1 1 1 **** 0
14268 **Level_6_Powers** **** 1 1 1 **** 0
14269 **Level_6_Powers** **** 1 1 1 **** 0

View File

@ -5361,7 +5361,7 @@
5357 Factotum_Cunning_Knowledge 16824532 16826316 fot_oracle **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 3903 **** 1 -1 **** 1 **** **** **** **** **** **** **** **** **** **** 4 **** **** **** **** **** 0 0
5358 Factotum_Opportunistic_Piety_Heal 16826317 16826318 fot_regenerate **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 3904 **** 1 10 **** **** **** **** **** **** **** **** **** **** **** **** 4 **** **** **** **** **** 0 1
5359 Factotum_Opportunistic_Piety_Turn 16826319 16826320 fot_contundead **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 3905 **** 1 10 **** 1 **** **** **** **** **** **** **** **** **** **** 4 **** **** **** **** **** 0 1
5360 Vow_Purity 16826325 16826326 ife_sacredvow **** **** **** **** **** **** **** **** 3388 **** 0 0 1 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_VOW_OBED 6 **** **** **** **** **** 0 1
5360 FEAT_VOW_PURITY 16826325 16826326 ife_sacredvow **** **** **** **** **** **** **** **** 3388 **** 0 0 1 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_VOW_PURITY 6 **** **** **** **** **** 0 1
5361 Sharess_Fascinate 16826327 16826934 ife_X1SDaze **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 3907 **** 1 10 **** 1 **** **** **** **** **** **** **** **** **** **** 4 **** **** **** **** **** 0 1
5362 Sharess_Confuse 16826935 16826936 ife_X1HTym **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 3908 **** 1 10 **** **** **** **** **** **** **** **** **** **** **** **** 4 **** **** **** **** **** 0 1
5363 Sharess_Dominate 16826937 16826938 ife_X1HLHrt **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 3909 **** 1 10 **** **** **** **** **** **** **** **** **** **** **** **** 4 **** **** **** **** **** 0 1
@ -24039,7 +24039,7 @@
24035 MastersWill 16847381 16847382 ife_mast_will **** **** **** **** **** **** **** **** **** **** **** **** 1 **** **** 3844 **** **** **** **** **** **** **** **** **** **** **** **** **** **** FEAT_MASTERS_WILL **** 0 **** **** **** **** **** 1
24036 DeformityMadness 16847383 16847384 ife_dfrm_mad **** **** **** **** **** **** **** **** 4408 **** 0 0 1 **** **** 3841 **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_DEFORM_MADNESS **** 0 **** **** **** **** 0 1
24037 ReflexivePsychosis 16847385 16847386 ife_rflx_psych **** **** **** **** **** **** **** **** 24036 **** **** **** 1 **** **** 3842 **** **** **** **** **** **** **** **** **** **** **** **** **** **** FEAT_REFLEXIVE_PSYCHOSIS **** 0 **** **** **** **** **** 1
24038 ChosenOfEvil 16847387 16847388 ife_X2SelfConc1 **** **** **** **** **** 13 **** **** **** **** **** **** 1 **** **** 3843 **** **** **** **** **** **** **** **** **** **** **** **** **** **** FEAT_CHOSEN_OF_EVIL **** 0 **** **** **** **** **** 1
24038 ChosenOfEvil 16847387 16847388 ife_chosen_evil **** **** **** **** **** 13 **** **** **** **** **** **** 1 **** **** 3843 **** **** **** **** **** **** **** **** **** **** **** **** **** **** FEAT_CHOSEN_OF_EVIL **** 0 **** **** **** **** **** 1
24039 FrozenBerserker 16847329 16847330 ife_X1ResCol **** **** **** **** **** **** **** **** 293 **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** FEAT_MAGICAL_ARTISAN_CRAFT_SKULL_TALISMAN **** 0 **** **** **** **** **** 1
24040 SpellFocusCold 16847325 16847326 ife_foc_spel **** **** **** **** **** **** **** **** **** **** 0 0 1 **** **** **** 24041 1 **** 3 **** **** **** **** **** **** **** **** **** **** FEAT_SPELL_FOCUS_COLD 4 **** **** **** **** **** 0 1
24041 GrSpellFocusCold 16847327 16847328 ife_X1GSFAbj **** **** **** **** **** **** **** **** 24040 **** 0 0 1 **** **** **** **** 0.5 **** 6 **** **** **** **** **** **** **** **** **** **** FEAT_GREATER_SPELL_FOCUS_COLD 4 **** **** **** **** **** 0 1
@ -25901,53 +25901,53 @@
25897 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25898 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25899 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25900 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25901 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25902 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25903 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25904 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25905 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25906 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25907 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25908 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25909 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25910 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25911 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25912 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25913 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25914 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25915 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25916 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25917 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25918 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25919 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25920 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25921 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25922 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25923 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25924 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25925 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25926 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25927 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25928 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25929 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25930 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25931 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25932 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25933 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25934 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25935 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25936 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25937 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25938 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25939 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25940 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25941 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25942 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25943 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25944 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25945 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25946 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25900 "## START PRC8 HIDDEN TALENT FEATS ##" **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25901 FEAT_HIDDEN_TALENT_BIOFEEDBACK 16990419 16823714 fot_protmagweap **** **** **** **** **** **** 11 **** **** **** 0 0 1 12 **** 14479 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_BIOFEEDBACK 6 0 **** **** 1 **** 0 0
25902 FEAT_HIDDEN_TALENT_BITE_WOLF 16990420 16824105 fot_bitewolf **** **** **** **** **** **** 11 **** **** **** 0 0 1 10 **** 14421 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_BITE_WOLF 6 0 **** **** 1 **** 0 0
25903 FEAT_HIDDEN_TALENT_BOLT 16990421 16823684 fot_minorseq **** **** **** **** **** **** 11 **** **** **** 0 0 1 12 **** 14422 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_BOLT 6 0 **** **** 1 **** 0 0
25904 FEAT_HIDDEN_TALENT_BURST 16990422 16823921 fot_exped **** **** **** **** **** **** 11 **** **** **** 0 0 1 10 **** 14423 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_BURST 6 0 **** **** 1 **** 0 0
25905 FEAT_HIDDEN_TALENT_CALLTOMIND 16990423 16823630 fot_knowalign **** **** **** **** **** **** 11 **** **** **** 0 0 1 **** **** 14424 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_CALLTOMIND 6 0 **** **** 1 **** 0 0
25906 FEAT_HIDDEN_TALENT_CALL_WEAPONRY 16990424 16824111 fot_seeksword **** **** **** **** **** **** 11 **** **** **** 0 0 1 9 **** 14425 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_CALL_WEAPONRY 6 0 **** **** 1 **** 0 0
25907 FEAT_HIDDEN_TALENT_CHAMELEON 16990425 16823642 fot_chameleon **** **** **** **** **** **** 11 **** **** **** 0 0 1 10 **** 14482 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_CHAMELEON 6 0 **** **** 1 **** 0 0
25908 FEAT_HIDDEN_TALENT_CLAWS_BEAST 16990426 16824107 fot_clawbeast **** **** **** **** **** **** 11 **** **** **** 0 0 1 10 **** 14427 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_CLAWS_BEAST 6 0 **** **** 1 **** 0 0
25909 FEAT_HIDDEN_TALENT_COMPRESSION 16990427 16824120 fot_compress **** **** **** **** **** **** 11 **** **** **** 0 0 1 9 **** 14428 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_COMPRESSION 6 0 **** **** 1 **** 0 0
25910 FEAT_HIDDEN_TALENT_CONCEALTHOUGHT 16990428 16823759 fot_nondetect **** **** **** **** **** **** 11 **** **** **** 0 0 1 7 **** 14429 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_CONCEALTHOUGHT 6 0 **** **** 1 **** 0 0
25911 FEAT_HIDDEN_TALENT_CREATESOUND 16990429 16823869 fot_vocal **** **** **** **** **** **** 11 **** **** **** 0 0 1 11 **** 14431 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_CREATESOUND 6 1 **** **** 1 **** 0 0
25912 FEAT_HIDDEN_TALENT_CRYSTALSHARD 16990430 16823632 fot_icestorm **** **** **** **** **** **** 11 **** **** **** 0 0 1 2 **** 14432 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_CRYSTALSHARD 6 1 **** **** 1 **** 0 0
25913 FEAT_HIDDEN_TALENT_DAZE 16990431 16823650 fot_invisstalk **** **** **** **** **** **** 11 **** **** **** 0 0 1 2 **** 14433 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_DAZE 6 1 **** **** 1 **** 0 0
25914 FEAT_HIDDEN_TALENT_DECELERATION 16990432 16823652 fot_Slow **** **** **** **** **** **** 11 **** **** **** 0 0 1 1 **** 14434 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_DECELERATION 6 1 **** **** 1 **** 0 0
25915 FEAT_HIDDEN_TALENT_DEFPRECOG 16990433 16823708 fot_shield **** **** **** **** **** **** 11 **** **** **** 0 0 1 13 **** 14435 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_DEFPRECOG 6 0 **** **** 1 **** 0 0
25916 FEAT_HIDDEN_TALENT_DEMORALIZE 16990434 16823686 fot_lowerres **** **** **** **** **** **** 11 **** **** **** 0 0 1 8 **** 14436 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_DEMORALIZE 6 0 **** **** 1 **** 0 0
25917 FEAT_HIDDEN_TALENT_DISABLE 16990435 16823688 fot_enfeeble **** **** **** **** **** **** 11 **** **** **** 0 0 1 2 **** 14438 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_DISABLE 6 1 **** **** 1 **** 0 0
25918 FEAT_HIDDEN_TALENT_DISSIPATINGTOUCH 16990436 16823656 fot_chilltouch **** **** **** **** **** **** 11 **** **** **** 0 0 1 3 **** 14439 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_DISSIPATINGTOUCH 6 1 **** **** 1 **** 0 0
25919 FEAT_HIDDEN_TALENT_DISTRACT 16990437 16823690 fot_powerblind **** **** **** **** **** **** 11 **** **** **** 0 0 1 2 **** 14440 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_DISTRACT 6 1 **** **** 1 **** 0 0
25920 FEAT_HIDDEN_TALENT_ELF_SIGHT 16990438 16823720 fot_infravis **** **** **** **** **** **** 11 **** **** **** 0 0 1 10 **** 14370 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_ELF_SIGHT 6 0 **** **** 1 **** 0 0
25921 FEAT_HIDDEN_TALENT_EMPATHY 16990439 16823761 fot_friends **** **** **** **** **** **** 11 **** **** **** 0 0 1 **** **** 14441 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_EMPATHY 6 0 **** **** 1 **** 0 0
25922 FEAT_HIDDEN_TALENT_EMPTYMIND 16990440 16823692 fot_detillusion **** **** **** **** **** **** 11 **** **** **** 0 0 1 9 **** 14442 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_EMPTYMIND 6 0 **** **** 1 **** 0 0
25923 FEAT_HIDDEN_TALENT_ENERGYRAY 16990441 16823694 fot_flamearrow **** **** **** **** **** **** 11 **** **** **** 0 0 1 **** **** 14443 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_ENERGYRAY 6 1 **** **** 1 **** 0 0
25924 FEAT_HIDDEN_TALENT_ENTANGLE 16990442 16823700 fot_entangle **** **** **** **** **** **** 11 **** **** **** 0 0 1 2 **** 14448 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_ENTANGLE 6 1 **** **** 1 **** 0 0
25925 FEAT_HIDDEN_TALENT_EXPANSION 16990443 16824128 fot_strength **** **** **** **** **** **** 11 **** **** **** 0 0 1 9 **** 14449 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_EXPANSION 6 0 **** **** 1 **** 0 0
25926 FEAT_HIDDEN_TALENT_FARHAND 16990444 16823763 fot_magicshort **** **** **** **** **** **** 11 **** **** **** 0 0 1 2 **** 14450 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_FARHAND 6 0 **** **** 1 **** 0 0
25927 FEAT_HIDDEN_TALENT_FORCESCREEN 16990445 16823658 fot_polyself **** **** **** **** **** **** 11 **** **** **** 0 0 1 13 **** 14451 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_FORCESCREEN 6 0 **** **** 1 **** 0 0
25928 FEAT_HIDDEN_TALENT_GREASE 16990446 16823702 fot_Grease **** **** **** **** **** **** 11 **** **** **** 0 0 1 11 **** 14452 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_GREASE 6 1 **** **** 1 **** 0 0
25929 FEAT_HIDDEN_TALENT_HAMMER 16990447 16823704 fot_hammer **** **** **** **** **** **** 11 **** **** **** 0 0 1 10 **** 14453 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_HAMMER 6 1 **** **** 1 **** 0 0
25930 FEAT_HIDDEN_TALENT_INERTIALARMOUR 16990448 16823660 fot_armor **** **** **** **** **** **** 11 **** **** **** 0 0 1 9 **** 14454 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_INERTIALARMOUR 6 0 **** **** 1 **** 0 0
25931 FEAT_HIDDEN_TALENT_MATTERAGITATION 16990449 16823765 fot_elementfire **** **** **** **** **** **** 11 **** **** **** 0 0 1 3 **** 14455 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_MATTERAGITATION 6 1 **** **** 1 **** 0 0
25932 FEAT_HIDDEN_TALENT_METAPHYSICAL_CLAW 16990450 16824134 fot_metaclaw **** **** **** **** **** **** 11 **** **** **** 0 0 1 9 **** 14456 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_METAPHYSICAL_CLAW 6 0 **** **** 1 **** 0 0
25933 FEAT_HIDDEN_TALENT_METAPHYSICAL_WEAPON 16990451 16824136 fot_protnormal **** **** **** **** **** **** 11 **** **** **** 0 0 1 9 **** 14457 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_METAPHYSICAL_WEAPON 6 0 **** **** 1 **** 0 0
25934 FEAT_HIDDEN_TALENT_MINDTHRUST 16990452 16823615 fot_skulltrap **** **** **** **** **** **** 11 **** **** **** 0 0 1 2 **** 14458 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_MINDTHRUST 6 1 **** **** 1 **** 0 0
25935 FEAT_HIDDEN_TALENT_MYLIGHT 16990453 16823706 fot_dawn **** **** **** **** **** **** 11 **** **** **** 0 0 1 **** **** 14459 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_MYLIGHT 6 0 **** **** 1 **** 0 0
25936 FEAT_HIDDEN_TALENT_OFFPRECOG 16990454 16823710 fot_snare **** **** **** **** **** **** 11 **** **** **** 0 0 1 9 **** 14460 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_OFFPRECOG 6 0 **** **** 1 **** 0 0
25937 FEAT_HIDDEN_TALENT_OFFPRESC 16990455 16823712 fot_sols **** **** **** **** **** **** 11 **** **** **** 0 0 1 9 **** 14461 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_OFFPRESC 6 0 **** **** 1 **** 0 0
25938 FEAT_HIDDEN_TALENT_PREVENOM 16990456 16824142 fot_grmalison **** **** **** **** **** **** 11 **** **** **** 0 0 1 2 **** 14468 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_PREVENOM 6 0 **** **** 1 **** 0 0
25939 FEAT_HIDDEN_TALENT_PREVENOM_WEAPON 16990457 16824144 fot_prevnmw **** **** **** **** **** **** 11 **** **** **** 0 0 1 2 **** 14469 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_PREVENOM_WEAPON 6 0 **** **** 1 **** 0 0
25940 FEAT_HIDDEN_TALENT_SKATE 16990458 16823767 fot_haste **** **** **** **** **** **** 11 **** **** **** 0 0 1 10 **** 14470 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_SKATE 6 0 **** **** 1 **** 0 0
25941 FEAT_HIDDEN_TALENT_STOMP 16990459 16823682 fot_stomp **** **** **** **** **** **** 11 **** **** **** 0 0 1 2 **** 14471 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_STOMP 6 1 **** **** 1 **** 0 0
25942 FEAT_HIDDEN_TALENT_SYNESTHETE 16990460 16823755 fot_physmirror **** **** **** **** **** **** 11 **** **** **** 0 0 1 2 **** 14472 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_SYNESTHETE 6 0 **** **** 1 **** 0 0
25943 FEAT_HIDDEN_TALENT_TELEMPATHICPRO 16990461 16823769 fot_charmanim **** **** **** **** **** **** 11 **** **** **** 0 0 1 2 **** 14473 **** **** **** 120 0 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_TELEMPATHICPRO 6 0 **** **** 1 **** 0 0
25944 FEAT_HIDDEN_TALENT_THICKSKIN 16990462 16823670 fot_barkskin **** **** **** **** **** **** 11 **** **** **** 0 0 1 13 **** 14474 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_THICKSKIN 6 0 **** **** 1 **** 0 0
25945 FEAT_HIDDEN_TALENT_VIGOR 16990463 16823672 fot_horror **** **** **** **** **** **** 11 **** **** **** 0 0 1 9 **** 14475 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_VIGOR 6 0 **** **** 1 **** 0 0
25946 FEAT_HIDDEN_TALENT_GRIP_IRON 16990464 16790301 fot_metaclaw **** **** **** **** **** **** 11 **** **** **** 0 0 1 10 **** 15686 **** **** **** 120 1 **** **** **** **** **** **** **** **** **** FEAT_HIDDEN_TALENT_GRIP_IRON 6 0 **** **** 1 **** 0 0
25947 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25948 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25949 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
@ -25998,8 +25998,15 @@
25994 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25995 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25996 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25997 FEAT_CHARMING_THE_ARROW 16990312 16990313 if_charm_arrow **** **** **** **** **** **** **** **** **** **** 0 0 1 **** **** **** **** 1 **** **** **** 3239 4718 **** **** **** **** **** **** **** FEAT_CHARMING_THE_ARROW 6 0 **** **** **** **** 0 0
25998 FEAT_MARTIAL_STALKER 16990314 16990315 IR_NINJA **** **** **** **** **** **** **** **** 2488 45 0 0 1 **** **** **** **** 0.5 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_MARTIAL_STALKER 5 0 **** **** **** **** 0 0
25999 "#BEGIN PRC8 WOL RESERVE#" **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
26000 Bullybasher_GiantBearing 16977316 16977317 is_giantbearing **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 16553 **** 0.5 **** **** 1 **** **** **** **** **** **** **** **** **** WOL_BULLY_GIANT 6 0 **** **** **** **** 0 0
26001 FEAT_VOWOFPOVERTY 16977318 16977319 ife_sacredvow **** **** **** **** **** **** **** **** **** **** 0 0 1 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_VOWOFPOVERTY 6 **** **** **** **** **** 0 0
25997 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
25998 FEAT_CHARMING_THE_ARROW 16990312 16990313 if_charm_arrow **** **** **** **** **** **** **** **** **** **** 0 0 1 **** **** **** **** 1 **** **** **** 3239 4718 **** **** **** **** **** **** **** FEAT_CHARMING_THE_ARROW 6 0 **** **** **** **** 0 0
25999 FEAT_MARTIAL_STALKER 16990314 16990315 IR_NINJA **** **** **** **** **** **** **** **** 2488 45 0 0 1 **** **** **** **** 0.5 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_MARTIAL_STALKER 5 0 **** **** **** **** 0 0
26000 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
26001 Bullybasher_GiantBearing 16977316 16977317 is_giantbearing **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 16553 **** 0.5 **** **** 1 **** **** **** **** **** **** **** **** **** WOL_BULLY_GIANT 6 0 **** **** **** **** 0 0
26002 FEAT_VOWOFPOVERTY 16977318 16977319 ife_sacredvow **** **** **** **** **** **** **** **** 3388 **** 0 0 1 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_VOWOFPOVERTY 6 **** **** **** **** **** 0 0
26003 FEAT_SANCTIFYKISTRIKE 16990535 16990536 ife_kistrike **** **** **** **** **** **** 15 **** 21 213 0 0 1 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_SANCTIFYKISTRIKE 6 **** **** **** **** **** 0 0
26004 FEAT_HOLYKISTRIKE 16990537 16990538 ife_kistrike **** **** **** **** **** **** 15 **** 21 26002 0 0 1 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_HOLYKISTRIKE 6 **** **** **** **** **** 0 0
26005 FEAT_FISTOFHEAVENS 16990539 16990540 ife_kistrike **** **** **** **** 15 **** **** **** 21 26002 0 0 1 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_FISTOFHEAVENS 6 **** **** **** **** **** 0 0
26006 FEAT_VOWABSTINENCE 16990541 16990542 ife_sacredvow **** **** **** **** **** **** **** **** 3388 **** 0 0 1 **** **** **** **** 0.5 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_VOWABSTINENCE 6 **** **** **** **** **** 0 0
26007 FEAT_VOWCHASTITY 16990543 16990544 ife_sacredvow **** **** **** **** **** **** **** **** 3388 **** 0 0 1 **** **** **** **** 0.5 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_VOWCHASTITY 6 **** **** **** **** **** 0 0
26008 FEAT_GIFTOFFAITH 16990545 16990546 ife_sacredvow **** **** **** **** 13 **** **** **** **** **** 0 0 1 **** **** **** **** 0.5 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_GIFTOFFAITH 6 **** **** **** **** **** 0 0

View File

@ -585,11 +585,11 @@
581 16828014 DaylightAdaptation 0.01 4592
582 16835930 ACP_HEAVY_FEAT 0.01 3480
583 16835931 ACP_UNARMED_FEAT 0.01 3481
584 **** ReservedForISCAndESS **** ****
585 **** ReservedForISCAndESS **** ****
586 **** ReservedForISCAndESS **** ****
587 **** ReservedForISCAndESS **** ****
588 **** ReservedForISCAndESS **** ****
584 16823582 FEAT_AUGMENT_PSIONICS_QUICKSELECTS 0.01 3550
585 16823584 FEAT_AUGMENT_PSIONICS_DIGITS_0_4 0.01 3551
586 16823585 FEAT_AUGMENT_PSIONICS_DIGITS_5_9 0.01 3552
587 16823586 FEAT_AUGMENT_PSIONICS_TENS 0.01 3553
588 16823582 FEAT_AUGMENT_QUICKSELECTS_2 0.01 3563
589 **** ReservedForISCAndESS **** ****
590 **** ReservedForISCAndESS **** ****
591 **** ReservedForISCAndESS **** ****

View File

@ -1,118 +1,129 @@
2DA V2.0
LABEL STRREF DESCRIPTION ICON
0 ImprovedCritical 6489 228 ife_impcrit
1 WeaponFocus 6490 436 ife_wepfoc
2 WeaponSpecialization 6491 444 ife_wepspec
3 SpellFocus 6492 426 ife_magic
4 SkillFocus 6493 424 ife_skfoc
5 FavoredEnemy 6566 6079 ife_racehate
6 GreaterSpellFocus 2838 2791 ife_magic
7 ArcaneDefense 2839 2823 ife_magic
8 ResistEnergy 2840 2835 ife_magic
9 WeaponOfChoice 83313 8728 ife_X2WpCh
10 EpicWeaponFocus 83475 8415 ife_X2EWpFo
11 EpicWeaponSpec 83481 8456 ife_X2WpSpec
12 OverwhelmingCritical 83480 8524 ife_X2OvCrit
13 DevastatingCrit 83482 3909 ife_X2DevCrit
14 EpicSpell 83483 83484 ife_X2ESpell
15 EpicSkillFocus 83485 4063 ife_X2skfoc
16 EpicSpellFocus 83486 4084 ife_X2magic
17 EpicEnergyResistance 83487 83488 ife_X2EResi
18 **** **** **** ****
19 **** **** **** ****
20 **** **** **** ****
21 **** **** **** ****
22 **** **** **** ****
23 **** **** **** ****
24 **** **** **** ****
25 **** **** **** ****
26 **** **** **** ****
27 **** **** **** ****
28 **** **** **** ****
29 **** **** **** ****
30 **** **** **** ****
31 **** **** **** ****
32 **** **** **** ****
33 **** **** **** ****
34 **** **** **** ****
35 **** **** **** ****
36 **** **** **** ****
37 **** **** **** ****
38 **** **** **** ****
39 **** **** **** ****
40 **** **** **** ****
41 **** **** **** ****
42 **** **** **** ****
43 **** **** **** ****
44 **** **** **** ****
45 **** **** **** ****
46 **** **** **** ****
47 **** **** **** ****
48 **** **** **** ****
49 **** **** **** ****
50 SpellLikeAbility 16822760 16822761 ife_X2ESpell
51 **** **** **** ****
52 BindingFeats 16835231 16835232 fot_oracle
53 IncarnumFeats 16838110 16838111 ife_psi_focus
54 ShadowcastingFeats 16836244 16836245 ife_X1SDaze
55 HatedFoe 16824268 16824269 ife_racehate
56 Gather_Horde 16824322 16824323 ife_unseenwander
57 Gather_Horde 16824324 16824325 ife_unseenwander
58 Summon_Demon 16824528 16824529 ife_alertness
59 DragonHeritage 16832504 16832505 ife_drag_group
60 DraconicFeats 16832502 16832503 ife_drag_group
61 Psionic_Breath 16832466 16832467 ife_X2DDBreath
62 Dragonwrought 16832408 16832409 ife_drag_group
63 DragonBlood 16832131 16832132 ife_DDHDincrease
64 Minor_Aura 16828301 16828302 ife_lliiraaura
65 Major_Aura 16828303 16828304 ife_lliiraaura
66 Dragon_Affinity 16832585 16832586 ife_drag_group
67 Draconic_Surge_Phys 16832587 16832588 ife_drag_group
68 Draconic_Surge_Mental 16832589 16832590 ife_drag_group
69 ToT_Immunities 16832661 16832662 dradis_immune
70 TattooFocus 16822436 16822437 rw_scribetatoo
71 Dragon_Shaman_Auras 16832707 16832708 ife_lliiraaura
72 Totem_Dragons 16832709 16832710 dradis_gen
73 Bonus_Draconic_Auras 16832802 16832832 ife_lliiraaura
74 Major_Aura_Draconic 16832818 16832819 ife_lliiraaura
75 MetabreathFeats 16832867 16832868 ife_X2DDBreath
76 BreathChanneling 16832869 16832870 ife_DDHDincrease
77 BreathEffects 16832922 16832923 ife_X2DDBreath
78 BladeMeditation 16827008 16827009 ife_X2EpWM
79 WarforgedArmor 16828215 16828216 ife_armor_h
80 PsionicFeats 16822911 16822912 ife_psifeats
81 MetaPsionicFeats 16822913 16822914 ife_metapsifeat
82 AntiPsionicFeats 16826474 16826475 ife_antipsifeats
83 DragonAugment 16832444 16832445 dradis_gen
84 ShifterFeats 16828112 16828113 ife_X2OutShape
85 PnP_Weapon_Prof_Simp 16834217 16834260 ife_weppro_sim
86 PnP_Weapon_Prof_Mart 16834218 16834261 ife_weppro_mar
87 PnP_Weapon_Prof_Exot 16834219 16834262 ife_weppro_ex
88 UFavoredEnemy 16825439 6079 ife_racehate
89 VileMartial 16825479 16825480 ife_combat
90 FocusedSpellPenetr 16825325 16825324 ife_magic
91 BondedSummoner 16826038 16826039 ife_mastelem
92 ElementalConflag 16823300 16823301 ife_mastelem
93 SanctifyMartial 16823244 16823245 ife_combat
94 WeaponChoiceTempus 16822944 16822945 ife_X2WpCh
95 Evilbrand 16822849 16822850 ife_X2BoneSk1
96 Aberrant 16790214 16790215 ife_dfrm_gaunt
97 **** **** **** ****
98 **** **** **** ****
99 **** **** **** ****
100 **** **** **** ****
101 MinorOozyTouch 16825040 16825041 is_ghoultch
102 MajorOozyTouch 16825050 16825051 is_ghoultch
103 ToBFeats 16836033 16836034 im_MithTornado
104 BaneMagic 16793665 16793666 ife_banemagic
105 MinstrelSongTier1 16823496 16823497 ife_minstrel
106 FavoredDivSong1 16823500 16823505 ife_fom
107 FavoredDivSong2 16823501 16823505 ife_fom
108 FavoredDivSong3 16823502 16823505 ife_fom
109 FavoredDivSong4 16823503 16823505 ife_fom
110 FavoredDivSong5 16823504 16823505 ife_fom
111 BonusDomains 16827845 16827846 rw_specialistdef
112 FocusedLexicon 16827469 16827468 ife_racehate
113 UtteranceFocus 16827483 16827482 ife_foc_spel
114 ReserveFeats 16852238 16852239 ife_foc_spel
LABEL STRREF DESCRIPTION ICON
0 ImprovedCritical 6489 228 ife_impcrit
1 WeaponFocus 6490 436 ife_wepfoc
2 WeaponSpecialization 6491 444 ife_wepspec
3 SpellFocus 6492 426 ife_magic
4 SkillFocus 6493 424 ife_skfoc
5 FavoredEnemy 6566 6079 ife_racehate
6 GreaterSpellFocus 2838 2791 ife_magic
7 ArcaneDefense 2839 2823 ife_magic
8 ResistEnergy 2840 2835 ife_magic
9 WeaponOfChoice 83313 8728 ife_X2WpCh
10 EpicWeaponFocus 83475 8415 ife_X2EWpFo
11 EpicWeaponSpec 83481 8456 ife_X2WpSpec
12 OverwhelmingCritical 83480 8524 ife_X2OvCrit
13 DevastatingCrit 83482 3909 ife_X2DevCrit
14 EpicSpell 83483 83484 ife_X2ESpell
15 EpicSkillFocus 83485 4063 ife_X2skfoc
16 EpicSpellFocus 83486 4084 ife_X2magic
17 EpicEnergyResistance 83487 83488 ife_X2EResi
18 **** **** **** ****
19 **** **** **** ****
20 **** **** **** ****
21 **** **** **** ****
22 **** **** **** ****
23 **** **** **** ****
24 **** **** **** ****
25 **** **** **** ****
26 **** **** **** ****
27 **** **** **** ****
28 **** **** **** ****
29 **** **** **** ****
30 **** **** **** ****
31 **** **** **** ****
32 **** **** **** ****
33 **** **** **** ****
34 **** **** **** ****
35 **** **** **** ****
36 **** **** **** ****
37 **** **** **** ****
38 **** **** **** ****
39 **** **** **** ****
40 **** **** **** ****
41 **** **** **** ****
42 **** **** **** ****
43 **** **** **** ****
44 **** **** **** ****
45 **** **** **** ****
46 **** **** **** ****
47 **** **** **** ****
48 **** **** **** ****
49 **** **** **** ****
50 SpellLikeAbility 16822760 16822761 ife_X2ESpell
51 **** **** **** ****
52 BindingFeats 16835231 16835232 fot_oracle
53 IncarnumFeats 16838110 16838111 ife_psi_focus
54 ShadowcastingFeats 16836244 16836245 ife_X1SDaze
55 HatedFoe 16824268 16824269 ife_racehate
56 Gather_Horde 16824322 16824323 ife_unseenwander
57 Gather_Horde 16824324 16824325 ife_unseenwander
58 Summon_Demon 16824528 16824529 ife_alertness
59 DragonHeritage 16832504 16832505 ife_drag_group
60 DraconicFeats 16832502 16832503 ife_drag_group
61 Psionic_Breath 16832466 16832467 ife_X2DDBreath
62 Dragonwrought 16832408 16832409 ife_drag_group
63 DragonBlood 16832131 16832132 ife_DDHDincrease
64 Minor_Aura 16828301 16828302 ife_lliiraaura
65 Major_Aura 16828303 16828304 ife_lliiraaura
66 Dragon_Affinity 16832585 16832586 ife_drag_group
67 Draconic_Surge_Phys 16832587 16832588 ife_drag_group
68 Draconic_Surge_Mental 16832589 16832590 ife_drag_group
69 ToT_Immunities 16832661 16832662 dradis_immune
70 TattooFocus 16822436 16822437 rw_scribetatoo
71 Dragon_Shaman_Auras 16832707 16832708 ife_lliiraaura
72 Totem_Dragons 16832709 16832710 dradis_gen
73 Bonus_Draconic_Auras 16832802 16832832 ife_lliiraaura
74 Major_Aura_Draconic 16832818 16832819 ife_lliiraaura
75 MetabreathFeats 16832867 16832868 ife_X2DDBreath
76 BreathChanneling 16832869 16832870 ife_DDHDincrease
77 BreathEffects 16832922 16832923 ife_X2DDBreath
78 BladeMeditation 16827008 16827009 ife_X2EpWM
79 WarforgedArmor 16828215 16828216 ife_armor_h
80 PsionicFeats 16822911 16822912 ife_psifeats
81 MetaPsionicFeats 16822913 16822914 ife_metapsifeat
82 AntiPsionicFeats 16826474 16826475 ife_antipsifeats
83 DragonAugment 16832444 16832445 dradis_gen
84 ShifterFeats 16828112 16828113 ife_X2OutShape
85 PnP_Weapon_Prof_Simp 16834217 16834260 ife_weppro_sim
86 PnP_Weapon_Prof_Mart 16834218 16834261 ife_weppro_mar
87 PnP_Weapon_Prof_Exot 16834219 16834262 ife_weppro_ex
88 UFavoredEnemy 16825439 6079 ife_racehate
89 VileMartial 16825479 16825480 ife_combat
90 FocusedSpellPenetr 16825325 16825324 ife_magic
91 BondedSummoner 16826038 16826039 ife_mastelem
92 ElementalConflag 16823300 16823301 ife_mastelem
93 SanctifyMartial 16823244 16823245 ife_combat
94 WeaponChoiceTempus 16822944 16822945 ife_X2WpCh
95 Evilbrand 16822849 16822850 ife_X2BoneSk1
96 Aberrant 16790214 16790215 ife_dfrm_gaunt
97 **** **** **** ****
98 **** **** **** ****
99 **** **** **** ****
100 **** **** **** ****
101 MinorOozyTouch 16825040 16825041 is_ghoultch
102 MajorOozyTouch 16825050 16825051 is_ghoultch
103 ToBFeats 16836033 16836034 im_MithTornado
104 BaneMagic 16793665 16793666 ife_banemagic
105 MinstrelSongTier1 16823496 16823497 ife_minstrel
106 FavoredDivSong1 16823500 16823505 ife_fom
107 FavoredDivSong2 16823501 16823505 ife_fom
108 FavoredDivSong3 16823502 16823505 ife_fom
109 FavoredDivSong4 16823503 16823505 ife_fom
110 FavoredDivSong5 16823504 16823505 ife_fom
111 BonusDomains 16827845 16827846 rw_specialistdef
112 FocusedLexicon 16827469 16827468 ife_racehate
113 UtteranceFocus 16827483 16827482 ife_foc_spel
114 ReserveFeats 16852238 16852239 ife_foc_spel
115 **** **** **** ****
116 **** **** **** ****
117 **** **** **** ****
118 **** **** **** ****
119 **** **** **** ****
120 **** **** **** ****
121 **** **** **** ****
122 **** **** **** ****
123 **** **** **** ****
124 **** **** **** ****
125 **** **** **** ****

View File

@ -0,0 +1,30 @@
2DA V2.0
Label Name FeatIndex PreReq1 PreReq2 Con Wis Cha BAB Law
0 FEAT_EXALTED_COMPANION "Exalted Companion" 4199 199 **** **** **** **** **** ****
1 FEAT_EXALTED_TURNING "Exalted Turning" 3168 294 **** **** **** **** **** ****
2 FEAT_FISTOFHEAVENS "Fist of Heavens" 26004 213 26002 **** 15 **** **** ****
3 FEAT_GIFTOFFAITH "Gift of Faith" 26007 **** **** **** 13 **** **** ****
4 FEAT_HOLYKISTRIKE "Holy Ki Strike" 26003 213 26002 **** **** 15 **** ****
5 FEAT_HOLYRADIANCE "Holy Radiance" 3164 3165 **** **** **** 15 **** ****
6 FEAT_INTUITIVE_ATTACK "Intuitive Attack" 3166 **** **** **** **** **** 1 ****
7 FEAT_NIMBUSLIGHT "Nimbus of Light" 3165 **** **** **** **** **** 1 ****
8 FEAT_SANCTIFYKISTRIKE "Sanctify Ki Strike" 26002 213 **** **** **** 15 **** ****
9 FEAT_SANCTIFY_MARTIAL_CLUB "Sanctify Martial Strike (Club)" 3194 43 **** **** **** 15 **** ****
10 FEAT_SANCTIFY_MARTIAL_DAGGER "Sanctify Martial Strike (Dagger)" 3195 90 **** **** **** 15 **** ****
11 FEAT_SANCTIFY_MARTIAL_DART "Sanctify Martial Strike (Dard)" 3227 91 **** **** **** 15 **** ****
12 FEAT_SANCTIFY_MARTIAL_HEAVYCROSSBOW "Sanctify Martial Strike (Heavy Crossbow)" 3221 92 **** **** **** 15 **** ****
13 FEAT_SANCTIFY_MARTIAL_LIGHTCROSSBOW "Sanctify Martial Strike (Light Crossbow)" 3222 93 **** **** **** 15 **** ****
14 FEAT_SANCTIFY_MARTIAL_LIGHTMACE "Sanctify Martial Strike (Light Mace)" 3196 94 **** **** **** 15 **** ****
15 FEAT_SANCTIFY_MARTIAL_MORNINGSTAR "Sanctify Martial Strike (Moningstar)" 3197 95 **** **** **** 15 **** ****
16 FEAT_SANCTIFY_MARTIAL_QUARTERSTAFF "Sanctify Martial Strike (Quarterstaff)" 3198 96 **** **** **** 15 **** ****
17 FEAT_SANCTIFY_MARTIAL_SICKLE "Sanctify Martial Strike (Sickle)" 3169 98 **** **** **** 15 **** ****
18 FEAT_SANCTIFY_MARTIAL_SLING "Sanctify Martial Strike (Sling)" 3223 99 **** **** **** 15 **** ****
19 FEAT_SANCTIFY_MARTIAL_SHORTSPEAR "Sanctify Martial Strike (Spear)" 3199 97 **** **** **** 15 **** ****
20 FEAT_SERVHEAVEN "Servant of the Heavens" 3355 **** **** **** **** **** **** ****
21 FEAT_STIGMATA Stigmata 3163 3165 **** **** **** **** **** ****
22 FEAT_RAVAGEGOLDENICE "Touch of Golden Ice" 3162 **** **** 13 **** **** **** ****
23 FEAT_VOWABSTINENCE "Vow of Abstinence" 26005 **** **** **** **** **** **** ****
24 FEAT_VOWCHASTITY "Vow of Chastity" 26006 **** **** **** **** **** **** ****
25 FEAT_VOW_OBED "Vow of Obedience" 3389 **** **** **** **** **** **** 1
26 FEAT_VOW_PURITY "Vow of Purity" 5360 **** **** **** **** **** **** ****

View File

@ -29,7 +29,7 @@
25 STUNNING_FIST_BASE_SAVE_DC 10
26 CRIPPLING_STRIKE_STRENGTH_MODIFIER 2
27 **** ****
28 PARRY_RIPOSTE_DIFFERENCE 99
28 PARRY_RIPOSTE_DIFFERENCE 99
29 TAUNT_EFFECT_DURATION 30.0f
30 TAUNT_ARCANE_SPELL_FAILURE 30
31 TAUNT_MAX_MODIFIER 6
@ -145,7 +145,7 @@
141 STILL_MIND_COMPETANCE_BONUS 2
142 FEARLESS_MORALE_BONUS 2
143 RANGED_ATTACK_IN_MELEE_RANGE 4
144 POINT_BLANK_SHOT_MAX_RANGE 5.0f
144 POINT_BLANK_SHOT_MAX_RANGE 9.144f
145 POINT_BLANK_SHOT_ATTACK_BONUS 1
146 POINT_BLANK_SHOT_DAMAGE_BONUS 1
147 MOBILITY_DODGE_BONUS 4
@ -193,14 +193,14 @@
189 RESIST_DISEASE_BONUS 4
190 FIRING_INTO_MELEE_MODIFIER -4
191 RESISTANCE_TO_ENERGY 5
192 TUMBLE_NUM_RANKS_PER_AC_BONUS 5
192 TUMBLE_NUM_RANKS_PER_AC_BONUS 0
193 DIRTY_FIGHTING_NUM_ATTACKS_PER_ROUND 1
194 DENEIRS_EYE_SAVE_BONUS 2
195 LLIIRAS_HEART_SAVE_BONUS 2
196 EXTRA_SMITING_BONUS_USES 2
197 SPELLCRAFT_NUM_RANKS_PER_SAVE_BONUS 5
197 SPELLCRAFT_NUM_RANKS_PER_SAVE_BONUS 0
198 **** ****
199 MAX_AC_DODGE_MOD 20
199 MAX_AC_DODGE_MOD 30
200 **** ****
201 PRESTIGE_ENCHANT_ARROW_1_BONUS 1
202 PRESTIGE_ENCHANT_ARROW_2_BONUS 2

View File

@ -1,42 +1,42 @@
2DA V2.0
Label Name Description Icon Untrained KeyAbility ArmorCheckPenalty AllClassesCanUse Category MaxCR Constant HostileSkill
0 AnimalEmpathy 269 344 isk_aniemp 0 CHA 0 0 **** 1 SKILL_ANIMAL_EMPATHY 1
1 Concentration 270 345 isk_concen 1 CON 0 1 **** **** SKILL_CONCENTRATION 0
2 DisableTrap 271 346 isk_distrap 0 INT 0 1 **** **** SKILL_DISABLE_TRAP 0
3 Discipline 343 347 isk_discipline 1 STR 0 1 **** **** SKILL_DISCIPLINE 0
4 Heal 273 349 isk_heal 1 WIS 0 1 **** 1 SKILL_HEAL 0
5 Hide 274 350 isk_hide 1 DEX 1 1 **** **** SKILL_HIDE 0
6 Listen 275 351 isk_listen 1 WIS 0 1 **** **** SKILL_LISTEN 0
7 Lore 276 352 isk_lore 1 INT 0 1 **** **** SKILL_LORE 0
8 MoveSilently 277 353 isk_movsilent 1 DEX 1 1 **** **** SKILL_MOVE_SILENTLY 0
9 OpenLock 278 354 isk_olock 0 DEX 0 1 **** **** SKILL_OPEN_LOCK 0
10 Parry 279 355 isk_parry 0 DEX 1 0 **** 1 SKILL_PARRY 0
11 Perform 280 356 isk_perform 1 CHA 0 1 **** **** SKILL_PERFORM 0
12 Persuade 281 357 isk_persuade 1 CHA 0 1 **** **** SKILL_PERSUADE 0
13 PickPocket 282 358 isk_pocket 0 DEX 1 1 **** **** SKILL_PICK_POCKET 1
14 Search 284 360 isk_search 1 INT 0 1 **** **** SKILL_SEARCH 0
15 SetTrap 285 361 isk_settrap 0 DEX 1 1 **** **** SKILL_SET_TRAP 0
16 Spellcraft 286 362 isk_spellcraft 0 INT 0 1 **** **** SKILL_SPELLCRAFT 0
17 Spot 287 364 isk_spot 1 WIS 0 1 **** **** SKILL_SPOT 0
18 Taunt 342 366 isk_taunt 0 CHA 0 0 **** 1 SKILL_TAUNT 1
19 UseMagicDevice 288 367 isk_magicdev 0 CHA 0 1 **** **** SKILL_USE_MAGIC_DEVICE 0
20 Appraise 2693 2694 ife_X1App 1 INT 0 1 **** **** SKILL_APPRAISE 0
21 Tumble 2695 2696 ife_X1Tum 0 DEX 1 1 **** **** SKILL_TUMBLE 0
22 CraftTrap 2697 2698 ife_X1CrTrap 1 INT 0 1 **** **** SKILL_CRAFT_TRAP 0
23 Bluff 8746 8757 isk_X2bluff 1 CHA 0 1 **** **** SKILL_BLUFF 0
24 Intimidate 8756 8786 isk_X2Inti 1 CHA 0 1 **** **** SKILL_INTIMIDATE 0
25 CraftArmor 8787 8788 isk_X2CArm 1 INT 0 1 **** **** SKILL_CRAFT_ARMOR 0
26 CraftWeapon 8789 8790 isk_X2CWeap 1 INT 0 1 **** **** SKILL_CRAFT_WEAPON 0
27 Ride 111889 111890 isk_x3_ride 1 DEX 0 1 **** **** SKILL_RIDE 0
28 Jump 16826011 16826012 isk_jump 1 STR 1 1 **** **** SKILL_JUMP 0
29 Truespeak 16828470 16828471 isk_truespeak 0 INT 0 1 **** **** SKILL_TRUESPEAK 0
30 Sense_Motive 16829311 16829312 isk_sensemtv 1 WIS 0 1 **** **** SKILL_SENSE_MOTIVE 0
31 Martial_Lore 16829313 16829314 isk_martlore 0 INT 0 0 **** **** SKILL_MARTIAL_LORE 0
32 Balance 16829376 16829377 isk_balance 1 DEX 1 1 **** **** SKILL_BALANCE 0
33 IaijutsuFocus 16826112 16826113 isk_iaijutsu 0 CHA 0 1 **** **** SKILL_IAIJUTSU_FOCUS 0
34 CraftAlchemy 16847237 16847238 isk_alchemy 1 INT 0 1 **** **** SKILL_CRAFT_ALCHEMY 0
35 CraftPoison 16832401 16832402 isk_poison 1 INT 0 1 **** **** SKILL_CRAFT_POISON 0
36 Psicraft 16832210 16832211 isk_spellcraft 0 INT 0 0 **** **** SKILL_PSICRAFT 0
37 Climb 16847418 16847419 isk_climb 1 STR 1 1 **** **** SKILL_CLIMB 0
38 CraftGeneral 16832369 16832370 isk_X2CArm 1 INT 0 1 **** **** SKILL_CRAFT_GENERAL 0
Label Name Description Icon Untrained KeyAbility ArmorCheckPenalty AllClassesCanUse Category MaxCR Constant HostileSkill HideFromLevelUp
0 AnimalEmpathy 269 344 isk_aniemp 0 CHA 0 0 **** 1 SKILL_ANIMAL_EMPATHY 1 0
1 Concentration 270 345 isk_concen 1 CON 0 1 **** **** SKILL_CONCENTRATION 0 0
2 DisableTrap 271 346 isk_distrap 0 INT 0 1 **** **** SKILL_DISABLE_TRAP 0 0
3 Discipline 343 347 isk_discipline 1 STR 0 1 **** **** SKILL_DISCIPLINE 0 0
4 Heal 273 349 isk_heal 1 WIS 0 1 **** 1 SKILL_HEAL 0 0
5 Hide 274 350 isk_hide 1 DEX 1 1 **** **** SKILL_HIDE 0 0
6 Listen 275 351 isk_listen 1 WIS 0 1 **** **** SKILL_LISTEN 0 0
7 Lore 276 352 isk_lore 1 INT 0 1 **** **** SKILL_LORE 0 0
8 MoveSilently 277 353 isk_movsilent 1 DEX 1 1 **** **** SKILL_MOVE_SILENTLY 0 0
9 OpenLock 278 354 isk_olock 0 DEX 0 1 **** **** SKILL_OPEN_LOCK 0 0
10 Parry 279 355 isk_parry 0 DEX 1 0 **** 1 SKILL_PARRY 0 1
11 Perform 280 356 isk_perform 1 CHA 0 1 **** **** SKILL_PERFORM 0 0
12 Persuade 281 357 isk_persuade 1 CHA 0 1 **** **** SKILL_PERSUADE 0 0
13 PickPocket 282 358 isk_pocket 0 DEX 1 1 **** **** SKILL_PICK_POCKET 1 0
14 Search 284 360 isk_search 1 INT 0 1 **** **** SKILL_SEARCH 0 0
15 SetTrap 285 361 isk_settrap 0 DEX 1 1 **** **** SKILL_SET_TRAP 0 0
16 Spellcraft 286 362 isk_spellcraft 0 INT 0 1 **** **** SKILL_SPELLCRAFT 0 0
17 Spot 287 364 isk_spot 1 WIS 0 1 **** **** SKILL_SPOT 0 0
18 Taunt 342 366 isk_taunt 0 CHA 0 0 **** 1 SKILL_TAUNT 1 1
19 UseMagicDevice 288 367 isk_magicdev 0 CHA 0 1 **** **** SKILL_USE_MAGIC_DEVICE 0 0
20 Appraise 2693 2694 ife_X1App 1 INT 0 1 **** **** SKILL_APPRAISE 0 0
21 Tumble 2695 2696 ife_X1Tum 0 DEX 1 1 **** **** SKILL_TUMBLE 0 0
22 CraftTrap 2697 2698 ife_X1CrTrap 1 INT 0 1 **** **** SKILL_CRAFT_TRAP 0 0
23 Bluff 8746 8757 isk_X2bluff 1 CHA 0 1 **** **** SKILL_BLUFF 0 0
24 Intimidate 8756 8786 isk_X2Inti 1 CHA 0 1 **** **** SKILL_INTIMIDATE 0 0
25 CraftArmor 8787 8788 isk_X2CArm 1 INT 0 1 **** **** SKILL_CRAFT_ARMOR 0 0
26 CraftWeapon 8789 8790 isk_X2CWeap 1 INT 0 1 **** **** SKILL_CRAFT_WEAPON 0 0
27 Ride 111889 111890 isk_x3_ride 1 DEX 0 1 **** **** SKILL_RIDE 0 0
28 Jump 16826011 16826012 isk_jump 1 STR 1 1 **** **** SKILL_JUMP 0 0
29 Truespeak 16828470 16828471 isk_truespeak 0 INT 0 1 **** **** SKILL_TRUESPEAK 0 0
30 Sense_Motive 16829311 16829312 isk_sensemtv 1 WIS 0 1 **** **** SKILL_SENSE_MOTIVE 0 0
31 Martial_Lore 16829313 16829314 isk_martlore 0 INT 0 0 **** **** SKILL_MARTIAL_LORE 0 0
32 Balance 16829376 16829377 isk_balance 1 DEX 1 1 **** **** SKILL_BALANCE 0 0
33 IaijutsuFocus 16826112 16826113 isk_iaijutsu 0 CHA 0 1 **** **** SKILL_IAIJUTSU_FOCUS 0 0
34 CraftAlchemy 16847237 16847238 isk_alchemy 1 INT 0 1 **** **** SKILL_CRAFT_ALCHEMY 0 0
35 CraftPoison 16832401 16832402 isk_poison 1 INT 0 1 **** **** SKILL_CRAFT_POISON 0 0
36 Psicraft 16832210 16832211 isk_spellcraft 0 INT 0 0 **** **** SKILL_PSICRAFT 0 0
37 Climb 16847418 16847419 isk_climb 1 STR 1 1 **** **** SKILL_CLIMB 0 0
38 CraftGeneral 16832369 16832370 isk_X2CArm 1 INT 0 1 **** **** SKILL_CRAFT_GENERAL 0 0

View File

@ -14267,7 +14267,7 @@
14263 Prevenom 16824141 fot_grmalison T P 0 **** 0x09 psi_pow_prevnm **** **** **** **** **** **** 1 1500 hand **** vco_smhanevil01 **** sco_mehanevil01 **** **** out 1000 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** 2 **** 1 16824142 1 0 **** 0 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
14264 PrevenomWeapon 16824143 fot_prevnmw T P 0 **** 0x09 psi_pow_prevnmwp **** **** **** **** **** **** 1 1500 hand **** vco_smhanevil01 **** sco_mehanevil01 **** **** out 1000 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** 2 **** 1 16824144 1 0 **** 0 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
14265 GripOfIron 16790300 fot_metaclaw T P 0 **** 0x10 psi_pow_gripiron **** **** **** **** **** **** 1 1500 hand **** **** **** **** vs_chant_evoc_hm vs_chant_evoc_hf attack 1000 **** **** **** **** 0 **** **** **** **** **** **** 1 **** **** **** **** **** 10 **** 1 16790301 1 0 **** 0 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
14266 PsionicLionsCharge 16790308 fot_imprhaste T L 0 **** 0x10 psi_pow_charge **** **** **** **** **** **** 1 1500 hand **** **** **** **** vs_chant_evoc_hm vs_chant_evoc_hf attack 1000 **** **** **** **** 0 **** **** **** **** **** **** 1 **** **** **** **** **** 10 **** 1 16790309 1 0 **** 1 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
14266 PsionicLionsCharge 16790308 fot_imprhaste T L 0 **** 0x10 psi_pow_charge **** **** **** **** **** **** 2 1500 hand **** **** **** **** vs_chant_evoc_hm vs_chant_evoc_hf attack 1000 **** **** **** **** 0 **** **** **** **** **** **** 1 **** **** **** **** **** 10 **** 1 16790309 1 0 **** 1 **** **** **** 0 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
14267 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
14268 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
14269 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****

Binary file not shown.

View File

@ -334,7 +334,7 @@ void DispelMagicBestMod(object oTarget, int nCasterLevel)
{
int nExist = GetLocalInt(OBJECT_SELF, "CaptureMagic");
int nSpellLevel = StringToInt(Get2DACache("spells", "Innate", nEffectSpellID));
SetLocalInt(OBJECT_SELF, "CaptureMagic", max(nExist, nSpellLevel/2));
SetLocalInt(OBJECT_SELF, "CaptureMagic", PRCMax(nExist, nSpellLevel/2));
if (GetLevelByClass(CLASS_TYPE_NOCTUMANCER) >= 10)
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(EffectSpellImmunity(nEffectSpellID)), OBJECT_SELF, 60.0);
}
@ -589,7 +589,7 @@ void DispelMagicAllMod(object oTarget, int nCasterLevel)
{
int nExist = GetLocalInt(OBJECT_SELF, "CaptureMagic");
int nSpellLevel = StringToInt(Get2DACache("spells", "Innate", nEffectSpellID));
SetLocalInt(OBJECT_SELF, "CaptureMagic", max(nExist, nSpellLevel/2));
SetLocalInt(OBJECT_SELF, "CaptureMagic", PRCMax(nExist, nSpellLevel/2));
if (GetLevelByClass(CLASS_TYPE_NOCTUMANCER) >= 10)
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(EffectSpellImmunity(nEffectSpellID)), OBJECT_SELF, 60.0);
}

View File

@ -453,7 +453,7 @@ void CreateSpiritualWeapon(object oCaster, float fDuration, int nClass)
int iCasterLvL = PRCGetCasterLevel(oCaster);
int nBAB = GetBaseAttackBonus(oCaster);
int nAttNumber = 1+(nBAB / 4);
int nDamBonus = min(5, iCasterLvL / 3);
int nDamBonus = PRCMin(5, iCasterLvL / 3);
int nPenetr = iCasterLvL + SPGetPenetr();
int nStat = nClass == CLASS_TYPE_INVALID ?
GetAbilityModifier(ABILITY_CHARISMA, oCaster) ://:: if cast from items use charisma by default
@ -804,7 +804,7 @@ void HandleSpiritualWeaponUnequipEvent()
int nCasterLevel = PRCGetCasterLevel(oCaster);
int nDuration = nCasterLevel;
int nPenetr = nCasterLevel + SPGetPenetr();
int nDamBonus = min(5, nCasterLevel / 3);
int nDamBonus = PRCMin(5, nCasterLevel / 3);
float fDuration = IntToFloat(nDuration);
// Log the event for debugging

View File

@ -32,7 +32,7 @@ const int ACTION_USE_ITEM_TMI_LIMIT = 1500;
* @param b Another integer
* @return a iff a is greater than b, otherwise b
*/
int max(int a, int b);
int PRCMax(int a, int b);
/**
* Returns the lesser of the two values passed to it.
@ -41,7 +41,7 @@ int max(int a, int b);
* @param b Another integer
* @return a iff a is lesser than b, otherwise b
*/
int min(int a, int b);
int PRCMin(int a, int b);
/**
* Returns the greater of the two values passed to it.
@ -50,7 +50,7 @@ int min(int a, int b);
* @param b Another float
* @return a iff a is greater than b, otherwise b
*/
float fmax(float a, float b);
float PRCFmax(float a, float b);
/**
* Returns the lesser of the two values passed to it.
@ -59,7 +59,7 @@ float fmax(float a, float b);
* @param b Another float
* @return a iff a is lesser than b, otherwise b
*/
float fmin(float a, float b);
float PRCFmin(float a, float b);
/**
* Takes a string in the standard hex number format (0x####) and converts it
@ -172,29 +172,29 @@ location AddLocationToLocation(location lMaster, location lAdd);
* simple function to use the name of a item holding escape sequences that, though they will not compile,
* they can be interpreted at run time and produce rbg scales between 32 and 255 in increments.
* -- allows 3375 colors to be made.
* for example SendMessageToPC(pc,GetRGB(15,15,1)+ "Help, I'm on fire!") will produce yellow text.
* for example SendMessageToPC(pc,PRCGetRGB(15,15,1)+ "Help, I'm on fire!") will produce yellow text.
* more examples:
*
* GetRGB() := WHITE // no parameters, default is white
* GetRGB(15,15,1):= YELLOW
* GetRGB(15,5,1) := ORANGE
* GetRGB(15,1,1) := RED
* GetRGB(7,7,15) := BLUE
* GetRGB(1,15,1) := NEON GREEN
* GetRGB(1,11,1) := GREEN
* GetRGB(9,6,1) := BROWN
* GetRGB(11,9,11):= LIGHT PURPLE
* GetRGB(12,10,7):= TAN
* GetRGB(8,1,8) := PURPLE
* GetRGB(13,9,13):= PLUM
* GetRGB(1,7,7) := TEAL
* GetRGB(1,15,15):= CYAN
* GetRGB(1,1,15) := BRIGHT BLUE
* PRCGetRGB() := WHITE // no parameters, default is white
* PRCGetRGB(15,15,1):= YELLOW
* PRCGetRGB(15,5,1) := ORANGE
* PRCGetRGB(15,1,1) := RED
* PRCGetRGB(7,7,15) := BLUE
* PRCGetRGB(1,15,1) := NEON GREEN
* PRCGetRGB(1,11,1) := GREEN
* PRCGetRGB(9,6,1) := BROWN
* PRCGetRGB(11,9,11):= LIGHT PURPLE
* PRCGetRGB(12,10,7):= TAN
* PRCGetRGB(8,1,8) := PURPLE
* PRCGetRGB(13,9,13):= PLUM
* PRCGetRGB(1,7,7) := TEAL
* PRCGetRGB(1,15,15):= CYAN
* PRCGetRGB(1,1,15) := BRIGHT BLUE
*
* issues? contact genji@thegenji.com
* special thanks to ADAL-Miko and Rich Dersheimer in the bio forums.
*/
string GetRGB(int red = 15,int green = 15,int blue = 15);
string PRCGetRGB(int red = 15,int green = 15,int blue = 15);
/**
* Checks if any PCs (or optionally their NPC party members) are in the
@ -362,7 +362,7 @@ string BooleanToString(int bool, int bTLK = FALSE);
*
* @param s The string to trim.
*/
string TrimString(string s);
string PRCTrimString(string s);
/**
* Compares the given two strings lexicographically.
@ -584,13 +584,13 @@ const int ERROR_CODE_5_ONCE_MORE5 = -1;
* Function Definitions *
\**********************/
int max(int a, int b) {return (a > b ? a : b);}
int PRCMax(int a, int b) {return (a > b ? a : b);}
int min(int a, int b) {return (a < b ? a : b);}
int PRCMin(int a, int b) {return (a < b ? a : b);}
float fmax(float a, float b) {return (a > b ? a : b);}
float PRCFmax(float a, float b) {return (a > b ? a : b);}
float fmin(float a, float b) {return (a < b ? a : b);}
float PRCFmin(float a, float b) {return (a < b ? a : b);}
int HexToInt_old(string sHex)
{
@ -721,7 +721,7 @@ location AddLocationToLocation(location lMaster, location lAdd)
string GetRGB(int red = 15,int green = 15,int blue = 15)
string PRCGetRGB(int red = 15,int green = 15,int blue = 15)
{
object coloringBook = GetObjectByTag("ColoringBook");
if (coloringBook == OBJECT_INVALID)
@ -953,7 +953,7 @@ void ForceEquip(object oPC, object oItem, int nSlot, int nThCall = 0)
AssignCommand(oPC, ActionEquipItem(oItem, nSlot));
}
// Use a lenghtening delay in order to attempt handling lag and possible other interference. From 0.1s to 1s
fDelay = min(nThCall, 10) / 10.0f;
fDelay = PRCMin(nThCall, 10) / 10.0f;
}
// Loop
@ -995,7 +995,7 @@ void ForceUnequip(object oPC, object oItem, int nSlot, int nThCall = 0)
AssignCommand(oPC, ActionUnequipItem(oItem));
// Ramp up the delay if the action is not getting through. Might let whatever is intefering finish
fDelay = min(nThCall, 10) / 10.0f;
fDelay = PRCMin(nThCall, 10) / 10.0f;
}
// The item has already been unequipped
else
@ -1051,7 +1051,7 @@ string BooleanToString(int bool, int bTLK = FALSE)
(bool ? "True" : "False");
}
string TrimString(string s)
string PRCTrimString(string s)
{
int nCrop = 0;
string temp;
@ -1105,7 +1105,7 @@ int StringCompare(string s1, string s2)
// Start comparing
int nT,
i = 0,
nMax = min(GetStringLength(s1), GetStringLength(s2));
nMax = PRCMin(GetStringLength(s1), GetStringLength(s2));
while(i < nMax)
{
// Get the difference between the values of i:th characters
@ -1726,7 +1726,7 @@ void ForcePutDown(object oPC, object oItem, int nSlot, int nThCall = 0)
AssignCommand(oPC, ActionPutDownItem(oItem));
// Ramp up the delay if the action is not getting through. Might let whatever is intefering finish
fDelay = min(nThCall, 10) / 10.0f;
fDelay = PRCMin(nThCall, 10) / 10.0f;
}
// The item has already been unequipped
else

View File

@ -204,7 +204,7 @@ int GetInvokerLevel(object oInvoker = OBJECT_SELF, int nSpecificClass = CLASS_TY
return 0;
if(nSpecificClass == CLASS_TYPE_DRAGON_SHAMAN)
nLevel = max(GetLevelByClass(nSpecificClass, oInvoker) - 4, 1); // Can't go below 1
nLevel = PRCMax(GetLevelByClass(nSpecificClass, oInvoker) - 4, 1); // Can't go below 1
else
nLevel = GetLevelByClass(nSpecificClass, oInvoker);
if(DEBUG) DoDebug("Invoker Class Level is: " + IntToString(nLevel));
@ -256,7 +256,7 @@ int GetHighestInvokerLevel(object oCreature)
/* int GetHighestInvokerLevel(object oCreature)
{
return max(max(GetClassByPosition(1, oCreature) != CLASS_TYPE_INVALID ? GetInvokerLevel(oCreature, GetClassByPosition(1, oCreature)) : 0,
return PRCMax(PRCMax(GetClassByPosition(1, oCreature) != CLASS_TYPE_INVALID ? GetInvokerLevel(oCreature, GetClassByPosition(1, oCreature)) : 0,
GetClassByPosition(2, oCreature) != CLASS_TYPE_INVALID ? GetInvokerLevel(oCreature, GetClassByPosition(2, oCreature)) : 0
),
GetClassByPosition(3, oCreature) != CLASS_TYPE_INVALID ? GetInvokerLevel(oCreature, GetClassByPosition(3, oCreature)) : 0

View File

@ -204,7 +204,7 @@ int GetIncarnumLevelForClass(int nSpecificClass, object oMeldshaper)
int GetHighestMeldshaperLevel(object oMeldshaper)
{
/**return max(max(GetClassByPosition(1, oMeldshaper) != CLASS_TYPE_INVALID ? GetMeldshaperLevel(oMeldshaper, GetClassByPosition(1, oMeldshaper), -1) : 0,
/**return PRCMax(PRCMax(GetClassByPosition(1, oMeldshaper) != CLASS_TYPE_INVALID ? GetMeldshaperLevel(oMeldshaper, GetClassByPosition(1, oMeldshaper), -1) : 0,
GetClassByPosition(2, oMeldshaper) != CLASS_TYPE_INVALID ? GetMeldshaperLevel(oMeldshaper, GetClassByPosition(2, oMeldshaper), -1) : 0
),
GetClassByPosition(3, oMeldshaper) != CLASS_TYPE_INVALID ? GetMeldshaperLevel(oMeldshaper, GetClassByPosition(3, oMeldshaper), -1) : 0
@ -354,7 +354,7 @@ int GetMaxShapeSoulmeldCount(object oMeldshaper, int nClass)
int nCon = GetAbilityScore(oMeldshaper, ABILITY_CONSTITUTION, TRUE)-10;
if (GetHasFeat(FEAT_UNDEAD_MELDSHAPER, oMeldshaper)) nCon = GetAbilityScore(oMeldshaper, ABILITY_WISDOM, TRUE)-10;
//Limited to Con score - 10 or class limit, whichever is less
nMax = min(nMax, nCon);
nMax = PRCMin(nMax, nCon);
//if (DEBUG) DoDebug("GetMaxShapeSoulmeldCount is "+IntToString(nMax));
return nMax;
@ -856,7 +856,7 @@ void InvestEssentia(object oMeldshaper, int nMeld, int nEssentia)
}
int nClass = GetMeldShapedClass(oMeldshaper, nMeld);
// Special capacity of 1/2 class level
if (nMeld == MELD_SPINE_ENHANCEMENT) nEssentia = min(nEssentia, (GetLevelByClass(CLASS_TYPE_SPINEMELD_WARRIOR, oMeldshaper)/2));
if (nMeld == MELD_SPINE_ENHANCEMENT) nEssentia = PRCMin(nEssentia, (GetLevelByClass(CLASS_TYPE_SPINEMELD_WARRIOR, oMeldshaper)/2));
else if (nEssentia > GetMaxEssentiaCapacity(oMeldshaper, nClass, nMeld)) nEssentia = GetMaxEssentiaCapacity(oMeldshaper, nClass, nMeld);
// Can't invest more than you have
if (nEssentia > GetTotalUsableEssentia(oMeldshaper)) nEssentia = GetTotalUsableEssentia(oMeldshaper);
@ -1176,7 +1176,7 @@ int GetMaxEssentiaCapacityFeat(object oMeldshaper)
else if (nHD >= 6) nMax = 2;
if (GetLocalInt(oMeldshaper, "DivineSoultouch")) nMax += 1;
if (GetLocalInt(oMeldshaper, "IncandescentOverload")) nMax += max(GetAbilityModifier(ABILITY_CHARISMA, oMeldshaper), 1);
if (GetLocalInt(oMeldshaper, "IncandescentOverload")) nMax += PRCMax(GetAbilityModifier(ABILITY_CHARISMA, oMeldshaper), 1);
if (GetHasFeat(FEAT_IMPROVED_ESSENTIA_CAPACITY, oMeldshaper)) nMax += 1;
// Don't allow more than they have

View File

@ -188,15 +188,15 @@ int GetArmourCheckPenaltyReduction(object oItem)
int nACPenalty = GetItemArmourCheckPenalty(oItem);
if(nMaterial & PRC_CRAFT_FLAG_MASTERWORK)
{
nBonus = min(1, nACPenalty);
nBonus = PRCMin(1, nACPenalty);
}
if(nMaterial & PRC_CRAFT_FLAG_DARKWOOD)
{
nBonus = min(2, nACPenalty);
nBonus = PRCMin(2, nACPenalty);
}
if(nMaterial & PRC_CRAFT_FLAG_MITHRAL)
{
nBonus = min(3, nACPenalty);
nBonus = PRCMin(3, nACPenalty);
}
}
return nBonus;
@ -986,7 +986,7 @@ int CheckGolemPrereq(object oPC, int nLine, int bEpic)
int nLevel;
int j = 0;
//replace the arti level check later when PrCs are added
int nCasterLevel = max(max(max(GetLevelByTypeArcane(oPC), GetLevelByTypeDivine(oPC)), GetLevelByClass(CLASS_TYPE_ARTIFICER, oPC) + 2), GetLocalInt(oPC, "InvokerLevel"));
int nCasterLevel = PRCMax(PRCMax(PRCMax(GetLevelByTypeArcane(oPC), GetLevelByTypeDivine(oPC)), GetLevelByClass(CLASS_TYPE_ARTIFICER, oPC) + 2), GetLocalInt(oPC, "InvokerLevel"));
int nManifesterLevel = GetManifesterLevel(oPC);
int nTemp, nLength, nPosition;
int bArtificer = (GetLevelByClass(CLASS_TYPE_ARTIFICER, oPC) > 0);
@ -999,7 +999,7 @@ int CheckGolemPrereq(object oPC, int nLine, int bEpic)
else if(sPropertyType == "P")
nLevel = nManifesterLevel;
else
nLevel = max(nCasterLevel, nManifesterLevel);
nLevel = PRCMax(nCasterLevel, nManifesterLevel);
if(!bEpic && Get2DACache(sFile, "Epic", nLine) == "1")
return FALSE;
else if(nLevel < StringToInt(Get2DACache(sFile, "Level", nLine)))
@ -1051,7 +1051,7 @@ int CheckPrereq(object oPC, int nLine, int bEpic, string sFile, struct itemvars
int nLevel;
int j = 0;
//replace the arti level check later when PrCs are added
int nCasterLevel = max(max(max(GetLevelByTypeArcane(oPC), GetLevelByTypeDivine(oPC)), GetLevelByClass(CLASS_TYPE_ARTIFICER, oPC) + 2), GetLocalInt(oPC, "InvokerLevel"));
int nCasterLevel = PRCMax(PRCMax(PRCMax(GetLevelByTypeArcane(oPC), GetLevelByTypeDivine(oPC)), GetLevelByClass(CLASS_TYPE_ARTIFICER, oPC) + 2), GetLocalInt(oPC, "InvokerLevel"));
nCasterLevel += GetLevelByClass(CLASS_TYPE_BATTLESMITH) * 3;
nCasterLevel += GetLevelByClass(CLASS_TYPE_IRONSOUL_FORGEMASTER) * 3;
int nManifesterLevel = GetManifesterLevel(oPC);
@ -1064,7 +1064,7 @@ int CheckPrereq(object oPC, int nLine, int bEpic, string sFile, struct itemvars
else if(sPropertyType == "P")
nLevel = nManifesterLevel;
else
nLevel = max(nCasterLevel, nManifesterLevel);
nLevel = PRCMax(nCasterLevel, nManifesterLevel);
if (DEBUG) DoDebug("CheckPrereq: "+GetName(oPC)+" nLevel "+IntToString(nLevel)+" PropType "+sPropertyType+" Epic "+IntToString(bEpic)+" sFile "+sFile);
@ -1187,7 +1187,7 @@ struct itemvars GetItemVars(object oPC, object oItem, string sFile, int bEpic =
int nEnhancement;
int nSpellPattern;
int nSpell1, nSpell2, nSpell3, nSpellOR1, nSpellOR2;
int nCasterLevel = max(GetLevelByTypeArcane(oPC), GetLevelByTypeDivine(oPC));
int nCasterLevel = PRCMax(GetLevelByTypeArcane(oPC), GetLevelByTypeDivine(oPC));
int nManifesterLevel = GetManifesterLevel(oPC);
int nLevel;
int nFileEnd = PRCGetFileEnd(sFile);

View File

@ -1560,6 +1560,12 @@ const int FEAT_SANCTIFY_MARTIAL_SICKLE = 3169;
const int FEAT_SANCTIFY_MARTIAL_MINDBLADE = 3623;
const int FEAT_SANCTIFY_MARTIAL_WHIP = 3596;
const int FEAT_SANCTIFY_MARTIAL_TRIDENT = 3597;
const int FEAT_SANCTIFYKISTRIKE = 26002;
const int FEAT_HOLYKISTRIKE = 26003;
const int FEAT_FISTOFHEAVENS = 26004;
const int FEAT_VOWABSTINENCE = 26005;
const int FEAT_VOWCHASTITY = 26006;
const int FEAT_GIFTOFFAITH = 26007;
//heartwarder
const int FEAT_CHARISMA_INC1 = 3230;
@ -2493,7 +2499,13 @@ const int FEAT_WEAPON_OF_CHOICE_MINDBLADE = 3622;
const int FEAT_MIND_CLEAVE = 24414;
//Psionic Feats
//:: Psionic Feats
const int FEAT_AUGMENT_PSIONICS_QUICKSELECTS = 3550;
const int FEAT_AUGMENT_QUICKSELECTS_2 = 3563;
const int FEAT_AUGMENT_PSIONICS_DIGITS_0_4 = 3551;
const int FEAT_AUGMENT_PSIONICS_DIGITS_5_9 = 3552;
const int FEAT_AUGMENT_PSIONICS_TENS = 3553;
const int FEAT_MENTAL_RESISTANCE = 4812;
const int FEAT_HOSTILE_MIND = 4813;
const int FEAT_FORCE_OF_WILL = 4814;
@ -5862,10 +5874,60 @@ const int FEAT_SWIFT_WING_SPELLCASTING_VASSAL = 19588;
const int FEAT_WARPRIEST_SPELLCASTING_VASSAL = 19589;
//:: No spellcasting or invoking marker feats
const int FEAT_ASMODEUS_SPELLCASTING_NONE = 19590;
const int FEAT_TIAMAT_SPELLCASTING_NONE = 19591;
const int FEAT_DSONG_SPELLCASTING_NONE = 19592;
const int FEAT_OLLAM_SPELLCASTING_NONE = 19593;
const int FEAT_ASMODEUS_SPELLCASTING_NONE = 19590;
const int FEAT_TIAMAT_SPELLCASTING_NONE = 19591;
const int FEAT_DSONG_SPELLCASTING_NONE = 19592;
const int FEAT_OLLAM_SPELLCASTING_NONE = 19593;
//:: PRC8 Hidden Talent Feats
const int FEAT_HIDDEN_TALENT_BIOFEEDBACK = 25901;
const int FEAT_HIDDEN_TALENT_BITE_WOLF = 25902;
const int FEAT_HIDDEN_TALENT_BOLT = 25903;
const int FEAT_HIDDEN_TALENT_BURST = 25904;
const int FEAT_HIDDEN_TALENT_CALLTOMIND = 25905;
const int FEAT_HIDDEN_TALENT_CALL_WEAPONRY = 25906;
const int FEAT_HIDDEN_TALENT_CHAMELEON = 25907;
const int FEAT_HIDDEN_TALENT_CLAWS_BEAST = 25908;
const int FEAT_HIDDEN_TALENT_COMPRESSION = 25909;
const int FEAT_HIDDEN_TALENT_CONCEALTHOUGHT = 25910;
const int FEAT_HIDDEN_TALENT_CREATESOUND = 25911;
const int FEAT_HIDDEN_TALENT_CRYSTALSHARD = 25912;
const int FEAT_HIDDEN_TALENT_DAZE = 25913;
const int FEAT_HIDDEN_TALENT_DECELERATION = 25914;
const int FEAT_HIDDEN_TALENT_DEFPRECOG = 25915;
const int FEAT_HIDDEN_TALENT_DEMORALIZE = 25916;
const int FEAT_HIDDEN_TALENT_DISABLE = 25917;
const int FEAT_HIDDEN_TALENT_DISSIPATINGTOUCH = 25918;
const int FEAT_HIDDEN_TALENT_DISTRACT = 25919;
const int FEAT_HIDDEN_TALENT_ELFSIGHT = 25920;
const int FEAT_HIDDEN_TALENT_EMPATHY = 25921;
const int FEAT_HIDDEN_TALENT_EMPTYMIND = 25922;
const int FEAT_HIDDEN_TALENT_ENERGYRAY = 25923;
const int FEAT_HIDDEN_TALENT_ENTANGLE = 25924;
const int FEAT_HIDDEN_TALENT_EXPANSION = 25925;
const int FEAT_HIDDEN_TALENT_FARHAND = 25926;
const int FEAT_HIDDEN_TALENT_FORCESCREEN = 25927;
const int FEAT_HIDDEN_TALENT_GREASE = 25928;
const int FEAT_HIDDEN_TALENT_HAMMER = 25929;
const int FEAT_HIDDEN_TALENT_INERTIALARMOUR = 25930;
const int FEAT_HIDDEN_TALENT_MATTERAGITATION = 25931;
const int FEAT_HIDDEN_TALENT_METAPHYSICAL_CLAW = 25932;
const int FEAT_HIDDEN_TALENT_METAPHYSICAL_WEAPON = 25933;
const int FEAT_HIDDEN_TALENT_MINDTHRUST = 25934;
const int FEAT_HIDDEN_TALENT_MYLIGHT = 25935;
const int FEAT_HIDDEN_TALENT_OFFPRECOG = 25936;
const int FEAT_HIDDEN_TALENT_OFFPRESC = 25937;
const int FEAT_HIDDEN_TALENT_PREVENOM = 25938;
const int FEAT_HIDDEN_TALENT_PREVENOM_WEAPON = 25939;
const int FEAT_HIDDEN_TALENT_SKATE = 25940;
const int FEAT_HIDDEN_TALENT_STOMP = 25941;
const int FEAT_HIDDEN_TALENT_SYNESTHETE = 25942;
const int FEAT_HIDDEN_TALENT_TELEMPATHICPRO = 25943;
const int FEAT_HIDDEN_TALENT_THICKSKIN = 25944;
const int FEAT_HIDDEN_TALENT_VIGOR = 25945;
const int FEAT_HIDDEN_TALENT_GRIP_IRON = 25946;
//:: Test void

View File

@ -418,7 +418,7 @@ void ApplyBreath(struct breath BreathUsed, location lTargetArea, int bLinger = F
if (BreathUsed.nDCStat >= 10)
nSaveDC = BreathUsed.nDCStat;
else
nSaveDC = 10 + max(GetAbilityModifier(BreathUsed.nDCStat), 0) + BreathUsed.nOtherDCMod;
nSaveDC = 10 + PRCMax(GetAbilityModifier(BreathUsed.nDCStat), 0) + BreathUsed.nOtherDCMod;
//Set up variables that depend on damage type
switch (BreathUsed.nDamageType)

View File

@ -981,7 +981,7 @@ int GetAttacks(int iBAB, int iHD)
// this is the Bioware implementation, which includes BAB from other classes and caps at 6
int GetMonkAttacks(int iBAB, int iHD)
{
return ((iHD > 20) ? min(6,((iBAB - (iHD-17)/2)/3 +1)) : min(6,((iBAB-1) / 3 +1)));
return ((iHD > 20) ? PRCMin(6,((iBAB - (iHD-17)/2)/3 +1)) : PRCMin(6,((iBAB-1) / 3 +1)));
}
int GetPnPMonkAttacks(int iMonkLevel)
@ -3038,7 +3038,7 @@ int GetDefenderAC(object oDefender, object oAttacker, int bIsTouchAttack = FALSE
// Wilders get to add cha bonus to touch attacks only, but cannot exceed normal AC that way
if(GetHasFeat(FEAT_WILDER_ELUDE_TOUCH, oDefender))
iAC = min(iAC + GetAbilityModifier(ABILITY_CHARISMA, oDefender), nNormalAC);
iAC = PRCMin(iAC + GetAbilityModifier(ABILITY_CHARISMA, oDefender), nNormalAC);
}
//if (DEBUG) DoDebug("GetDefenderAC: End Section #5");
return iAC;
@ -4880,7 +4880,7 @@ DoDebug("GetWeaponBonusDamage() found onhitcastspell with Spell type: " + IntToS
iDamage = iDamageDarkfire + iDamageFlameWeapon;
else
// otherwise we take the maximum
iDamage = max(iDamageDarkfire, iDamageFlameWeapon);
iDamage = PRCMax(iDamageDarkfire, iDamageFlameWeapon);
if(iDamage)
{
// now either (if stacking) add the spell's fire damage to any other fire damage that is already on the weapon,
@ -4888,7 +4888,7 @@ DoDebug("GetWeaponBonusDamage() found onhitcastspell with Spell type: " + IntToS
if(bStack)
iDamage += GetDamageByConstant(weapBonusDam.dam_Fire, TRUE);
else
iDamage = max(GetDamageByConstant(weapBonusDam.dam_Fire, TRUE), iDamage);
iDamage = PRCMax(GetDamageByConstant(weapBonusDam.dam_Fire, TRUE), iDamage);
if(iDamage > 20) iDamage = 20; // make sure that the damage does not exceed 20
// convert integer damage back to DamageBonusConstant

View File

@ -73,7 +73,7 @@ void CheckForPnPHolyAvenger(object oItem);
void _prc_inc_itmrstr_ApplySpeedIncrease(object oPC)
{
// Get target speed modification value. Limit to 99, since that's the effect constructor maximum value
int nSpeedMod = min(99, GetLocalInt(oPC, PLAYER_SPEED_INCREASE));
int nSpeedMod = PRCMin(99, GetLocalInt(oPC, PLAYER_SPEED_INCREASE));
object oSkin = GetPCSkin(oPC);
AssignCommand(oSkin, _prc_inc_itmrstr_ApplySpeedModification(oPC, EFFECT_TYPE_MOVEMENT_SPEED_INCREASE, nSpeedMod));

View File

@ -193,7 +193,7 @@ void DetectAlignmentRound(int nRound, location lLoc, int nGoodEvil, int nLawChao
{
//presence/absence
//ApplyEffectDetectAuraOnObject(AURA_STRENGTH_MODERATE, oCaster, nBeamVFX);
FloatingTextStringOnCreature(GetRGB(15,5,5) + GetStringByStrRef(16832001)// "You detect the presense of"
FloatingTextStringOnCreature(PRCGetRGB(15,5,5) + GetStringByStrRef(16832001)// "You detect the presense of"
+ " " + (nLawChaos != -1 ? // "good" and "evil" work as both substantives and adjectives, but not so for "lawful" and "chaotic"
(nLawChaos == ALIGNMENT_LAWFUL ?
GetStringByStrRef(4957) // "law"
@ -253,7 +253,7 @@ void DetectAlignmentRound(int nRound, location lLoc, int nGoodEvil, int nLawChao
else if(nRound >= 3)
{
if(nRound == 3)
ActionDoCommand(FloatingTextStringOnCreature(GetRGB(15,16-(nStrength*3),16-(nStrength*3)) + GetName(oTest) + " " + GetStringByStrRef(16832044)/*"feels"*/ + " "+GetNounForStrength(nStrength)+" "+sAura+".", oCaster, FALSE));
ActionDoCommand(FloatingTextStringOnCreature(PRCGetRGB(15,16-(nStrength*3),16-(nStrength*3)) + GetName(oTest) + " " + GetStringByStrRef(16832044)/*"feels"*/ + " "+GetNounForStrength(nStrength)+" "+sAura+".", oCaster, FALSE));
//strength & location
ActionDoCommand(ApplyEffectDetectAuraOnObject(nStrength, oTest, nBeamVFX));
}
@ -264,7 +264,7 @@ void DetectAlignmentRound(int nRound, location lLoc, int nGoodEvil, int nLawChao
{
//reporting
//ApplyEffectDetectAuraOnObject(nStrongestAura, oCaster, nBeamVFX);
FloatingTextStringOnCreature(GetRGB(15,16-(nStrongestAura*3),16-(nStrongestAura*3)) + GetStringByStrRef(16832045)/*"You detected"*/ + " " + IntToString(nAuraCount) + " " + GetNounForStrength(nStrongestAura) + " " + sAura + " " + GetStringByStrRef(16832046)/*"auras"*/ + ".", oCaster, FALSE);
FloatingTextStringOnCreature(PRCGetRGB(15,16-(nStrongestAura*3),16-(nStrongestAura*3)) + GetStringByStrRef(16832045)/*"You detected"*/ + " " + IntToString(nAuraCount) + " " + GetNounForStrength(nStrongestAura) + " " + sAura + " " + GetStringByStrRef(16832046)/*"auras"*/ + ".", oCaster, FALSE);
}
//ActionPlayAnimation(ANIMATION_LOOPING_MEDITATE, 1.0, 6.0);
@ -371,7 +371,7 @@ void DetectMagicAura(int nRound, location lLoc, int nBeamVFX, float fDist)
else if(nRound >= 3)
{
if(nRound == 3)
ActionDoCommand(FloatingTextStringOnCreature(GetRGB(15,16-(nStrength*3),16-(nStrength*3)) + GetName(oTest) + " feels affected by "+GetNounForStrength(nStrength)+" magic.", oCaster, FALSE));
ActionDoCommand(FloatingTextStringOnCreature(PRCGetRGB(15,16-(nStrength*3),16-(nStrength*3)) + GetName(oTest) + " feels affected by "+GetNounForStrength(nStrength)+" magic.", oCaster, FALSE));
//strength & location
ActionDoCommand(ApplyEffectDetectAuraOnObject(nStrength, oTest, nBeamVFX));
}
@ -382,7 +382,7 @@ void DetectMagicAura(int nRound, location lLoc, int nBeamVFX, float fDist)
{
//reporting
//ApplyEffectDetectAuraOnObject(nStrongestAura, oCaster, nBeamVFX);
FloatingTextStringOnCreature(GetRGB(15,16-(nStrongestAura*3),16-(nStrongestAura*3)) + GetStringByStrRef(16832045)/*"You detected"*/ + " " + IntToString(nAuraCount) + " " + GetNounForStrength(nStrongestAura) + " magical " + GetStringByStrRef(16832046)/*"auras"*/ + ".", oCaster, FALSE);
FloatingTextStringOnCreature(PRCGetRGB(15,16-(nStrongestAura*3),16-(nStrongestAura*3)) + GetStringByStrRef(16832045)/*"You detected"*/ + " " + IntToString(nAuraCount) + " " + GetNounForStrength(nStrongestAura) + " magical " + GetStringByStrRef(16832046)/*"auras"*/ + ".", oCaster, FALSE);
}
//ActionPlayAnimation(ANIMATION_LOOPING_MEDITATE, 1.0, 6.0);
@ -475,7 +475,7 @@ void DetectRaceAura(int nRound, int nRace, location lLoc, int nBeamVFX, float fD
else if(nRound >= 3)
{
if(nRound == 3)
ActionDoCommand(FloatingTextStringOnCreature(GetRGB(15,16-(nStrength*3),16-(nStrength*3)) + GetName(oTest) + " finds the greatest aura is "+GetNounForStrength(nStrength)+".", oCaster, FALSE));
ActionDoCommand(FloatingTextStringOnCreature(PRCGetRGB(15,16-(nStrength*3),16-(nStrength*3)) + GetName(oTest) + " finds the greatest aura is "+GetNounForStrength(nStrength)+".", oCaster, FALSE));
//strength & location
ActionDoCommand(ApplyEffectDetectAuraOnObject(nStrength, oTest, nBeamVFX));
}
@ -486,7 +486,7 @@ void DetectRaceAura(int nRound, int nRace, location lLoc, int nBeamVFX, float fD
{
//reporting
//ApplyEffectDetectAuraOnObject(nStrongestAura, oCaster, nBeamVFX);
FloatingTextStringOnCreature(GetRGB(15,16-(nStrongestAura*3),16-(nStrongestAura*3)) + GetStringByStrRef(16832045)/*"You detected"*/ + " " + IntToString(nAuraCount) + " " + GetNounForStrength(nStrongestAura) + " racial " + GetStringByStrRef(16832046)/*"auras"*/ + ".", oCaster, FALSE);
FloatingTextStringOnCreature(PRCGetRGB(15,16-(nStrongestAura*3),16-(nStrongestAura*3)) + GetStringByStrRef(16832045)/*"You detected"*/ + " " + IntToString(nAuraCount) + " " + GetNounForStrength(nStrongestAura) + " racial " + GetStringByStrRef(16832046)/*"auras"*/ + ".", oCaster, FALSE);
}
//ActionPlayAnimation(ANIMATION_LOOPING_MEDITATE, 1.0, 6.0);

View File

@ -174,7 +174,7 @@ void ScryMain(object oPC, object oTarget)
{
// Caster level check or the Divination fails.
// Max of 10
if(max(10, GetManifesterLevel(oTarget)) + 13 > nCasterLevel + d20())
if(PRCMax(10, GetManifesterLevel(oTarget)) + 13 > nCasterLevel + d20())
{
FloatingTextStringOnCreature(GetName(oTarget) + " has Escape Detection active.", oPC, FALSE);
return;

View File

@ -1980,7 +1980,7 @@ void UpdateStoredTemplateInfo(object oShifter, int nShifterType, int nStart = 0)
int nArraySize = GetNumberOfStoredTemplates(oShifter, nShifterType);
if(nStart < nArraySize)
{
int nEnd = min(nStart + CHUNK_SIZE, nArraySize);
int nEnd = PRCMin(nStart + CHUNK_SIZE, nArraySize);
_UpdateStoredTemplateInfo(oShifter, nShifterType, nStart, nEnd);
if(nEnd < nArraySize)
DelayCommand(0.0f, UpdateStoredTemplateInfo(oShifter, nShifterType, nEnd));

View File

@ -85,7 +85,7 @@ void _ForceEquipSkin(object oPC, object oSkin, int nThCall = 0)
}
}
// Use a lenghtening delay in order to attempt handling lag and possible other interference. From 0.1s to 1s
fDelay = (nThCall < 10 ? nThCall : 10) / 10.0f; // yes this is the same as min(nThCall, 10)
fDelay = (nThCall < 10 ? nThCall : 10) / 10.0f; // yes this is the same as PRCMin(nThCall, 10)
}
// Loop

View File

@ -197,17 +197,25 @@ const int IP_CONST_FEAT_SPRINGATTACK = 258;
const int IP_CONST_FEAT_EVASION = 386;
const int IP_CONST_FEAT_IMPEVASION = 387;
const int IP_CONST_FEAT_GREAT_CLEAVE = 260;
const int IP_CONST_FEAT_PSIONIC_FOCUS = 259;
const int IP_CONST_FEAT_IMPROVED_INIT = 261;
const int IP_CONST_FEAT_BLOODED = 270;
const int IP_CONST_FEAT_POWER_ATTACK_SINGLE_RADIAL = 252;
const int IP_CONST_FEAT_POWER_ATTACK_FIVES_RADIAL = 253;
const int IP_CONST_FEAT_PRC_POWER_ATTACK_QUICKS_RADIAL = 262;
const int IP_CONST_FEAT_POWER_ATTACK_SINGLE_RADIAL = 252;
const int IP_CONST_FEAT_POWER_ATTACK_FIVES_RADIAL = 253;
const int IP_CONST_FEAT_PRC_POWER_ATTACK_QUICKS_RADIAL = 262;
const int IP_CONST_FEAT_TELEPORT_MANAGEMENT_RADIAL = 263;
const int IP_CONST_FEAT_TELEPORT_MANAGEMENT_RADIAL = 263;
const int IP_CONST_FEAT_EPIC_REST = 399;
//:: Psionic System Feats
const int IP_CONST_FEAT_PSIONIC_FOCUS = 259;
const int IP_CONST_FEAT_AUGMENT_PSIONICS_QUICKSELECTS = 584;
const int IP_CONST_FEAT_AUGMENT_PSIONICS_DIGITS_0_4 = 585;
const int IP_CONST_FEAT_AUGMENT_PSIONICS_DIGITS_5_9 = 586;
const int IP_CONST_FEAT_AUGMENT_PSIONICS_TENS = 587;
const int IP_CONST_FEAT_AUGMENT_QUICKSELECTS_2 = 586;
const int IP_CONST_FEAT_EPIC_REST = 399;
//:: PnP Weapon Feats
const int IP_CONST_FEAT_WEAPON_PROFICIENCY_SHORTSWORD = 4601;

View File

@ -183,7 +183,7 @@ int _prc_inc_GetItemACBonus(object oItem)
while(GetIsItemPropertyValid(iProp))
{
if(GetItemPropertyType(iProp) == ITEM_PROPERTY_AC_BONUS && GetItemPropertyDurationType(iProp) == DURATION_TYPE_PERMANENT)
nArmorBonus = max(nArmorBonus, GetItemPropertyCostTableValue(iProp)); //TODO: pick the biggest? the first? stack them?
nArmorBonus = PRCMax(nArmorBonus, GetItemPropertyCostTableValue(iProp)); //TODO: pick the biggest? the first? stack them?
iProp = GetNextItemProperty(oItem);
}
return nArmorBonus;
@ -238,18 +238,18 @@ struct _prc_inc_ac_info_struct _prc_inc_ACInfo(object oTemplate)
ac_info.nNaturalBonus = GetItemACValue(GetItemInSlot(INVENTORY_SLOT_NECK, oTemplate));
ac_info.nDeflectionBonus = GetItemACValue(GetItemInSlot(INVENTORY_SLOT_HEAD, oTemplate));
ac_info.nDeflectionBonus = max(ac_info.nDeflectionBonus, GetItemACValue(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oTemplate)));
ac_info.nDeflectionBonus = max(ac_info.nDeflectionBonus, GetItemACValue(GetItemInSlot(INVENTORY_SLOT_CLOAK, oTemplate)));
ac_info.nDeflectionBonus = max(ac_info.nDeflectionBonus, GetItemACValue(GetItemInSlot(INVENTORY_SLOT_RIGHTRING, oTemplate)));
ac_info.nDeflectionBonus = max(ac_info.nDeflectionBonus, GetItemACValue(GetItemInSlot(INVENTORY_SLOT_LEFTRING, oTemplate)));
ac_info.nDeflectionBonus = max(ac_info.nDeflectionBonus, GetItemACValue(GetItemInSlot(INVENTORY_SLOT_BELT, oTemplate)));
ac_info.nDeflectionBonus = max(ac_info.nDeflectionBonus, GetItemACValue(GetItemInSlot(INVENTORY_SLOT_ARROWS, oTemplate)));
ac_info.nDeflectionBonus = max(ac_info.nDeflectionBonus, GetItemACValue(GetItemInSlot(INVENTORY_SLOT_BULLETS, oTemplate)));
ac_info.nDeflectionBonus = max(ac_info.nDeflectionBonus, GetItemACValue(GetItemInSlot(INVENTORY_SLOT_BOLTS, oTemplate)));
ac_info.nDeflectionBonus = max(ac_info.nDeflectionBonus, GetItemACValue(GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oTemplate)));
ac_info.nDeflectionBonus = max(ac_info.nDeflectionBonus, GetItemACValue(GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oTemplate)));
ac_info.nDeflectionBonus = max(ac_info.nDeflectionBonus, GetItemACValue(GetItemInSlot(INVENTORY_SLOT_CWEAPON_B, oTemplate)));
ac_info.nDeflectionBonus = max(ac_info.nDeflectionBonus, GetItemACValue(GetItemInSlot(INVENTORY_SLOT_CARMOUR, oTemplate)));
ac_info.nDeflectionBonus = PRCMax(ac_info.nDeflectionBonus, GetItemACValue(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oTemplate)));
ac_info.nDeflectionBonus = PRCMax(ac_info.nDeflectionBonus, GetItemACValue(GetItemInSlot(INVENTORY_SLOT_CLOAK, oTemplate)));
ac_info.nDeflectionBonus = PRCMax(ac_info.nDeflectionBonus, GetItemACValue(GetItemInSlot(INVENTORY_SLOT_RIGHTRING, oTemplate)));
ac_info.nDeflectionBonus = PRCMax(ac_info.nDeflectionBonus, GetItemACValue(GetItemInSlot(INVENTORY_SLOT_LEFTRING, oTemplate)));
ac_info.nDeflectionBonus = PRCMax(ac_info.nDeflectionBonus, GetItemACValue(GetItemInSlot(INVENTORY_SLOT_BELT, oTemplate)));
ac_info.nDeflectionBonus = PRCMax(ac_info.nDeflectionBonus, GetItemACValue(GetItemInSlot(INVENTORY_SLOT_ARROWS, oTemplate)));
ac_info.nDeflectionBonus = PRCMax(ac_info.nDeflectionBonus, GetItemACValue(GetItemInSlot(INVENTORY_SLOT_BULLETS, oTemplate)));
ac_info.nDeflectionBonus = PRCMax(ac_info.nDeflectionBonus, GetItemACValue(GetItemInSlot(INVENTORY_SLOT_BOLTS, oTemplate)));
ac_info.nDeflectionBonus = PRCMax(ac_info.nDeflectionBonus, GetItemACValue(GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oTemplate)));
ac_info.nDeflectionBonus = PRCMax(ac_info.nDeflectionBonus, GetItemACValue(GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oTemplate)));
ac_info.nDeflectionBonus = PRCMax(ac_info.nDeflectionBonus, GetItemACValue(GetItemInSlot(INVENTORY_SLOT_CWEAPON_B, oTemplate)));
ac_info.nDeflectionBonus = PRCMax(ac_info.nDeflectionBonus, GetItemACValue(GetItemInSlot(INVENTORY_SLOT_CARMOUR, oTemplate)));
object oOffHandItem = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oTemplate);
ac_info.nShieldBase = 0;
@ -269,7 +269,7 @@ struct _prc_inc_ac_info_struct _prc_inc_ACInfo(object oTemplate)
ac_info.nShieldBonus = GetItemACValue(oOffHandItem) - ac_info.nShieldBase;
break;
default: //A weapon
ac_info.nDeflectionBonus = max(ac_info.nDeflectionBonus, GetItemACValue(oOffHandItem));
ac_info.nDeflectionBonus = PRCMax(ac_info.nDeflectionBonus, GetItemACValue(oOffHandItem));
break;
}
@ -277,11 +277,11 @@ struct _prc_inc_ac_info_struct _prc_inc_ACInfo(object oTemplate)
switch (GetBaseItemType(oArmsItem))
{
case BASE_ITEM_BRACER:
ac_info.nShieldBonus = max(ac_info.nShieldBonus, GetItemACValue(oArmsItem));
ac_info.nShieldBonus = PRCMax(ac_info.nShieldBonus, GetItemACValue(oArmsItem));
break;
case BASE_ITEM_GLOVES:
default:
ac_info.nDeflectionBonus = max(ac_info.nDeflectionBonus, GetItemACValue(oArmsItem));
ac_info.nDeflectionBonus = PRCMax(ac_info.nDeflectionBonus, GetItemACValue(oArmsItem));
break;
}
@ -296,7 +296,7 @@ struct _prc_inc_ac_info_struct _prc_inc_ACInfo(object oTemplate)
if (ac_info.nShieldBonus > 20)
ac_info.nShieldBonus = 20;
ac_info.nDEXBonus = min(GetAbilityModifier(ABILITY_DEXTERITY, oTemplate), _prc_inc_GetArmorMaxDEXBonus(oArmorItem));
ac_info.nDEXBonus = PRCMin(GetAbilityModifier(ABILITY_DEXTERITY, oTemplate), _prc_inc_GetArmorMaxDEXBonus(oArmorItem));
//TODO: make sure this isn't < 0?
return ac_info;
@ -416,43 +416,43 @@ int _prc_inc_shifting_ShifterLevelRequirement(object oTemplate)
// Size tests
if(nSize >= CREATURE_SIZE_HUGE)
nLevelRequired = max(nLevelRequired, 7);
nLevelRequired = PRCMax(nLevelRequired, 7);
if(nSize == CREATURE_SIZE_LARGE)
nLevelRequired = max(nLevelRequired, 3);
nLevelRequired = PRCMax(nLevelRequired, 3);
if(nSize == CREATURE_SIZE_MEDIUM)
nLevelRequired = max(nLevelRequired, 1);
nLevelRequired = PRCMax(nLevelRequired, 1);
if(nSize == CREATURE_SIZE_SMALL)
nLevelRequired = max(nLevelRequired, 1);
nLevelRequired = PRCMax(nLevelRequired, 1);
if(nSize <= CREATURE_SIZE_TINY)
nLevelRequired = max(nLevelRequired, 3);
nLevelRequired = PRCMax(nLevelRequired, 3);
// Type tests
if(nRacialType == RACIAL_TYPE_OUTSIDER)
nLevelRequired = max(nLevelRequired, 9);
nLevelRequired = PRCMax(nLevelRequired, 9);
if(nRacialType == RACIAL_TYPE_ELEMENTAL)
nLevelRequired = max(nLevelRequired, 9);
nLevelRequired = PRCMax(nLevelRequired, 9);
if(nRacialType == RACIAL_TYPE_CONSTRUCT)
nLevelRequired = max(nLevelRequired, 8);
nLevelRequired = PRCMax(nLevelRequired, 8);
if(nRacialType == RACIAL_TYPE_UNDEAD)
nLevelRequired = max(nLevelRequired, 8);
nLevelRequired = PRCMax(nLevelRequired, 8);
if(nRacialType == RACIAL_TYPE_DRAGON)
nLevelRequired = max(nLevelRequired, 7);
nLevelRequired = PRCMax(nLevelRequired, 7);
if(nRacialType == RACIAL_TYPE_ABERRATION)
nLevelRequired = max(nLevelRequired, 6);
nLevelRequired = PRCMax(nLevelRequired, 6);
if(nRacialType == RACIAL_TYPE_OOZE)
nLevelRequired = max(nLevelRequired, 6);
nLevelRequired = PRCMax(nLevelRequired, 6);
if(nRacialType == RACIAL_TYPE_MAGICAL_BEAST)
nLevelRequired = max(nLevelRequired, 5);
nLevelRequired = PRCMax(nLevelRequired, 5);
if(nRacialType == RACIAL_TYPE_GIANT)
nLevelRequired = max(nLevelRequired, 4);
nLevelRequired = PRCMax(nLevelRequired, 4);
if(nRacialType == RACIAL_TYPE_VERMIN)
nLevelRequired = max(nLevelRequired, 4);
nLevelRequired = PRCMax(nLevelRequired, 4);
if(nRacialType == RACIAL_TYPE_BEAST)
nLevelRequired = max(nLevelRequired, 3);
nLevelRequired = PRCMax(nLevelRequired, 3);
if(nRacialType == RACIAL_TYPE_ANIMAL)
nLevelRequired = max(nLevelRequired, 2);
nLevelRequired = PRCMax(nLevelRequired, 2);
if(nRacialType == RACIAL_TYPE_HUMANOID_MONSTROUS)
nLevelRequired = max(nLevelRequired, 2);
nLevelRequired = PRCMax(nLevelRequired, 2);
if(nRacialType == RACIAL_TYPE_DWARF ||
nRacialType == RACIAL_TYPE_ELF ||
nRacialType == RACIAL_TYPE_GNOME ||
@ -463,7 +463,7 @@ int _prc_inc_shifting_ShifterLevelRequirement(object oTemplate)
nRacialType == RACIAL_TYPE_HUMANOID_ORC ||
nRacialType == RACIAL_TYPE_HUMANOID_REPTILIAN
)
nLevelRequired = max(nLevelRequired, 1);
nLevelRequired = PRCMax(nLevelRequired, 1);
return nLevelRequired;
}

View File

@ -264,7 +264,7 @@ int SpellfireDrainItem(object oPC, object oItem, int bCharged = TRUE, int bSingl
int nCharges = GetItemCharges(oItem);
if(nCharges) //charged item
{
nExpend = min(min(nCharges, nCap), nExpend); //capped by charges and capacity
nExpend = PRCMin(PRCMin(nCharges, nCap), nExpend); //capped by charges and capacity
SetItemCharges(oItem, nCharges - nExpend); //will destroy item if all charges drained
AddSpellfireLevels(oPC, nExpend); //adds 1 level/charge
return TRUE;
@ -307,7 +307,7 @@ int SpellfireDrainItem(object oPC, object oItem, int bCharged = TRUE, int bSingl
(nBase == BASE_ITEM_ENCHANTED_SCROLL)
)
{
nExpend = min(min(nStack, nCap), nExpend); //capped by charges and capacity
nExpend = PRCMin(PRCMin(nStack, nCap), nExpend); //capped by charges and capacity
if(nExpend == nStack)
DestroyObject(oItem);
else

View File

@ -2898,11 +2898,11 @@ int GetAlternativeCasterLevel(object oPC, int nLevel)
nLevel += GetLevelByClass(CLASS_TYPE_IRONSOUL_FORGEMASTER) * 3;
if(GetLocalInt(oPC, "UsingImbueItem"))
{
nLevel = max(GetLocalInt(oPC, "InvokerLevel"), nLevel);
nLevel = PRCMax(GetLocalInt(oPC, "InvokerLevel"), nLevel);
}
if(GetLocalInt(oPC, "ArtificerCrafting"))
{
nLevel = max(GetLevelByClass(CLASS_TYPE_ARTIFICER, oPC), nLevel);
nLevel = PRCMax(GetLevelByClass(CLASS_TYPE_ARTIFICER, oPC), nLevel);
}
return nLevel;
}

View File

@ -1145,9 +1145,57 @@ object IPGetTargetedOrEquippedMeleeWeapon()
}
object IPGetTargetedOrEquippedArmor(int bAllowShields = FALSE)
{
object oTarget = PRCGetSpellTargetObject();
// If the target is a valid item
if (GetIsObjectValid(oTarget) && GetObjectType(oTarget) == OBJECT_TYPE_ITEM)
{
// Check if the item is armor
if (GetBaseItemType(oTarget) == BASE_ITEM_ARMOR)
{
return oTarget;
}
// Check if the item is a shield and shields are allowed
if (bAllowShields && (GetBaseItemType(oTarget) == BASE_ITEM_LARGESHIELD ||
GetBaseItemType(oTarget) == BASE_ITEM_SMALLSHIELD ||
GetBaseItemType(oTarget) == BASE_ITEM_TOWERSHIELD))
{
return oTarget;
}
return OBJECT_INVALID;
}
// If the target is a creature
if (GetIsObjectValid(oTarget) && GetObjectType(oTarget) == OBJECT_TYPE_CREATURE)
{
// Check the equipped armor
object oArmor = GetItemInSlot(INVENTORY_SLOT_CHEST, oTarget);
if (GetIsObjectValid(oArmor) && GetBaseItemType(oArmor) == BASE_ITEM_ARMOR)
{
return oArmor;
}
// Check the equipped shield if shields are allowed
if (bAllowShields)
{
oArmor = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oTarget);
if (GetIsObjectValid(oArmor) && (GetBaseItemType(oArmor) == BASE_ITEM_LARGESHIELD ||
GetBaseItemType(oArmor) == BASE_ITEM_SMALLSHIELD ||
GetBaseItemType(oArmor) == BASE_ITEM_TOWERSHIELD))
{
return oArmor;
}
}
}
// Return invalid object if no valid armor or shield is found
return OBJECT_INVALID;
}
/* object IPGetTargetedOrEquippedArmor(int bAllowShields = FALSE)
{
object oTarget = PRCGetSpellTargetObject();
if(GetIsObjectValid(oTarget) && GetObjectType(oTarget) == OBJECT_TYPE_ITEM)
@ -1193,7 +1241,7 @@ object IPGetTargetedOrEquippedArmor(int bAllowShields = FALSE)
return OBJECT_INVALID;
}
*/
// ----------------------------------------------------------------------------
// Returns FALSE it the item has no sequencer property
// Returns number of spells that can be stored in any other case
@ -1578,7 +1626,7 @@ int IPGetWeaponEnhancementBonus(object oWeapon, int nEnhancementBonusType = ITEM
if(GetItemPropertyDurationType(ip) == DURATION_TYPE_PERMANENT || !bIgnoreTemporary)
{
nTemp = GetItemPropertyCostTableValue(ip);
nFound = max(nFound, nTemp);
nFound = PRCMax(nFound, nTemp);
}
}
ip = GetNextItemProperty(oWeapon);

View File

@ -592,7 +592,7 @@ struct manifestation EvaluateAugmentation(struct manifestation manif, struct pow
// Determine how many times it can be used and how much it costs
nTimesAugd = nTimesCanAug == PRC_UNLIMITED_AUGMENTATION ?
nToAutodistribute / pap.nAugCost_1 :
min(nToAutodistribute / pap.nAugCost_1, nTimesCanAug);
PRCMin(nToAutodistribute / pap.nAugCost_1, nTimesCanAug);
nToAutodistribute -= nTimesAugd * pap.nAugCost_1;
manif.nTimesAugOptUsed_1 += nTimesAugd;
@ -611,7 +611,7 @@ struct manifestation EvaluateAugmentation(struct manifestation manif, struct pow
// Determine how many times it can be used and how much it costs
nTimesAugd = nTimesCanAug == PRC_UNLIMITED_AUGMENTATION ?
nToAutodistribute / pap.nAugCost_2 :
min(nToAutodistribute / pap.nAugCost_2, nTimesCanAug);
PRCMin(nToAutodistribute / pap.nAugCost_2, nTimesCanAug);
nToAutodistribute -= nTimesAugd * pap.nAugCost_2;
manif.nTimesAugOptUsed_2 += nTimesAugd;
@ -630,7 +630,7 @@ struct manifestation EvaluateAugmentation(struct manifestation manif, struct pow
// Determine how many times it can be used and how much it costs
nTimesAugd = nTimesCanAug == PRC_UNLIMITED_AUGMENTATION ?
nToAutodistribute / pap.nAugCost_3 :
min(nToAutodistribute / pap.nAugCost_3, nTimesCanAug);
PRCMin(nToAutodistribute / pap.nAugCost_3, nTimesCanAug);
nToAutodistribute -= nTimesAugd * pap.nAugCost_3;
manif.nTimesAugOptUsed_3 += nTimesAugd;
@ -649,7 +649,7 @@ struct manifestation EvaluateAugmentation(struct manifestation manif, struct pow
// Determine how many times it can be used and how much it costs
nTimesAugd = nTimesCanAug == PRC_UNLIMITED_AUGMENTATION ?
nToAutodistribute / pap.nAugCost_4 :
min(nToAutodistribute / pap.nAugCost_4, nTimesCanAug);
PRCMin(nToAutodistribute / pap.nAugCost_4, nTimesCanAug);
nToAutodistribute -= nTimesAugd * pap.nAugCost_4;
manif.nTimesAugOptUsed_4 += nTimesAugd;
@ -668,7 +668,7 @@ struct manifestation EvaluateAugmentation(struct manifestation manif, struct pow
// Determine how many times it can be used and how much it costs
nTimesAugd = nTimesCanAug == PRC_UNLIMITED_AUGMENTATION ?
nToAutodistribute / pap.nAugCost_5 :
min(nToAutodistribute / pap.nAugCost_5, nTimesCanAug);
PRCMin(nToAutodistribute / pap.nAugCost_5, nTimesCanAug);
nToAutodistribute -= nTimesAugd * pap.nAugCost_5;
manif.nTimesAugOptUsed_5 += nTimesAugd;
@ -687,7 +687,7 @@ struct manifestation EvaluateAugmentation(struct manifestation manif, struct pow
}
// Add in cost reduction
nAugPPCost = max(0, nAugPPCost - nAugPPCostReductions);
nAugPPCost = PRCMax(0, nAugPPCost - nAugPPCostReductions);
// Store the PP cost increase
manif.nPPCost += nAugPPCost;

View File

@ -791,6 +791,64 @@ int GetIsPsionicCharacter(object oCreature)
);
}
int IsHiddenTalent(object oPC = OBJECT_SELF)
{
if (GetHasFeat(FEAT_HIDDEN_TALENT_BIOFEEDBACK, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_BITE_WOLF, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_BOLT, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_BURST, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_CALLTOMIND, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_CALL_WEAPONRY, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_CHAMELEON, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_CLAWS_BEAST, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_COMPRESSION, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_CONCEALTHOUGHT, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_CREATESOUND, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_CRYSTALSHARD, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_DAZE, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_DECELERATION, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_DEFPRECOG, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_DEMORALIZE, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_DISABLE, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_DISSIPATINGTOUCH, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_DISTRACT, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_ELFSIGHT, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_EMPATHY, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_EMPTYMIND, oPC) ||
//GetHasFeat(FEAT_HIDDEN_TALENT_ENERGYRAY, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_ENTANGLE, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_EXPANSION, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_FARHAND, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_FORCESCREEN, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_GREASE, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_HAMMER, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_INERTIALARMOUR, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_MATTERAGITATION, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_METAPHYSICAL_CLAW, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_METAPHYSICAL_WEAPON, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_MINDTHRUST, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_MYLIGHT, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_OFFPRECOG, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_OFFPRESC, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_PREVENOM, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_PREVENOM_WEAPON, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_SKATE, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_STOMP, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_SYNESTHETE, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_TELEMPATHICPRO, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_THICKSKIN, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_VIGOR, oPC) ||
GetHasFeat(FEAT_HIDDEN_TALENT_GRIP_IRON, oPC))
{
return TRUE;
}
else
{
return FALSE;
}
}
void LocalCleanExtraFists(object oCreature)
{
int iIsCWeap, iIsEquip;
@ -1092,7 +1150,7 @@ int GetHighestManifesterLevel(object oCreature)
/* int GetHighestManifesterLevel(object oCreature)
{
return max(max(GetClassByPosition(1, oCreature) != CLASS_TYPE_INVALID ? GetManifesterLevel(oCreature, GetClassByPosition(1, oCreature)) : 0,
return PRCMax(PRCMax(GetClassByPosition(1, oCreature) != CLASS_TYPE_INVALID ? GetManifesterLevel(oCreature, GetClassByPosition(1, oCreature)) : 0,
GetClassByPosition(2, oCreature) != CLASS_TYPE_INVALID ? GetManifesterLevel(oCreature, GetClassByPosition(2, oCreature)) : 0
),
GetClassByPosition(3, oCreature) != CLASS_TYPE_INVALID ? GetManifesterLevel(oCreature, GetClassByPosition(3, oCreature)) : 0

View File

@ -127,7 +127,7 @@ int _GetMetaPsiPPCost(int nCost, int nIMPsiRed, int bUseSum)
nCost :
bUseSum ? nCost :
// When calculating Improved Metapsionics separately, it cannot make the cost of a single metapsionic use go below 1
max(nCost - nIMPsiRed, 1);
PRCMax(nCost - nIMPsiRed, 1);
}
/** Internal function.
@ -477,7 +477,7 @@ void EvaluateChainPower(struct manifestation manif, object oPrimaryTarget, int b
if(manif.bChain)
{
// It is, determine amount of secondary targets and range to look for the over
int nMaxTargets = min(manif.nManifesterLevel, 20); // Chain Power maxes out at 20 secondary targets
int nMaxTargets = PRCMin(manif.nManifesterLevel, 20); // Chain Power maxes out at 20 secondary targets
float fRange = FeetToMeters(30.0f);
location lTarget = GetLocation(oPrimaryTarget);
object oSecondaryTarget;

View File

@ -134,20 +134,23 @@ void LoseAllPowerPoints(object oChar, int bInform = TRUE);
* @param oChar Character whose feats to evaluate
* @return The amount of Power Points gained from Feats
*/
int _GetFeatBonusPP(object oChar){
int _GetFeatBonusPP(object oChar)
{
int nBonusPP = 0;
// Normal feats
if(GetHasFeat(FEAT_WILD_TALENT, oChar))
//:: Wild Talent & Hidden Talents
if(GetHasFeat(FEAT_WILD_TALENT, oChar) || IsHiddenTalent())
nBonusPP += 2;
int i, nPsiTalents;
//:: Psionic Feats
int i;
int nPsiTalents;
for(i = FEAT_PSIONIC_TALENT_1; i <= FEAT_PSIONIC_TALENT_10; i++)
if(GetHasFeat(i, oChar)) nPsiTalents++;
nBonusPP += nPsiTalents * (2 + nPsiTalents + 1) / 2;
// Epic feats
//:: Epic feats
int nImpManifestations;
for(i = FEAT_IMPROVED_MANIFESTATION_1; i <= FEAT_IMPROVED_MANIFESTATION_10; i++)
if(GetHasFeat(i, oChar)) nImpManifestations++;

View File

@ -254,7 +254,7 @@ int _PsionicHole(object oTarget)
if(GetHasFeat(FEAT_PSIONIC_HOLE, oTarget))
// Psionic Hole will never decrease power cost, even if the target is lacking in wisdom bonus
nCost = max(GetAbilityModifier(ABILITY_WISDOM, oTarget), 0);
nCost = PRCMax(GetAbilityModifier(ABILITY_WISDOM, oTarget), 0);
return nCost;
}

View File

@ -79,7 +79,7 @@ PRCGetPowerResistance(object oTarget, object oCaster)
)
{
// Only use the PR given by the power if it's higher than the previous
iPowerRes = max(iPowerRes, GetLocalInt(oTarget, "PRC_Power_ThoughtShield_PR"));
iPowerRes = PRCMax(iPowerRes, GetLocalInt(oTarget, "PRC_Power_ThoughtShield_PR"));
}
// Tower of Iron Will, 19 + augment vs Mind-Affecting
if(GetLocalInt(oTarget, "PRC_Power_TowerOfIronWill_PR") &&
@ -87,7 +87,7 @@ PRCGetPowerResistance(object oTarget, object oCaster)
)
{
// Only use the PR given by the power if it's higher than the previous
iPowerRes = max(iPowerRes, GetLocalInt(oTarget, "PRC_Power_TowerOfIronWill_PR"));
iPowerRes = PRCMax(iPowerRes, GetLocalInt(oTarget, "PRC_Power_TowerOfIronWill_PR"));
}
// Foe Hunter SR stacks with normal SR

View File

@ -323,7 +323,7 @@ int GetHighestShadowcasterLevel(object oCreature)
/* int GetHighestShadowcasterLevel(object oCreature)
{
return max(max(GetClassByPosition(1, oCreature) != CLASS_TYPE_INVALID ? GetShadowcasterLevel(oCreature, GetClassByPosition(1, oCreature)) : 0,
return PRCMax(PRCMax(GetClassByPosition(1, oCreature) != CLASS_TYPE_INVALID ? GetShadowcasterLevel(oCreature, GetClassByPosition(1, oCreature)) : 0,
GetClassByPosition(2, oCreature) != CLASS_TYPE_INVALID ? GetShadowcasterLevel(oCreature, GetClassByPosition(2, oCreature)) : 0
),
GetClassByPosition(3, oCreature) != CLASS_TYPE_INVALID ? GetShadowcasterLevel(oCreature, GetClassByPosition(3, oCreature)) : 0

View File

@ -140,8 +140,8 @@ void MazeEscapeHB(object oCreature, int nCountLeft)
int bResult = (nD20 + nIntMod) >= MAZE_ESCAPE_DC;
// Inform the creature of the result
SendMessageToPC(oCreature, GetRGB(7,7,15) + GetName(oCreature) + "</c>" + // "Int check" "success" "failure"
GetRGB(1,1,15) + " : " + GetStringByStrRef(16825701) + " : *" + (bResult ? GetStringByStrRef(5352) : GetStringByStrRef(5353)) + "* : (" + IntToString(nD20) + " + " + IntToString(nIntMod) + " = " + IntToString(nD20 + nIntMod) + " vs. DC: " + IntToString(MAZE_ESCAPE_DC) + ")</c>");
SendMessageToPC(oCreature, PRCGetRGB(7,7,15) + GetName(oCreature) + "</c>" + // "Int check" "success" "failure"
PRCGetRGB(1,1,15) + " : " + GetStringByStrRef(16825701) + " : *" + (bResult ? GetStringByStrRef(5352) : GetStringByStrRef(5353)) + "* : (" + IntToString(nD20) + " + " + IntToString(nIntMod) + " = " + IntToString(nD20 + nIntMod) + " vs. DC: " + IntToString(MAZE_ESCAPE_DC) + ")</c>");
// Return from the maze if the check was successfull
if(bResult)

View File

@ -518,7 +518,7 @@ int GetInitiatorLevel(object oInitiator = OBJECT_SELF, int nSpecificClass = CLAS
// A character with no initiator levels has an init level of 1/2 HD (min 1)
if(!nLevel)
nLevel = max(1, nTotalHD/2);
nLevel = PRCMax(1, nTotalHD/2);
// This spam is technically no longer necessary once the Initiator level getting mechanism has been confirmed to work
// if(DEBUG) FloatingTextStringOnCreature("Initiator Level: " + IntToString(nLevel), oInitiator, FALSE);
@ -557,7 +557,7 @@ int GetHighestInitiatorLevel(object oCreature)
/* int GetHighestInitiatorLevel(object oCreature)
{
return max(max(GetClassByPosition(1, oCreature) != CLASS_TYPE_INVALID ? GetInitiatorLevel(oCreature, GetClassByPosition(1, oCreature)) : 0,
return PRCMax(PRCMax(GetClassByPosition(1, oCreature) != CLASS_TYPE_INVALID ? GetInitiatorLevel(oCreature, GetClassByPosition(1, oCreature)) : 0,
GetClassByPosition(2, oCreature) != CLASS_TYPE_INVALID ? GetInitiatorLevel(oCreature, GetClassByPosition(2, oCreature)) : 0
),
GetClassByPosition(3, oCreature) != CLASS_TYPE_INVALID ? GetInitiatorLevel(oCreature, GetClassByPosition(3, oCreature)) : 0

View File

@ -368,7 +368,7 @@ int GetHighestTrueSpeakerLevel(object oCreature)
/* int GetHighestTrueSpeakerLevel(object oCreature)
{
return max(max(GetClassByPosition(1, oCreature) != CLASS_TYPE_INVALID ? GetTruespeakerLevel(oCreature, GetClassByPosition(1, oCreature)) : 0,
return PRCMax(PRCMax(GetClassByPosition(1, oCreature) != CLASS_TYPE_INVALID ? GetTruespeakerLevel(oCreature, GetClassByPosition(1, oCreature)) : 0,
GetClassByPosition(2, oCreature) != CLASS_TYPE_INVALID ? GetTruespeakerLevel(oCreature, GetClassByPosition(2, oCreature)) : 0
),
GetClassByPosition(3, oCreature) != CLASS_TYPE_INVALID ? GetTruespeakerLevel(oCreature, GetClassByPosition(3, oCreature)) : 0

View File

@ -2307,7 +2307,7 @@ int InnateCounterspell(object oCaster, int nSpellId, int nSpellLevel)
// Set a marker on the Noctumancer at the right level
if (GetLevelByClass(CLASS_TYPE_NOCTUMANCER) >= 7)
{
int nStore = min(1, nSpellLevel/2);
int nStore = PRCMin(1, nSpellLevel/2);
SetLocalInt(oShadow, "InnateCounterSuccess", nStore);
FloatingTextStringOnCreature("You have one free mystery of "+IntToString(nStore)+" level", oShadow, FALSE);
}

View File

@ -573,6 +573,7 @@ scripts\ft_spontsummon.nss \
scripts\ft_tears_ever.nss \
scripts\ft_vowofpoverty.nss \
scripts\ft_vowpoverty_ab.nss \
scripts\ft_vowpoverty_ft.nss \
scripts\gen_sptouchice.nss \
scripts\gensp_holyrad.nss \
scripts\gensp_holyrada.nss \
@ -2664,7 +2665,7 @@ spells\sp_right_smt.nss \
spells\sp_rightmt.nss \
spells\sp_ring_blds.nss \
spells\sp_ring_bldsa.nss \
spells\sp_ring_bldsc.nss \
spells\sp_ring_bldsC.nss \
spells\sp_rotcurse_urf.nss \
spells\sp_rouse.nss \
spells\sp_sannish.nss \
@ -3186,6 +3187,7 @@ objs\ft_spontsummon.ncs \
objs\ft_tears_ever.ncs \
objs\ft_vowofpoverty.ncs \
objs\ft_vowpoverty_ab.ncs \
objs\ft_vowpoverty_ft.ncs \
objs\gen_sptouchice.ncs \
objs\gensp_holyrad.ncs \
objs\gensp_holyrada.ncs \
@ -5276,7 +5278,7 @@ spellobjs\sp_right_smt.ncs \
spellobjs\sp_rightmt.ncs \
spellobjs\sp_ring_blds.ncs \
spellobjs\sp_ring_bldsa.ncs \
spellobjs\sp_ring_bldsc.ncs \
spellobjs\sp_ring_bldsC.ncs \
spellobjs\sp_rotcurse_urf.ncs \
spellobjs\sp_rouse.ncs \
spellobjs\sp_sannish.ncs \
@ -6824,7 +6826,7 @@ epicspellobjs\wander_unseen.ncs
2das\iprp_damagetype.2da \
2das\iprp_decvalue1.2da \
2das\iprp_decvalue2.2da \
2das\iprp_feats.2da \
2das\iprp_feats.2DA \
2das\iprp_incvalue1.2da \
2das\iprp_incvalue2.2da \
2das\iprp_matcost.2da \
@ -6886,6 +6888,7 @@ epicspellobjs\wander_unseen.ncs
2das\prc_polymorph.2da \
2das\prc_rune_craft.2da \
2das\prc_spells.2da \
2das\prc_vop_feats.2da \
2das\prc_weap_items.2da \
2das\ruleset.2da \
2das\shft_packages.2da \
@ -7695,6 +7698,7 @@ gfx\ife_cfrenzy.tga \
gfx\ife_championsval.tga \
gfx\ife_chilltouch.tga \
gfx\ife_chmonray.tga \
gfx\ife_chosen_evil.tga \
gfx\ife_chperray.tga \
gfx\ife_climb.tga \
gfx\ife_closedmind.tga \
@ -24457,6 +24461,7 @@ psionics\psi_g_psi_weapon.nss \
psionics\psi_g_stroftwo.nss \
psionics\psi_gen_enter.nss \
psionics\psi_gen_exit.nss \
psionics\psi_hiddentalent.nss \
psionics\psi_imnd_armmnd.nss \
psionics\psi_imnd_lndrslv.nss \
psionics\psi_imnd_mindbod.nss \
@ -25066,6 +25071,7 @@ psionicsobjs\psi_g_psi_weapon.ncs \
psionicsobjs\psi_g_stroftwo.ncs \
psionicsobjs\psi_gen_enter.ncs \
psionicsobjs\psi_gen_exit.ncs \
psionicsobjs\psi_hiddentalent.ncs \
psionicsobjs\psi_imnd_armmnd.ncs \
psionicsobjs\psi_imnd_lndrslv.ncs \
psionicsobjs\psi_imnd_mindbod.ncs \
@ -28514,7 +28520,7 @@ objs\ft_pinpointaccu.ncs: scripts\ft_pinpointaccu.nss include\prc_inc_combat.nss
objs\ft_poweratk.ncs: scripts\ft_poweratk.nss include\prc_inc_combat.nss include\inc_addragebonus.nss include\prc_inc_unarmed.nss include\prc_inc_onhit.nss include\prc_misc_const.nss include\prc_inc_fork.nss include\prc_inc_natweap.nss include\inc_utility.nss include\prc_inc_spells.nss include\prc_inc_nwscript.nss include\prc_class_const.nss include\inc_target_list.nss include\inc_logmessage.nss include\inc_threads.nss include\prc_inc_actions.nss include\inc_time.nss include\inc_draw_prc.nss include\inc_eventhook.nss include\inc_metalocation.nss include\inc_array_sort.nss include\inc_uniqueid.nss include\inc_set.nss include\prc_spell_const.nss include\inv_invoc_const.nss include\psi_power_const.nss include\prc_inc_racial.nss include\prc_inc_array.nss include\moi_meld_const.nss include\bnd_vestig_const.nss include\inc_2dacache.nss include\prc_feat_const.nss include\prc_racial_const.nss include\inc_debug.nss include\prc_inc_switch.nss include\inc_persist_loca.nss include\prc_inc_skin.nss include\inc_persistsql.nss include\inc_draw.nss include\inc_draw_tools.nss include\inc_pers_array.nss include\inc_area.nss include\inc_heap.nss include\inc_newspellbook.nss include\inc_vfx_const.nss include\spinc_necro_cyst.nss include\true_utter_const.nss include\prc_inc_sneak.nss include\prcsp_engine.nss include\inc_item_props.nss include\prc_inc_core.nss include\inc_sp_gain_mem.nss include\lookup_2da_spell.nss include\inc_lookups.nss include\prc_inc_damage.nss include\prc_inc_sb_const.nss include\prc_effect_inc.nss include\prc_inc_castlvl.nss include\prc_inc_newip.nss include\prc_inc_descrptr.nss include\prc_x2_itemprop.nss include\prc_ipfeat_const.nss include\inc_prc_npc.nss include\tob_move_const.nss include\prcsp_archmaginc.nss include\prc_add_spl_pen.nss include\prcsp_reputation.nss include\inc_abil_damage.nss
objs\ft_sanctmartial.ncs: scripts\ft_sanctmartial.nss include\prc_inc_clsfunc.nss include\psi_inc_soulkn.nss include\prc_inc_spells.nss include\inc_newspellbook.nss include\inc_vfx_const.nss include\spinc_necro_cyst.nss include\true_utter_const.nss include\prc_inc_sneak.nss include\prcsp_engine.nss include\inc_item_props.nss include\prc_inc_core.nss include\inc_sp_gain_mem.nss include\lookup_2da_spell.nss include\inc_lookups.nss include\prc_inc_damage.nss include\prc_inc_sb_const.nss include\inc_2dacache.nss include\inc_debug.nss include\prc_inc_switch.nss include\prc_inc_array.nss include\prc_class_const.nss include\prc_effect_inc.nss include\prc_inc_castlvl.nss include\prc_inc_newip.nss include\prc_inc_descrptr.nss include\prc_x2_itemprop.nss include\prc_ipfeat_const.nss include\inc_utility.nss include\prc_inc_nwscript.nss include\inc_target_list.nss include\inc_logmessage.nss include\inc_threads.nss include\prc_inc_actions.nss include\inc_time.nss include\inc_draw_prc.nss include\inc_eventhook.nss include\inc_metalocation.nss include\inc_array_sort.nss include\inc_uniqueid.nss include\inc_set.nss include\prc_misc_const.nss include\prc_spell_const.nss include\inv_invoc_const.nss include\psi_power_const.nss include\prc_inc_racial.nss include\moi_meld_const.nss include\bnd_vestig_const.nss include\prc_feat_const.nss include\prc_racial_const.nss include\inc_persist_loca.nss include\prc_inc_skin.nss include\inc_persistsql.nss include\inc_draw.nss include\inc_draw_tools.nss include\inc_pers_array.nss include\inc_area.nss include\inc_heap.nss include\inc_prc_npc.nss include\tob_move_const.nss include\prcsp_archmaginc.nss include\prc_add_spl_pen.nss include\prcsp_reputation.nss include\prc_alterations.nss include\inc_abil_damage.nss
objs\ft_sanctmartial.ncs: scripts\ft_sanctmartial.nss include\prc_inc_clsfunc.nss include\psi_inc_soulkn.nss include\prc_inc_combat.nss include\prc_inc_spells.nss include\inc_newspellbook.nss include\inc_vfx_const.nss include\spinc_necro_cyst.nss include\true_utter_const.nss include\prc_inc_sneak.nss include\prcsp_engine.nss include\inc_item_props.nss include\prc_inc_core.nss include\inc_sp_gain_mem.nss include\lookup_2da_spell.nss include\inc_lookups.nss include\prc_inc_damage.nss include\prc_inc_sb_const.nss include\inc_2dacache.nss include\inc_debug.nss include\prc_inc_switch.nss include\prc_inc_array.nss include\prc_class_const.nss include\prc_effect_inc.nss include\prc_inc_castlvl.nss include\prc_inc_newip.nss include\prc_inc_descrptr.nss include\prc_x2_itemprop.nss include\prc_ipfeat_const.nss include\inc_utility.nss include\prc_inc_nwscript.nss include\inc_target_list.nss include\inc_logmessage.nss include\inc_threads.nss include\prc_inc_actions.nss include\inc_time.nss include\inc_draw_prc.nss include\inc_eventhook.nss include\inc_metalocation.nss include\inc_array_sort.nss include\inc_uniqueid.nss include\inc_set.nss include\prc_misc_const.nss include\prc_spell_const.nss include\inv_invoc_const.nss include\psi_power_const.nss include\prc_inc_racial.nss include\moi_meld_const.nss include\bnd_vestig_const.nss include\prc_feat_const.nss include\prc_racial_const.nss include\inc_persist_loca.nss include\prc_inc_skin.nss include\inc_persistsql.nss include\inc_draw.nss include\inc_draw_tools.nss include\inc_pers_array.nss include\inc_area.nss include\inc_heap.nss include\inc_prc_npc.nss include\tob_move_const.nss include\prcsp_archmaginc.nss include\prc_add_spl_pen.nss include\prcsp_reputation.nss include\prc_alterations.nss include\inc_abil_damage.nss include\prc_inc_unarmed.nss include\prc_inc_onhit.nss include\prc_inc_fork.nss include\prc_inc_natweap.nss
objs\ft_servheaven.ncs: scripts\ft_servheaven.nss include\prc_inc_skin.nss include\prc_feat_const.nss include\inc_debug.nss include\prc_inc_switch.nss
@ -28530,6 +28536,8 @@ objs\ft_vowofpoverty.ncs: scripts\ft_vowofpoverty.nss include\prc_inc_combat.nss
objs\ft_vowpoverty_ab.ncs: scripts\ft_vowpoverty_ab.nss include\inc_dynconv.nss include\prc_inc_function.nss include\inc_persist_loca.nss include\prc_inc_array.nss include\inc_debug.nss include\prc_inc_switch.nss include\prc_inc_util.nss include\prc_inc_spells.nss include\prc_inc_stunfist.nss include\inc_nwnx_funcs.nss include\prc_template_con.nss include\prc_alterations.nss include\inc_abil_damage.nss include\prc_inc_damage.nss include\prc_effect_inc.nss include\inc_item_props.nss include\prc_inc_castlvl.nss include\prc_inc_newip.nss include\prc_inc_descrptr.nss include\prc_x2_itemprop.nss include\prc_ipfeat_const.nss include\inc_utility.nss include\prc_inc_nwscript.nss include\prc_class_const.nss include\inc_target_list.nss include\inc_logmessage.nss include\inc_threads.nss include\prc_inc_actions.nss include\inc_time.nss include\inc_draw_prc.nss include\inc_eventhook.nss include\inc_metalocation.nss include\inc_array_sort.nss include\inc_uniqueid.nss include\inc_set.nss include\prc_misc_const.nss include\prc_spell_const.nss include\inv_invoc_const.nss include\psi_power_const.nss include\prc_inc_racial.nss include\moi_meld_const.nss include\bnd_vestig_const.nss include\inc_2dacache.nss include\prc_feat_const.nss include\prc_racial_const.nss include\prc_inc_skin.nss include\inc_persistsql.nss include\inc_draw.nss include\inc_draw_tools.nss include\inc_pers_array.nss include\inc_area.nss include\inc_heap.nss include\inc_prc_npc.nss include\inc_newspellbook.nss include\inc_vfx_const.nss include\spinc_necro_cyst.nss include\true_utter_const.nss include\prc_inc_sneak.nss include\prcsp_engine.nss include\prc_inc_core.nss include\inc_sp_gain_mem.nss include\lookup_2da_spell.nss include\inc_lookups.nss include\prc_inc_sb_const.nss include\tob_move_const.nss include\prcsp_archmaginc.nss include\prc_add_spl_pen.nss include\prcsp_reputation.nss
objs\ft_vowpoverty_ft.ncs: scripts\ft_vowpoverty_ft.nss include\inc_dynconv.nss include\prc_inc_function.nss include\inc_persist_loca.nss include\prc_inc_array.nss include\inc_debug.nss include\prc_inc_switch.nss include\prc_inc_util.nss include\prc_inc_spells.nss include\prc_inc_stunfist.nss include\inc_nwnx_funcs.nss include\prc_template_con.nss include\prc_alterations.nss include\inc_abil_damage.nss include\prc_inc_damage.nss include\prc_effect_inc.nss include\inc_item_props.nss include\prc_inc_castlvl.nss include\prc_inc_newip.nss include\prc_inc_descrptr.nss include\prc_x2_itemprop.nss include\prc_ipfeat_const.nss include\inc_utility.nss include\prc_inc_nwscript.nss include\prc_class_const.nss include\inc_target_list.nss include\inc_logmessage.nss include\inc_threads.nss include\prc_inc_actions.nss include\inc_time.nss include\inc_draw_prc.nss include\inc_eventhook.nss include\inc_metalocation.nss include\inc_array_sort.nss include\inc_uniqueid.nss include\inc_set.nss include\prc_misc_const.nss include\prc_spell_const.nss include\inv_invoc_const.nss include\psi_power_const.nss include\prc_inc_racial.nss include\moi_meld_const.nss include\bnd_vestig_const.nss include\inc_2dacache.nss include\prc_feat_const.nss include\prc_racial_const.nss include\prc_inc_skin.nss include\inc_persistsql.nss include\inc_draw.nss include\inc_draw_tools.nss include\inc_pers_array.nss include\inc_area.nss include\inc_heap.nss include\inc_prc_npc.nss include\inc_newspellbook.nss include\inc_vfx_const.nss include\spinc_necro_cyst.nss include\true_utter_const.nss include\prc_inc_sneak.nss include\prcsp_engine.nss include\prc_inc_core.nss include\inc_sp_gain_mem.nss include\lookup_2da_spell.nss include\inc_lookups.nss include\prc_inc_sb_const.nss include\tob_move_const.nss include\prcsp_archmaginc.nss include\prc_add_spl_pen.nss include\prcsp_reputation.nss
objs\gen_sptouchice.ncs: scripts\gen_sptouchice.nss include\prc_alterations.nss include\prc_inc_spells.nss include\inc_poison.nss include\inc_abil_damage.nss include\prc_inc_damage.nss include\prc_effect_inc.nss include\inc_item_props.nss include\prc_inc_castlvl.nss include\prc_inc_newip.nss include\prc_inc_descrptr.nss include\prc_x2_itemprop.nss include\prc_ipfeat_const.nss include\inc_utility.nss include\prc_inc_nwscript.nss include\prc_class_const.nss include\inc_target_list.nss include\inc_logmessage.nss include\inc_threads.nss include\prc_inc_actions.nss include\inc_time.nss include\inc_draw_prc.nss include\inc_eventhook.nss include\inc_metalocation.nss include\inc_array_sort.nss include\inc_uniqueid.nss include\inc_set.nss include\prc_misc_const.nss include\prc_spell_const.nss include\inv_invoc_const.nss include\psi_power_const.nss include\prc_inc_racial.nss include\prc_inc_array.nss include\moi_meld_const.nss include\bnd_vestig_const.nss include\inc_2dacache.nss include\prc_feat_const.nss include\prc_racial_const.nss include\inc_debug.nss include\prc_inc_switch.nss include\inc_persist_loca.nss include\prc_inc_skin.nss include\inc_persistsql.nss include\inc_draw.nss include\inc_draw_tools.nss include\inc_pers_array.nss include\inc_area.nss include\inc_heap.nss include\inc_prc_npc.nss include\inc_newspellbook.nss include\inc_vfx_const.nss include\spinc_necro_cyst.nss include\true_utter_const.nss include\prc_inc_sneak.nss include\prcsp_engine.nss include\prc_inc_core.nss include\inc_sp_gain_mem.nss include\lookup_2da_spell.nss include\inc_lookups.nss include\prc_inc_sb_const.nss include\tob_move_const.nss include\prcsp_archmaginc.nss include\prc_add_spl_pen.nss include\prcsp_reputation.nss
objs\gensp_holyrad.ncs: scripts\gensp_holyrad.nss include\prc_class_const.nss include\x2_inc_spellhook.nss include\prc_alterations.nss include\prc_spell_const.nss include\prc_x2_craft.nss include\prc_inc_spells.nss include\prc_inc_combat.nss include\prc_inc_itmrstr.nss include\prc_inc_burn.nss include\pnp_shft_main.nss include\inc_dynconv.nss include\inc_npc.nss include\prc_inc_newip.nss include\prc_add_spell_dc.nss include\prc_x2_itemprop.nss include\prc_ipfeat_const.nss include\inc_utility.nss include\prc_inc_nwscript.nss include\inc_target_list.nss include\inc_logmessage.nss include\inc_threads.nss include\prc_inc_actions.nss include\inc_time.nss include\inc_draw_prc.nss include\inc_eventhook.nss include\inc_metalocation.nss include\inc_array_sort.nss include\inc_uniqueid.nss include\inc_set.nss include\prc_misc_const.nss include\inv_invoc_const.nss include\psi_power_const.nss include\prc_inc_racial.nss include\prc_inc_array.nss include\moi_meld_const.nss include\bnd_vestig_const.nss include\inc_2dacache.nss include\prc_feat_const.nss include\prc_racial_const.nss include\inc_debug.nss include\prc_inc_switch.nss include\inc_persist_loca.nss include\prc_inc_skin.nss include\inc_persistsql.nss include\inc_draw.nss include\inc_draw_tools.nss include\inc_pers_array.nss include\inc_area.nss include\inc_heap.nss include\inc_newspellbook.nss include\inc_vfx_const.nss include\spinc_necro_cyst.nss include\true_utter_const.nss include\prc_inc_sneak.nss include\prcsp_engine.nss include\inc_item_props.nss include\prc_inc_core.nss include\inc_sp_gain_mem.nss include\lookup_2da_spell.nss include\inc_lookups.nss include\prc_inc_damage.nss include\prc_inc_sb_const.nss include\prc_effect_inc.nss include\prc_inc_castlvl.nss include\prc_inc_descrptr.nss include\inc_prc_npc.nss include\tob_move_const.nss include\prcsp_archmaginc.nss include\prc_add_spl_pen.nss include\prcsp_reputation.nss include\prc_inc_unarmed.nss include\prc_inc_onhit.nss include\prc_inc_fork.nss include\prc_inc_natweap.nss include\inc_abil_damage.nss include\prc_getbest_inc.nss include\prc_inc_function.nss include\prc_inc_util.nss include\prc_inc_stunfist.nss include\inc_nwnx_funcs.nss include\prc_template_con.nss
@ -29540,7 +29548,7 @@ objs\prc_fb_auto_fre.ncs: scripts\prc_fb_auto_fre.nss include\prc_spell_const.ns
objs\prc_fb_deathless.ncs: scripts\prc_fb_deathless.nss
objs\prc_feats.ncs: scripts\prc_feats.nss include\moi_inc_moifunc.nss include\prc_inc_clsfunc.nss include\inc_persist_loca.nss include\prc_inc_natweap.nss include\prc_inc_function.nss include\inc_utility.nss include\prc_inc_spells.nss include\prc_inc_nwscript.nss include\prc_class_const.nss include\inc_target_list.nss include\inc_logmessage.nss include\inc_threads.nss include\prc_inc_actions.nss include\inc_time.nss include\inc_draw_prc.nss include\inc_eventhook.nss include\inc_metalocation.nss include\inc_array_sort.nss include\inc_uniqueid.nss include\inc_set.nss include\prc_misc_const.nss include\prc_spell_const.nss include\inv_invoc_const.nss include\psi_power_const.nss include\prc_inc_racial.nss include\prc_inc_array.nss include\moi_meld_const.nss include\bnd_vestig_const.nss include\inc_2dacache.nss include\prc_feat_const.nss include\prc_racial_const.nss include\inc_debug.nss include\prc_inc_switch.nss include\prc_inc_skin.nss include\inc_persistsql.nss include\inc_draw.nss include\inc_draw_tools.nss include\inc_pers_array.nss include\inc_area.nss include\inc_heap.nss include\inc_newspellbook.nss include\inc_vfx_const.nss include\spinc_necro_cyst.nss include\true_utter_const.nss include\prc_inc_sneak.nss include\prcsp_engine.nss include\inc_item_props.nss include\prc_inc_core.nss include\inc_sp_gain_mem.nss include\lookup_2da_spell.nss include\inc_lookups.nss include\prc_inc_damage.nss include\prc_inc_sb_const.nss include\prc_effect_inc.nss include\prc_inc_castlvl.nss include\prc_inc_newip.nss include\prc_inc_descrptr.nss include\prc_x2_itemprop.nss include\prc_ipfeat_const.nss include\inc_prc_npc.nss include\tob_move_const.nss include\prcsp_archmaginc.nss include\prc_add_spl_pen.nss include\prcsp_reputation.nss include\prc_inc_util.nss include\prc_inc_stunfist.nss include\inc_nwnx_funcs.nss include\prc_template_con.nss include\prc_alterations.nss include\inc_abil_damage.nss
objs\prc_feats.ncs: scripts\prc_feats.nss include\moi_inc_moifunc.nss include\prc_inc_clsfunc.nss include\psi_inc_core.nss include\inc_persist_loca.nss include\prc_inc_natweap.nss include\prc_inc_function.nss include\inc_utility.nss include\prc_inc_spells.nss include\prc_inc_nwscript.nss include\prc_class_const.nss include\inc_target_list.nss include\inc_logmessage.nss include\inc_threads.nss include\prc_inc_actions.nss include\inc_time.nss include\inc_draw_prc.nss include\inc_eventhook.nss include\inc_metalocation.nss include\inc_array_sort.nss include\inc_uniqueid.nss include\inc_set.nss include\prc_misc_const.nss include\prc_spell_const.nss include\inv_invoc_const.nss include\psi_power_const.nss include\prc_inc_racial.nss include\prc_inc_array.nss include\moi_meld_const.nss include\bnd_vestig_const.nss include\inc_2dacache.nss include\prc_feat_const.nss include\prc_racial_const.nss include\inc_debug.nss include\prc_inc_switch.nss include\prc_inc_skin.nss include\inc_persistsql.nss include\inc_draw.nss include\inc_draw_tools.nss include\inc_pers_array.nss include\inc_area.nss include\inc_heap.nss include\inc_newspellbook.nss include\inc_vfx_const.nss include\spinc_necro_cyst.nss include\true_utter_const.nss include\prc_inc_sneak.nss include\prcsp_engine.nss include\inc_item_props.nss include\prc_inc_core.nss include\inc_sp_gain_mem.nss include\lookup_2da_spell.nss include\inc_lookups.nss include\prc_inc_damage.nss include\prc_inc_sb_const.nss include\prc_effect_inc.nss include\prc_inc_castlvl.nss include\prc_inc_newip.nss include\prc_inc_descrptr.nss include\prc_x2_itemprop.nss include\prc_ipfeat_const.nss include\inc_prc_npc.nss include\tob_move_const.nss include\prcsp_archmaginc.nss include\prc_add_spl_pen.nss include\prcsp_reputation.nss include\prc_inc_util.nss include\prc_inc_stunfist.nss include\inc_nwnx_funcs.nss include\prc_template_con.nss include\prc_alterations.nss include\inc_abil_damage.nss include\psi_inc_const.nss include\prc_inc_unarmed.nss
objs\prc_fh_da.ncs: scripts\prc_fh_da.nss include\prc_alterations.nss include\inc_abil_damage.nss include\prc_inc_damage.nss include\prc_effect_inc.nss include\inc_item_props.nss include\prc_inc_castlvl.nss include\prc_inc_newip.nss include\prc_inc_descrptr.nss include\prc_x2_itemprop.nss include\prc_ipfeat_const.nss include\inc_utility.nss include\prc_inc_nwscript.nss include\prc_class_const.nss include\inc_target_list.nss include\inc_logmessage.nss include\inc_threads.nss include\prc_inc_actions.nss include\inc_time.nss include\inc_draw_prc.nss include\inc_eventhook.nss include\inc_metalocation.nss include\inc_array_sort.nss include\inc_uniqueid.nss include\inc_set.nss include\prc_misc_const.nss include\prc_spell_const.nss include\inv_invoc_const.nss include\psi_power_const.nss include\prc_inc_racial.nss include\prc_inc_array.nss include\moi_meld_const.nss include\bnd_vestig_const.nss include\inc_2dacache.nss include\prc_feat_const.nss include\prc_racial_const.nss include\inc_debug.nss include\prc_inc_switch.nss include\inc_persist_loca.nss include\prc_inc_skin.nss include\inc_persistsql.nss include\inc_draw.nss include\inc_draw_tools.nss include\inc_pers_array.nss include\inc_area.nss include\inc_heap.nss include\inc_prc_npc.nss
@ -29836,7 +29844,7 @@ objs\prc_initdraconic.ncs: scripts\prc_initdraconic.nss include\prc_inc_clsfunc.
objs\prc_insfre.ncs: scripts\prc_insfre.nss include\prc_alterations.nss include\prc_feat_const.nss include\prc_class_const.nss include\prc_spell_const.nss include\inc_abil_damage.nss include\prc_inc_damage.nss include\prc_effect_inc.nss include\inc_item_props.nss include\prc_inc_castlvl.nss include\prc_inc_newip.nss include\prc_inc_descrptr.nss include\prc_x2_itemprop.nss include\prc_ipfeat_const.nss include\inc_utility.nss include\prc_inc_nwscript.nss include\inc_target_list.nss include\inc_logmessage.nss include\inc_threads.nss include\prc_inc_actions.nss include\inc_time.nss include\inc_draw_prc.nss include\inc_eventhook.nss include\inc_metalocation.nss include\inc_array_sort.nss include\inc_uniqueid.nss include\inc_set.nss include\prc_misc_const.nss include\inv_invoc_const.nss include\psi_power_const.nss include\prc_inc_racial.nss include\prc_inc_array.nss include\moi_meld_const.nss include\bnd_vestig_const.nss include\inc_2dacache.nss include\prc_racial_const.nss include\inc_debug.nss include\prc_inc_switch.nss include\inc_persist_loca.nss include\prc_inc_skin.nss include\inc_persistsql.nss include\inc_draw.nss include\inc_draw_tools.nss include\inc_pers_array.nss include\inc_area.nss include\inc_heap.nss include\inc_prc_npc.nss
objs\prc_intuiatk.ncs: scripts\prc_intuiatk.nss include\prc_alterations.nss include\inc_abil_damage.nss include\prc_inc_damage.nss include\prc_effect_inc.nss include\inc_item_props.nss include\prc_inc_castlvl.nss include\prc_inc_newip.nss include\prc_inc_descrptr.nss include\prc_x2_itemprop.nss include\prc_ipfeat_const.nss include\inc_utility.nss include\prc_inc_nwscript.nss include\prc_class_const.nss include\inc_target_list.nss include\inc_logmessage.nss include\inc_threads.nss include\prc_inc_actions.nss include\inc_time.nss include\inc_draw_prc.nss include\inc_eventhook.nss include\inc_metalocation.nss include\inc_array_sort.nss include\inc_uniqueid.nss include\inc_set.nss include\prc_misc_const.nss include\prc_spell_const.nss include\inv_invoc_const.nss include\psi_power_const.nss include\prc_inc_racial.nss include\prc_inc_array.nss include\moi_meld_const.nss include\bnd_vestig_const.nss include\inc_2dacache.nss include\prc_feat_const.nss include\prc_racial_const.nss include\inc_debug.nss include\prc_inc_switch.nss include\inc_persist_loca.nss include\prc_inc_skin.nss include\inc_persistsql.nss include\inc_draw.nss include\inc_draw_tools.nss include\inc_pers_array.nss include\inc_area.nss include\inc_heap.nss include\inc_prc_npc.nss
objs\prc_intuiatk.ncs: scripts\prc_intuiatk.nss include\prc_alterations.nss include\prc_inc_unarmed.nss include\inc_abil_damage.nss include\prc_inc_damage.nss include\prc_effect_inc.nss include\inc_item_props.nss include\prc_inc_castlvl.nss include\prc_inc_newip.nss include\prc_inc_descrptr.nss include\prc_x2_itemprop.nss include\prc_ipfeat_const.nss include\inc_utility.nss include\prc_inc_nwscript.nss include\prc_class_const.nss include\inc_target_list.nss include\inc_logmessage.nss include\inc_threads.nss include\prc_inc_actions.nss include\inc_time.nss include\inc_draw_prc.nss include\inc_eventhook.nss include\inc_metalocation.nss include\inc_array_sort.nss include\inc_uniqueid.nss include\inc_set.nss include\prc_misc_const.nss include\prc_spell_const.nss include\inv_invoc_const.nss include\psi_power_const.nss include\prc_inc_racial.nss include\prc_inc_array.nss include\moi_meld_const.nss include\bnd_vestig_const.nss include\inc_2dacache.nss include\prc_feat_const.nss include\prc_racial_const.nss include\inc_debug.nss include\prc_inc_switch.nss include\inc_persist_loca.nss include\prc_inc_skin.nss include\inc_persistsql.nss include\inc_draw.nss include\inc_draw_tools.nss include\inc_pers_array.nss include\inc_area.nss include\inc_heap.nss include\inc_prc_npc.nss include\prc_inc_natweap.nss include\prc_inc_spells.nss include\inc_newspellbook.nss include\inc_vfx_const.nss include\spinc_necro_cyst.nss include\true_utter_const.nss include\prc_inc_sneak.nss include\prcsp_engine.nss include\prc_inc_core.nss include\inc_sp_gain_mem.nss include\lookup_2da_spell.nss include\inc_lookups.nss include\prc_inc_sb_const.nss include\tob_move_const.nss include\prcsp_archmaginc.nss include\prc_add_spl_pen.nss include\prcsp_reputation.nss
objs\prc_is_ethereal.ncs: scripts\prc_is_ethereal.nss
@ -34134,6 +34142,8 @@ psionicsobjs\psi_gen_enter.ncs: psionics\psi_gen_enter.nss include\psi_inc_psifu
psionicsobjs\psi_gen_exit.ncs: psionics\psi_gen_exit.nss
psionicsobjs\psi_hiddentalent.ncs: psionics\psi_hiddentalent.nss include\prc_feat_const.nss include\psi_inc_core.nss include\psi_inc_powknown.nss include\prc_class_const.nss include\psi_inc_const.nss include\prc_inc_unarmed.nss include\prc_inc_natweap.nss include\inc_utility.nss include\prc_inc_spells.nss include\prc_inc_nwscript.nss include\inc_target_list.nss include\inc_logmessage.nss include\inc_threads.nss include\prc_inc_actions.nss include\inc_time.nss include\inc_draw_prc.nss include\inc_eventhook.nss include\inc_metalocation.nss include\inc_array_sort.nss include\inc_uniqueid.nss include\inc_set.nss include\prc_misc_const.nss include\prc_spell_const.nss include\inv_invoc_const.nss include\psi_power_const.nss include\prc_inc_racial.nss include\prc_inc_array.nss include\moi_meld_const.nss include\bnd_vestig_const.nss include\inc_2dacache.nss include\prc_racial_const.nss include\inc_debug.nss include\prc_inc_switch.nss include\inc_persist_loca.nss include\prc_inc_skin.nss include\inc_persistsql.nss include\inc_draw.nss include\inc_draw_tools.nss include\inc_pers_array.nss include\inc_area.nss include\inc_heap.nss include\inc_newspellbook.nss include\inc_vfx_const.nss include\spinc_necro_cyst.nss include\true_utter_const.nss include\prc_inc_sneak.nss include\prcsp_engine.nss include\inc_item_props.nss include\prc_inc_core.nss include\inc_sp_gain_mem.nss include\lookup_2da_spell.nss include\inc_lookups.nss include\prc_inc_damage.nss include\prc_inc_sb_const.nss include\prc_effect_inc.nss include\prc_inc_castlvl.nss include\prc_inc_newip.nss include\prc_inc_descrptr.nss include\prc_x2_itemprop.nss include\prc_ipfeat_const.nss include\inc_prc_npc.nss include\tob_move_const.nss include\prcsp_archmaginc.nss include\prc_add_spl_pen.nss include\prcsp_reputation.nss
psionicsobjs\psi_imnd_armmnd.ncs: psionics\psi_imnd_armmnd.nss include\prc_alterations.nss include\psi_inc_psifunc.nss include\inc_abil_damage.nss include\prc_inc_damage.nss include\prc_effect_inc.nss include\inc_item_props.nss include\prc_inc_castlvl.nss include\prc_inc_newip.nss include\prc_inc_descrptr.nss include\prc_x2_itemprop.nss include\prc_ipfeat_const.nss include\inc_utility.nss include\prc_inc_nwscript.nss include\prc_class_const.nss include\inc_target_list.nss include\inc_logmessage.nss include\inc_threads.nss include\prc_inc_actions.nss include\inc_time.nss include\inc_draw_prc.nss include\inc_eventhook.nss include\inc_metalocation.nss include\inc_array_sort.nss include\inc_uniqueid.nss include\inc_set.nss include\prc_misc_const.nss include\prc_spell_const.nss include\inv_invoc_const.nss include\psi_power_const.nss include\prc_inc_racial.nss include\prc_inc_array.nss include\moi_meld_const.nss include\bnd_vestig_const.nss include\inc_2dacache.nss include\prc_feat_const.nss include\prc_racial_const.nss include\inc_debug.nss include\prc_inc_switch.nss include\inc_persist_loca.nss include\prc_inc_skin.nss include\inc_persistsql.nss include\inc_draw.nss include\inc_draw_tools.nss include\inc_pers_array.nss include\inc_area.nss include\inc_heap.nss include\inc_prc_npc.nss include\psi_inc_metapsi.nss include\psi_inc_ppoints.nss include\psi_inc_augment.nss include\psi_inc_psicraft.nss include\psi_inc_powknown.nss include\psi_inc_core.nss include\psi_inc_const.nss include\prc_inc_unarmed.nss include\prc_inc_natweap.nss include\prc_inc_spells.nss include\inc_newspellbook.nss include\inc_vfx_const.nss include\spinc_necro_cyst.nss include\true_utter_const.nss include\prc_inc_sneak.nss include\prcsp_engine.nss include\prc_inc_core.nss include\inc_sp_gain_mem.nss include\lookup_2da_spell.nss include\inc_lookups.nss include\prc_inc_sb_const.nss include\tob_move_const.nss include\prcsp_archmaginc.nss include\prc_add_spl_pen.nss include\prcsp_reputation.nss
psionicsobjs\psi_imnd_lndrslv.ncs: psionics\psi_imnd_lndrslv.nss include\prc_alterations.nss include\psi_inc_psifunc.nss include\inc_abil_damage.nss include\prc_inc_damage.nss include\prc_effect_inc.nss include\inc_item_props.nss include\prc_inc_castlvl.nss include\prc_inc_newip.nss include\prc_inc_descrptr.nss include\prc_x2_itemprop.nss include\prc_ipfeat_const.nss include\inc_utility.nss include\prc_inc_nwscript.nss include\prc_class_const.nss include\inc_target_list.nss include\inc_logmessage.nss include\inc_threads.nss include\prc_inc_actions.nss include\inc_time.nss include\inc_draw_prc.nss include\inc_eventhook.nss include\inc_metalocation.nss include\inc_array_sort.nss include\inc_uniqueid.nss include\inc_set.nss include\prc_misc_const.nss include\prc_spell_const.nss include\inv_invoc_const.nss include\psi_power_const.nss include\prc_inc_racial.nss include\prc_inc_array.nss include\moi_meld_const.nss include\bnd_vestig_const.nss include\inc_2dacache.nss include\prc_feat_const.nss include\prc_racial_const.nss include\inc_debug.nss include\prc_inc_switch.nss include\inc_persist_loca.nss include\prc_inc_skin.nss include\inc_persistsql.nss include\inc_draw.nss include\inc_draw_tools.nss include\inc_pers_array.nss include\inc_area.nss include\inc_heap.nss include\inc_prc_npc.nss include\psi_inc_metapsi.nss include\psi_inc_ppoints.nss include\psi_inc_augment.nss include\psi_inc_psicraft.nss include\psi_inc_powknown.nss include\psi_inc_core.nss include\psi_inc_const.nss include\prc_inc_unarmed.nss include\prc_inc_natweap.nss include\prc_inc_spells.nss include\inc_newspellbook.nss include\inc_vfx_const.nss include\spinc_necro_cyst.nss include\true_utter_const.nss include\prc_inc_sneak.nss include\prcsp_engine.nss include\prc_inc_core.nss include\inc_sp_gain_mem.nss include\lookup_2da_spell.nss include\inc_lookups.nss include\prc_inc_sb_const.nss include\tob_move_const.nss include\prcsp_archmaginc.nss include\prc_add_spl_pen.nss include\prcsp_reputation.nss

View File

@ -123,7 +123,7 @@ void EurynomePoisonBloodDelay(object oBinder, object oTarget, int nDC)
{
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_POISON))
{
int nDice = min(5, GetBinderLevel(oBinder, VESTIGE_EURYNOME)/3);
int nDice = PRCMin(5, GetBinderLevel(oBinder, VESTIGE_EURYNOME)/3);
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_ACID_S), oTarget);
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(d6(nDice), DAMAGE_TYPE_ACID), oTarget);
}

View File

@ -15,7 +15,7 @@ void main()
{
object oBinder = OBJECT_SELF;
int nKSSLvl = GetLevelByClass(CLASS_TYPE_KNIGHT_SACRED_SEAL, oBinder);
int nCHAmod = max(1, GetAbilityModifier(ABILITY_CHARISMA, oBinder));
int nCHAmod = PRCMax(1, GetAbilityModifier(ABILITY_CHARISMA, oBinder));
int nSpellID = PRCGetSpellId();
if(GetIsPatronVestigeBound(oBinder))

View File

@ -29,7 +29,7 @@ void main()
if(!BindAbilCooldown(oBinder, GetSpellId(), VESTIGE_BUER)) return;
object oTarget = PRCGetSpellTargetObject();
int nBinderLevel = GetBinderLevel(oBinder, VESTIGE_BUER);
int nHeal = d8() + min(nBinderLevel, 10);
int nHeal = d8() + PRCMin(nBinderLevel, 10);
if(PRCGetIsAliveCreature(oTarget))
{

View File

@ -25,7 +25,7 @@ void main()
object oCaster = OBJECT_SELF;
object oTarget = PRCGetSpellTargetObject();
int CasterLvl = GetInvokerLevel(oCaster, GetInvokingClass());
int nSkillBonus = GetHasFeat(FEAT_MORPHEME_SAVANT) ? max(GetAbilityModifier(ABILITY_CHARISMA, oCaster) * 2, 6) : 6;
int nSkillBonus = GetHasFeat(FEAT_MORPHEME_SAVANT) ? PRCMax(GetAbilityModifier(ABILITY_CHARISMA, oCaster) * 2, 6) : 6;
effect eVis = EffectVisualEffect(VFX_IMP_IMPROVE_ABILITY_SCORE);
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
effect eSkill = EffectSkillIncrease(SKILL_BLUFF, nSkillBonus);

View File

@ -40,14 +40,14 @@ void main()
}
if(nSpell == INVOKE_DAMAGE_REDUCTION)
{
int nDur = max(3 + nCha, 1);
int nRedAmt = ((nWarlockLvl + 1) / 4) + (max(nDiscLvl / 2, 1));
int nDur = PRCMax(3 + nCha, 1);
int nRedAmt = ((nWarlockLvl + 1) / 4) + (PRCMax(nDiscLvl / 2, 1));
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectDamageReduction(nRedAmt, DAMAGE_POWER_PLUS_THREE), oPC, RoundsToSeconds(nDur));
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_SUPER_HEROISM), oPC);
}
if(nSpell == INVOKE_FIENDISH_RESISTANCE)
{
int nDur = max(3 + nCha, 1);
int nDur = PRCMax(3 + nCha, 1);
if(GetAlignmentGoodEvil(oPC) == ALIGNMENT_GOOD)
{
FloatingTextStringOnCreature("Your deity must be evil!", oPC, FALSE);
@ -63,7 +63,7 @@ void main()
}
if(nSpell == INVOKE_PROTECTIVE_AURA)
{
int nDur = max(3 + nCha, 1);
int nDur = PRCMax(3 + nCha, 1);
if(GetAlignmentGoodEvil(oPC) == ALIGNMENT_EVIL)
{
FloatingTextStringOnCreature("Your deity must be good!", oPC, FALSE);
@ -79,15 +79,15 @@ void main()
}
if(nSpell == INVOKE_STRENGTH_OF_WILL)
{
int nDur = max(3 + nCha, 1);
int nBonus = max(nDiscLvl / 2, 1);
int nDur = PRCMax(3 + nCha, 1);
int nBonus = PRCMax(nDiscLvl / 2, 1);
eGift = EffectLinkEffects(EffectVisualEffect(VFX_DUR_MIND_AFFECTING_POSITIVE), EffectSavingThrowIncrease(SAVING_THROW_WILL, nBonus, SAVING_THROW_TYPE_MIND_SPELLS));
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eGift, oPC, RoundsToSeconds(nDur));
}
if(nSpell == INVOKE_WILD_FRENZY)
{
int nDur = max(3 + nCha, 1);
int nDur = PRCMax(3 + nCha, 1);
int nTempHP = 2 * nDiscLvl;
if(GetAlignmentLawChaos(oPC) == ALIGNMENT_LAWFUL)
{

View File

@ -41,8 +41,8 @@ void main()
//calculate DC for essence effects
int nInvLevel = GetInvokerLevel(oPC, CLASS_TYPE_WARLOCK);
int nBlastLvl = min((nInvLevel + 1) / 2, 9);
nBlastLvl = max(max(nEssenceData & 0xF, nEssenceData2 & 0xF), nBlastLvl);
int nBlastLvl = PRCMin((nInvLevel + 1) / 2, 9);
nBlastLvl = PRCMax(PRCMax(nEssenceData & 0xF, nEssenceData2 & 0xF), nBlastLvl);
int nDC = 10 + nBlastLvl + GetAbilityModifier(ABILITY_CHARISMA);
if(GetHasFeat(FEAT_LORD_OF_ALL_ESSENCES)) nDC += 2;

View File

@ -36,8 +36,8 @@ void main()
//calculate DC for essence effects
int nInvLevel = GetInvokerLevel(oPC, CLASS_TYPE_WARLOCK);
int nBlastLvl = min((nInvLevel + 1) / 2, 9);
nBlastLvl = max(4, max(max(nEssenceData & 0xF, nEssenceData2 & 0xF), nBlastLvl));
int nBlastLvl = PRCMin((nInvLevel + 1) / 2, 9);
nBlastLvl = PRCMax(4, PRCMax(PRCMax(nEssenceData & 0xF, nEssenceData2 & 0xF), nBlastLvl));
int nDC = 10 + nBlastLvl + GetAbilityModifier(ABILITY_CHARISMA);
if(GetHasFeat(FEAT_LORD_OF_ALL_ESSENCES)) nDC += 2;

View File

@ -71,8 +71,8 @@ void main()
//calculate DC for essence effects
int nInvLevel = GetInvokerLevel(oPC, CLASS_TYPE_WARLOCK);
int nBlastLvl = min((nInvLevel + 1) / 2, 9);
nBlastLvl = max(nShapeLevel, max(max(nEssenceData & 0xF, nEssenceData2 & 0xF), nBlastLvl));
int nBlastLvl = PRCMin((nInvLevel + 1) / 2, 9);
nBlastLvl = PRCMax(nShapeLevel, PRCMax(PRCMax(nEssenceData & 0xF, nEssenceData2 & 0xF), nBlastLvl));
int nDC = 10 + nBlastLvl + GetAbilityModifier(ABILITY_CHARISMA);
if(GetHasFeat(FEAT_LORD_OF_ALL_ESSENCES)) nDC += 2;
int nDmgDice = GetBlastDamageDices(oPC, nInvLevel);

View File

@ -32,8 +32,8 @@ void main()
//calculate DC for essence effects
int nInvLevel = GetInvokerLevel(oPC, CLASS_TYPE_WARLOCK);
int nBlastLvl = min((nInvLevel + 1) / 2, 9);
nBlastLvl = max(max(nEssenceData & 0xF, nEssenceData2 & 0xF), nBlastLvl);
int nBlastLvl = PRCMin((nInvLevel + 1) / 2, 9);
nBlastLvl = PRCMax(PRCMax(nEssenceData & 0xF, nEssenceData2 & 0xF), nBlastLvl);
int nDC = 10 + nBlastLvl + GetAbilityModifier(ABILITY_CHARISMA);
if(GetHasFeat(FEAT_LORD_OF_ALL_ESSENCES)) nDC += 2;

View File

@ -36,8 +36,8 @@ void main()
//calculate DC for essence effects
int nInvLevel = GetInvokerLevel(oPC, CLASS_TYPE_WARLOCK);
int nBlastLvl = min((nInvLevel + 1) / 2, 9);
nBlastLvl = max(max(nEssenceData & 0xF, nEssenceData2 & 0xF), nBlastLvl);
int nBlastLvl = PRCMin((nInvLevel + 1) / 2, 9);
nBlastLvl = PRCMax(PRCMax(nEssenceData & 0xF, nEssenceData2 & 0xF), nBlastLvl);
int nDC = 10 + nBlastLvl + GetAbilityModifier(ABILITY_CHARISMA);
if(GetHasFeat(FEAT_LORD_OF_ALL_ESSENCES)) nDC += 2;

View File

@ -79,7 +79,7 @@ void main()
{
int nClass = GetLocalInt(oPC, "SpellType");
int nSpellbookMinLevel = 0;
int nSpellbookMaxLevel = min((GetInvokerLevel(oPC, CLASS_TYPE_WARLOCK) + 1) / 2, 9);
int nSpellbookMaxLevel = PRCMin((GetInvokerLevel(oPC, CLASS_TYPE_WARLOCK) + 1) / 2, 9);
if(DEBUG) DoDebug("inv_imbueitemcon: Spellbook max level: " + IntToString(nSpellbookMaxLevel));
string sFile = GetFileForClass(nClass);
int i;

View File

@ -30,7 +30,7 @@ void main()
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
//cap the extra damage
nCasterLvl = min(nCasterLvl, 20);
nCasterLvl = PRCMin(nCasterLvl, 20);
object oTarget = GetEnteringObject();
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster))

View File

@ -42,7 +42,7 @@ void main()
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
//cap the extra damage
nCasterLvl = min(nCasterLvl, 20);
nCasterLvl = PRCMin(nCasterLvl, 20);
object oTarget = GetFirstInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
//Declare the spell shape, size and the location.

View File

@ -63,7 +63,7 @@ void main()
if(GetHasFeat(FEAT_PARAGON_VISIONARY))
{
int nSkillBonus = max(2 * GetAbilityModifier(ABILITY_WISDOM, OBJECT_SELF), 6);
int nSkillBonus = PRCMax(2 * GetAbilityModifier(ABILITY_WISDOM, OBJECT_SELF), 6);
effect eLink = EffectLinkEffects(EffectUltravision(), EffectSeeInvisible());
eLink = EffectLinkEffects(eLink, EffectSkillIncrease(SKILL_SPOT, nSkillBonus));
eLink = EffectLinkEffects(eLink, EffectSkillIncrease(SKILL_LISTEN, nSkillBonus));

View File

@ -392,7 +392,7 @@ void main()
SetHeader("How much do you want to invest into "+GetStringByStrRef(StringToInt(Get2DACache("spells", "Name", nMeld)))+"?");
int i;
for(i = 1; i <= min(GetTotalEssentia(oMeldshaper)-GetTotalEssentiaInvested(oMeldshaper), GetMaxEssentiaCapacity(oMeldshaper, nClass, nMeld)); i++)
for(i = 1; i <= PRCMin(GetTotalEssentia(oMeldshaper)-GetTotalEssentiaInvested(oMeldshaper), GetMaxEssentiaCapacity(oMeldshaper, nClass, nMeld)); i++)
{
AddChoice(IntToString(i), i, oMeldshaper);
}
@ -409,7 +409,7 @@ void main()
int nMeld = GetLocalInt(oMeldshaper, "nMeld");
SetHeader("How much do you want to invest into "+GetStringByStrRef(StringToInt(Get2DACache("feat", "FEAT", nMeld)))+"?");
int i;
for(i = 1; i <= min(GetTotalEssentia(oMeldshaper)-GetTotalEssentiaInvested(oMeldshaper), GetMaxEssentiaCapacityFeat(oMeldshaper)); i++)
for(i = 1; i <= PRCMin(GetTotalEssentia(oMeldshaper)-GetTotalEssentiaInvested(oMeldshaper), GetMaxEssentiaCapacityFeat(oMeldshaper)); i++)
{
AddChoice(IntToString(i), i, oMeldshaper);
}
@ -420,7 +420,7 @@ void main()
// Build the confirmation query
int nMeld = GetLocalInt(oMeldshaper, "nMeld");
SetHeader("How much do you want to invest into "+GetStringByStrRef(StringToInt(Get2DACache("spells", "Name", nMeld)))+"?");
int nMax = min(GetTotalEssentia(oMeldshaper)-GetTotalEssentiaInvested(oMeldshaper), GetMaxEssentiaCapacityFeat(oMeldshaper));
int nMax = PRCMin(GetTotalEssentia(oMeldshaper)-GetTotalEssentiaInvested(oMeldshaper), GetMaxEssentiaCapacityFeat(oMeldshaper));
if (nMeld == MELD_SPINE_ENHANCEMENT) nMax = GetLevelByClass(CLASS_TYPE_SPINEMELD_WARRIOR, oMeldshaper)/2;
int i;
for(i = 1; i <= nMax; i++)

View File

@ -11,5 +11,5 @@ void main()
{
object oMeldshaper = PRCGetSpellTargetObject();
SetIncorporeal(oMeldshaper, RoundsToSeconds(max(GetAbilityModifier(ABILITY_CHARISMA, oMeldshaper),1)), 1);
SetIncorporeal(oMeldshaper, RoundsToSeconds(PRCMax(GetAbilityModifier(ABILITY_CHARISMA, oMeldshaper),1)), 1);
}

View File

@ -189,7 +189,7 @@ void main()
int nPower = GetLocalInt(oMeldshaper, "nPower");
SetHeader("How much do you want to invest into "+GetStringByStrRef(StringToInt(Get2DACache("spells", "Name", nPower)))+"?");
int i;
int nMin = min(GetMaxEssentiaCapacityFeat(oMeldshaper), StringToInt(Get2DACache("spells", "Innate", nPower)));
int nMin = PRCMin(GetMaxEssentiaCapacityFeat(oMeldshaper), StringToInt(Get2DACache("spells", "Innate", nPower)));
for(i = 1; i <= nMin; i++)
{
AddChoice(IntToString(i), i, oMeldshaper);

View File

@ -29,7 +29,7 @@ void main()
if(myst.bCanMyst)
{
int nAC = min(4, 1 + myst.nShadowcasterLevel/6);
int nAC = PRCMin(4, 1 + myst.nShadowcasterLevel/6);
myst.eLink = SupernaturalEffect(EffectLinkEffects(EffectACIncrease(nAC, AC_DEFLECTION_BONUS), EffectVisualEffect(VFX_DUR_ENTROPIC_SHIELD)));
myst.fDur = 60.0 * myst.nShadowcasterLevel;

View File

@ -40,7 +40,7 @@ void main()
// Check Spell Resistance
if(!PRCDoResistSpell(oShadow, oTarget, myst.nPen) || myst.bIgnoreSR)
{
int nDam = MetashadowsDamage(myst, 6, 1, min(5, myst.nShadowcasterLevel/4));
int nDam = MetashadowsDamage(myst, 6, 1, PRCMin(5, myst.nShadowcasterLevel/4));
if (PRCMySavingThrow(SAVING_THROW_WILL, oTarget, GetShadowcasterDC(oShadow), SAVING_THROW_TYPE_MIND_SPELLS))
nDam/2;

View File

@ -27,7 +27,7 @@ void main()
if(myst.bCanMyst)
{
int nAmount = min(120, myst.nShadowcasterLevel * 10);
int nAmount = PRCMin(120, myst.nShadowcasterLevel * 10);
myst.eLink = EffectLinkEffects(EffectDamageResistance(DAMAGE_TYPE_COLD, nAmount, nAmount), EffectVisualEffect(VFX_DUR_PROTECTION_ENERGY_COLD));
myst.eLink = EffectLinkEffects(myst.eLink, EffectDamageIncrease(DAMAGE_BONUS_1d6, DAMAGE_TYPE_COLD));

View File

@ -27,7 +27,7 @@ void main()
if(myst.bCanMyst)
{
int nAmount = min(75, GetHitDice(oTarget) * 5);
int nAmount = PRCMin(75, GetHitDice(oTarget) * 5);
myst.eLink = EffectLinkEffects(EffectTemporaryHitpoints(nAmount), EffectVisualEffect(VFX_DUR_CHAOS_CLOAK));
myst.fDur = 600.0 * myst.nShadowcasterLevel;

View File

@ -24,7 +24,7 @@ void main()
object oShadow = GetAreaOfEffectCreator();
object oAoE = GetAreaOfEffectObject(GetLocalLocation(oShadow, "BlackFire_Loc"), "VFX_PER_CURTAIN_SHADOWS");
struct mystery myst = GetLocalMystery(oShadow, MYST_HOLD_MYST+"3");
int nDice = min(15, myst.nShadowcasterLevel);
int nDice = PRCMin(15, myst.nShadowcasterLevel);
//Capture the first target object in the shape.
object oTarget = GetEnteringObject();

View File

@ -31,7 +31,7 @@ void main()
int nDamage;
object oAoE = GetAreaOfEffectObject(GetLocalLocation(oShadow, "BlackFire_Loc"), "VFX_PER_CURTAIN_SHADOWS");
struct mystery myst = GetLocalMystery(oShadow, MYST_HOLD_MYST+"3");
int nDice = min(15, myst.nShadowcasterLevel);
int nDice = PRCMin(15, myst.nShadowcasterLevel);
//Capture the first target object in the shape.
object oTarget = GetFirstInPersistentObject(OBJECT_SELF, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);

View File

@ -23,7 +23,7 @@ void main()
if (!GetLocalInt(oShadow, "FlickerMyst"))
{
int nLevel = max(GetShadowcasterLevel(oShadow), GetLocalInt(oShadow, "TenebrousFlicker"));
int nLevel = PRCMax(GetShadowcasterLevel(oShadow), GetLocalInt(oShadow, "TenebrousFlicker"));
DimensionDoor(oShadow, nLevel);
SetLocalInt(oShadow, "FlickerMyst", TRUE);
DelayCommand(5.5, DeleteLocalInt(oShadow, "FlickerMyst"));

View File

@ -30,7 +30,7 @@ void main()
if(myst.bCanMyst)
{
int nDie = min(myst.nShadowcasterLevel, 20);
int nDie = PRCMin(myst.nShadowcasterLevel, 20);
location lTargetLocation = PRCGetSpellTargetLocation();
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_VAMPIRIC_DRAIN_PRC), lTargetLocation);

View File

@ -30,7 +30,7 @@ void main()
if(myst.bCanMyst)
{
int nDie = min(myst.nShadowcasterLevel, 10);
int nDie = PRCMin(myst.nShadowcasterLevel, 10);
//Declare the spell shape, size and the location. Capture the first target object in the shape.
object oTarget = MyFirstObjectInShape(SHAPE_SPELLCONE, FeetToMeters(30.0), lTargetLocation, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);

View File

@ -30,7 +30,7 @@ void main()
if(myst.bCanMyst)
{
int nDie = min(myst.nShadowcasterLevel, 5);
int nDie = PRCMin(myst.nShadowcasterLevel, 5);
myst.fDur = RoundsToSeconds(myst.nShadowcasterLevel);
if(myst.bExtend) myst.fDur *= 2;
myst.nPen = ShadowSRPen(oShadow, myst.nShadowcasterLevel);

View File

@ -37,9 +37,9 @@ void main()
//--------------------------------------------------------------------------
// Dispel Magic is capped at caster level 10
//--------------------------------------------------------------------------
int nCasterLevel = min(myst.nShadowcasterLevel, 10);
int nCasterLevel = PRCMin(myst.nShadowcasterLevel, 10);
if (myst.nMystId == MYST_SHADOWS_FADE_GREATER)
nCasterLevel = min(myst.nShadowcasterLevel, 20);
nCasterLevel = PRCMin(myst.nShadowcasterLevel, 20);
if (GetIsObjectValid(oTarget))
{

View File

@ -33,7 +33,7 @@ void main()
if(myst.bCanMyst)
{
int nDie = min(myst.nShadowcasterLevel, 20);
int nDie = PRCMin(myst.nShadowcasterLevel, 20);
myst.nPen = ShadowSRPen(oShadow, myst.nShadowcasterLevel);
myst.nSaveDC = GetShadowcasterDC(oShadow);
effect eCold = EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_COLD);

View File

@ -62,7 +62,7 @@ void main()
int nDam = d6();
if (GetLocalInt(oShadow, "SharpShadMax")) nDam = 6;
if (GetLocalInt(oShadow, "SharpShadEmp")) nDam += nDam/2;
nDam += min(15, GetShadowcasterLevel(oShadow, CLASS_TYPE_SHADOWCASTER));
nDam += PRCMin(15, GetShadowcasterLevel(oShadow, CLASS_TYPE_SHADOWCASTER));
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_MAGMAG), oTarget);
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(nDam, DAMAGE_TYPE_PIERCING), oTarget);
}

View File

@ -33,7 +33,7 @@ void main()
if (oTarget == oPC) return; // No hitting yourself
if (GetLocalInt(oPC, "CombatLoopProtection")) return; // Stop the damn loop
int nAbi = max(GetAbilityModifier(ABILITY_INTELLIGENCE, oPC), GetAbilityModifier(ABILITY_CHARISMA, oPC));
int nAbi = PRCMax(GetAbilityModifier(ABILITY_INTELLIGENCE, oPC), GetAbilityModifier(ABILITY_CHARISMA, oPC));
SetLocalInt(oPC, "BABOverride", GetShadowcasterLevel(oPC));
DelayCommand(1.0, DeleteLocalInt(oPC, "BABOverride"));

View File

@ -38,7 +38,7 @@ void TOBAttack(object oTarget, object oInitiator, struct maneuver move)
if(GetAlignmentGoodEvil(oInitiator) != GetAlignmentGoodEvil(oTarget)
|| GetAlignmentLawChaos(oInitiator) != GetAlignmentLawChaos(oTarget))
{
int nHeal = d6() + min(move.nInitiatorLevel, 5);
int nHeal = d6() + PRCMin(move.nInitiatorLevel, 5);
object oHeal = GetCrusaderHealTarget(oInitiator, FeetToMeters(10.0));
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(nHeal), oHeal);
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HEALING_L_LAW), oHeal);

View File

@ -39,7 +39,7 @@ void TOBAttack(object oTarget, object oInitiator, struct maneuver move)
if(GetAlignmentGoodEvil(oInitiator) != GetAlignmentGoodEvil(oTarget)
|| GetAlignmentLawChaos(oInitiator) != GetAlignmentLawChaos(oTarget))
{
int nHeal = d6(3) + min(move.nInitiatorLevel, 10);
int nHeal = d6(3) + PRCMin(move.nInitiatorLevel, 10);
object oHeal = GetCrusaderHealTarget(oInitiator, FeetToMeters(10.0));
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(nHeal), oHeal);
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HEALING_L_LAW), oHeal);

View File

@ -46,7 +46,7 @@ void TOBAttack(object oTarget, object oInitiator, struct maneuver move)
if(GetIsFriend(oTarget, oInitiator))
{
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, PRCGetSpellId()));
int nHeal = d6(3) + min(move.nInitiatorLevel, 50);
int nHeal = d6(3) + PRCMin(move.nInitiatorLevel, 50);
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(nHeal), oTarget);
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HEALING_L_LAW), oTarget);
}

View File

@ -203,7 +203,7 @@ void main()
// Determine maximum maneuver level
// Initiators get new maneuvers at the same levels as wizards
// See ToB p39, table 3-1
int nMaxLevel = min(9, (GetInitiatorLevel(oInitiator, nClass) + 1)/2);
int nMaxLevel = PRCMin(9, (GetInitiatorLevel(oInitiator, nClass) + 1)/2);
// Set the tokens
int i;

View File

@ -234,7 +234,7 @@ void main()
// Determine maximum maneuver level
// Initiators get new maneuvers at the same levels as wizards
// See ToB p39, table 3-1
int nMaxLevel = min(9, (GetInitiatorLevel(oInitiator, nClass) + 1)/2);
int nMaxLevel = PRCMin(9, (GetInitiatorLevel(oInitiator, nClass) + 1)/2);
// Set the tokens
int i;

View File

@ -76,7 +76,7 @@ void main()
// Determine maximum maneuver level
// Initiators get new maneuvers at the same levels as wizards
// See ToB p39, table 3-1
int nMaxLevel = min(9, (GetInitiatorLevel(oPC, nClass) + 1)/2);
int nMaxLevel = PRCMin(9, (GetInitiatorLevel(oPC, nClass) + 1)/2);
// Set the tokens
int i;

View File

@ -71,7 +71,7 @@ void main()
oItem = GetSpellCastItem();
if(GetBaseItemType(oItem) == BASE_ITEM_ARMOR)
{
int nCold = min(10, GetDamageDealtByType(DAMAGE_TYPE_COLD));
int nCold = PRCMin(10, GetDamageDealtByType(DAMAGE_TYPE_COLD));
if(nCold > 0)
{
effect eHeal = EffectHeal(nCold);

View File

@ -76,7 +76,7 @@ void main()
else /* Effects of UTTER_ARCHERS_EYE_R would be here */
{
// Damage Resistance 10 piercing, max of 100 total
utter.eLink = EffectLinkEffects(EffectDamageResistance(DAMAGE_TYPE_PIERCING, 10, min((10 * utter.nTruespeakerLevel), 100)), EffectVisualEffect(VFX_DUR_PROTECTION_ARROWS));
utter.eLink = EffectLinkEffects(EffectDamageResistance(DAMAGE_TYPE_PIERCING, 10, PRCMin((10 * utter.nTruespeakerLevel), 100)), EffectVisualEffect(VFX_DUR_PROTECTION_ARROWS));
}
// If either of these ApplyEffect isn't needed, delete it.
// Duration Effects

View File

@ -0,0 +1,529 @@
//::///////////////////////////////////////////////
//:: Hidden Talent
//:: psi_hiddentalent.nss
//:://////////////////////////////////////////////
/*
Your latent power of psionics flares to life, conferring upon you
the designation of a psionic character. As a psionic character,
you gain a reserve of 2 power points, and you can take psionic
feats, metapsionic feats, and psionic item creation feats. If you
have or take a class that grants power points, the power points
gained from Hidden Talent are added to your total power point
reserve.
When you take this feat, choose one 1st-level power from any
psionic class list. You know this power (it becomes one of your
powers known). You can manifest this power with the power points
provided by this feat if you have a Charisma score of 11 or higher.
If you have no psionic class levels, you are considered a
1st-level manifester when manifesting this power. If you have
psionic class levels, you can manifest the power at the highest
manifester level you have attained. (This is not a manifester
level, and it does not add to any manifester levels gained by
taking psionic classes.) If you have no psionic class levels,
use Charisma to determine how powerful a power you can manifest
and how hard those powers are to resist.
*/
//:://////////////////////////////////////////////
//:: Created By: Jaysyn
//:: Created On: 2025-01-29 09:52:24
//:://////////////////////////////////////////////
#include "prc_feat_const"
#include "psi_inc_core"
#include "psi_inc_powknown"
int GetPowerRowID(int nClass, int nPower)
{
string sPowerFile = GetAMSDefinitionFileName(nClass);
int nCheck = -1;
int i;
for(i = 0; i < GetPRCSwitch(FILE_END_CLASS_POWER); i++)
{
nCheck = StringToInt(Get2DACache(sPowerFile, "RealSpellID", i));
// Find the row ID of the power we need and return it
if(nCheck == nPower)
{
return i;
}
}
// this should never trigger
return -1;
}
void GrantHiddenTalent(object oPC, int nClass, int nFeat, int nPower, string sTag)
{
if (GetHasFeat(nFeat, oPC) && !GetPersistantLocalInt(oPC, sTag))
{
if(DEBUG) DoDebug("psi_hiddentalent: Adding power ID " + IntToString(nPower));
AddPowerKnown(oPC, nClass, GetPowerRowID(nClass, nPower), TRUE, 1);
SetKnownPowersModifier(oPC, nClass, GetKnownPowersModifier(oPC, nClass) + 1);
SetPersistantLocalInt(oPC, sTag, TRUE);
}
}
void main()
{
object oPC = OBJECT_SELF;
//int nClass = GetPrimaryPsionicClass(oPC);
int nClass = POWER_LIST_PSION;
int nPowerTotal = GetKnownPowersModifier(oPC, nClass);
// Determine why this script is running
if(GetRunningEvent() != EVENT_ONPLAYERLEVELDOWN)
{
GrantHiddenTalent(oPC, POWER_LIST_PSYWAR, FEAT_HIDDEN_TALENT_BIOFEEDBACK, POWER_BIOFEEDBACK, "PRC_HT_BiofeedbackGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_BITE_WOLF, POWER_BITE_WOLF, "PRC_HT_BiteOfTheWolfGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_BOLT, POWER_BOLT, "PRC_HT_BoltGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_BURST, POWER_BURST, "PRC_HT_BurstGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_CALLTOMIND, POWER_CALLTOMIND, "PRC_HT_CallToMindGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_CALL_WEAPONRY, POWER_CALL_WEAPONRY, "PRC_HT_CallWeaponryGained");
GrantHiddenTalent(oPC, POWER_LIST_PSYWAR, FEAT_HIDDEN_TALENT_CHAMELEON, POWER_CHAMELEON, "PRC_HT_ChameleonGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_CLAWS_BEAST, POWER_CLAWS_BEAST, "PRC_HT_ClawsOfTheBeastGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_COMPRESSION, POWER_COMPRESSION, "PRC_HT_CompressionGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_CONCEALTHOUGHT, POWER_CONCEALTHOUGHT, "PRC_HT_ConcealThoughtsGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_CREATESOUND, POWER_CREATESOUND, "PRC_HT_CreateSoundGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_CRYSTALSHARD, POWER_CRYSTALSHARD, "PRC_HT_CrystalShardGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_DAZE, POWER_DAZE, "PRC_HT_DazeGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_DECELERATION, POWER_DECELERATION, "PRC_HT_DecelerationGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_DEFPRECOG, POWER_DEFPRECOG, "PRC_HT_DefensivePrecognitionGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_DEMORALIZE, POWER_DEMORALIZE, "PRC_HT_DemoralizeGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_DISABLE, POWER_DISABLE, "PRC_HT_DisableGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_DISSIPATINGTOUCH, POWER_DISSIPATINGTOUCH, "PRC_HT_DissipatingTouchGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_DISTRACT, POWER_DISTRACT, "PRC_HT_DistractGained");
GrantHiddenTalent(oPC, POWER_LIST_PSYWAR, FEAT_HIDDEN_TALENT_ELFSIGHT, POWER_ELFSIGHT, "PRC_HT_ElfSightGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_EMPATHY, POWER_EMPATHY, "PRC_HT_EmpathyGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_EMPTYMIND, POWER_EMPTYMIND, "PRC_HT_EmptyMindGained");
//GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_ENERGYRAY, POWER_ENERGYRAY, "PRC_HT_EnergyRayGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_ENTANGLE, POWER_ENTANGLE, "PRC_HT_EntangleGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_EXPANSION, POWER_EXPANSION, "PRC_HT_ExpansionGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_FARHAND, POWER_FARHAND, "PRC_HT_FarHandGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_FORCESCREEN, POWER_FORCESCREEN, "PRC_HT_ForceScreenGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_GREASE, POWER_GREASE, "PRC_HT_GreaseGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_GRIP_IRON, POWER_GRIP_IRON, "PRC_HT_GripIronGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_HAMMER, POWER_HAMMER, "PRC_HT_HammerGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_INERTIALARMOUR, POWER_INERTIALARMOUR, "PRC_HT_InertialArmourGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_MATTERAGITATION, POWER_MATTERAGITATION, "PRC_HT_MatterAgitationGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_METAPHYSICAL_CLAW, POWER_METAPHYSICAL_CLAW, "PRC_HT_MetaClawGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_METAPHYSICAL_WEAPON, POWER_METAPHYSICAL_WEAPON, "PRC_HT_MetaWeaponGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_MINDTHRUST, POWER_MINDTHRUST, "PRC_HT_MindThrustGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_MYLIGHT, POWER_MYLIGHT, "PRC_HT_MyLightGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_OFFPRECOG, POWER_OFFPRECOG, "PRC_HT_OffPrecogGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_OFFPRESC, POWER_OFFPRESC, "PRC_HT_OffPrescGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_PREVENOM, POWER_PREVENOM, "PRC_HT_PrevenomGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_PREVENOM_WEAPON, POWER_PREVENOM_WEAPON, "PRC_HT_PrevenomWeaponGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_SKATE, POWER_SKATE, "PRC_HT_SkateGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_STOMP, POWER_STOMP, "PRC_HT_StompGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_SYNESTHETE, POWER_SYNESTHETE, "PRC_HT_SynestheteGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_TELEMPATHICPRO, POWER_TELEMPATHICPRO, "PRC_HT_TeleProjGained");
GrantHiddenTalent(oPC, POWER_LIST_PSYWAR, FEAT_HIDDEN_TALENT_THICKSKIN, POWER_THICKSKIN, "PRC_HT_ThickSkinGained");
GrantHiddenTalent(oPC, nClass, FEAT_HIDDEN_TALENT_VIGOR, POWER_VIGOR, "PRC_HT_VigorGained");
}
else if(GetRunningEvent() == EVENT_ONPLAYERLEVELDOWN)
{
// Has lost Biofeedback, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_BiofeedbackGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_BIOFEEDBACK, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_BiofeedbackGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Bite of the Wolf, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_BiteOfTheWolfGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_BITE_WOLF, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_BiteOfTheWolfGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Bolt, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_BoltGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_BOLT, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_BoltGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Burst, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_BurstGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_BURST, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_BurstGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Call to Mind, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_CallToMindGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_CALLTOMIND, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_CallToMindGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Call Weaponry, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_CallWeaponryGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_CALL_WEAPONRY, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_CallWeaponryGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Chameleon, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_ChameleonGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_CHAMELEON, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_ChameleonGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Claws of the Beast, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_ClawsOfTheBeastGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_CLAWS_BEAST, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_ClawsOfTheBeastGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Compression, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_CompressionGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_COMPRESSION, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_CompressionGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Conceal Thought, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_ConcealThoughtGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_CONCEALTHOUGHT, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_ConcealThoughtGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Create Sound, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_CreateSoundGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_CREATESOUND, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_CreateSoundGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Crystal Shard, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_CrystalShardGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_CRYSTALSHARD, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_CrystalShardGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Daze, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_DazeGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_DAZE, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_DazeGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Deceleration, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_DecelerationGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_DECELERATION, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_DecelerationGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Deflection Precognition, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_DeflectionPrecognitionGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_DEFPRECOG, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_DeflectionPrecognitionGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Demoralize, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_DemoralizeGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_DEMORALIZE, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_DemoralizeGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Disable, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_DisableGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_DISABLE, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_DisableGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Dissipating Touch, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_DissipatingTouchGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_DISSIPATINGTOUCH, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_DissipatingTouchGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Distract, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_DistractGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_DISTRACT, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_DistractGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Elf Sight, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_ElfSightGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_ELFSIGHT, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_ElfSightGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Empathy, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_EmpathyGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_EMPATHY, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_EmpathyGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Empty Mind, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_EmptyMindGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_EMPTYMIND, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_EmptyMindGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Energy Ray, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_EnergyRayGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_ENERGYRAY, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_EnergyRayGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Entangling Ectoplasm, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_EntangleEctoGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_ENTANGLE, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_EntangleEctoGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Expansion, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_ExpansionGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_EXPANSION, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_ExpansionGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Far Hand, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_FarHandGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_FARHAND, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_FarHandGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Force Screen, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_ForceScreenGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_FORCESCREEN, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_ForceScreenGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Grease, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_GreaseGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_GREASE, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_GreaseGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Hammer, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_HammerGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_HAMMER, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_HammerGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Inertial Armour, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_InertialArmourGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_INERTIALARMOUR, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_InertialArmourGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Matter Agitation, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_MatterAgitationGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_MATTERAGITATION, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_MatterAgitationGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Metaphysical Claw, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_MetaClawGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_METAPHYSICAL_CLAW, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_MetaClawGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Metaphysical Weapon, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_MetaWeaponGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_METAPHYSICAL_WEAPON, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_MetaWeaponGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Mind Thrust, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_MindThrustGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_MINDTHRUST, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_MindThrustGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost My Light, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_MyLightGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_MYLIGHT, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_MyLightGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Precognition, Offensive, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_OffPrecogGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_OFFPRECOG, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_OffPrecogGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Prescience, Offensive, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_OffPrescGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_OFFPRESC, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_OffPrescGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Prevenom, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_PrevenomGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_PREVENOM, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_PrevenomGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Prevenom Weapon, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_PrevenomWeaponGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_PREVENOM_WEAPON, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_PrevenomWeaponGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Skate, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_SkateGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_SKATE, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_SkateGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Stomp, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_StompGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_STOMP, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_StompGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Synesthete, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_SynestheteGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_SYNESTHETE, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_SynestheteGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Telempathic Projection, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_TeleProjGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_TELEMPATHICPRO, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_TeleProjGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Thicken Skin, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_ThickSkinGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_THICKSKIN, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_ThickSkinGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Vigor, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_VigorGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_VIGOR, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_VigorGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Grip of Iron, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_GripIronGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_GRIP_IRON, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_GripIronGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
//:: Remove eventhook if the character no longer has any Hidden Talent feats
if(!IsHiddenTalent())
RemoveEventScript(oPC, EVENT_ONPLAYERLEVELDOWN, "psi_hiddentalent", TRUE, FALSE);
}
}
/* #include "psi_inc_core"
#include "psi_inc_powknown"
int GetPowerRowID(int nClass, int nPower)
{
string sPowerFile = GetAMSDefinitionFileName(nClass);
int nCheck = -1;
int i;
for(i = 0; i < GetPRCSwitch(FILE_END_CLASS_POWER) ; i++)
{
nCheck = StringToInt(Get2DACache(sPowerFile, "RealSpellID", i));
// Find the row ID of the power we need and return it
if(nCheck == nPower)
{
return i;
}
}
// this should never trigger
return -1;
}
void main()
{
object oPC = OBJECT_SELF;
int nClass = GetPrimaryPsionicClass(oPC);
int nPowerTotal = GetKnownPowersModifier(oPC, nClass);
// Determine why this script is running
if(GetRunningEvent() == EVENT_ONPLAYERLEVELUP)
{
if (GetHasFeat(FEAT_HIDDEN_TALENT_BIOFEEDBACK, oPC) && !GetPersistantLocalInt(oPC, "PRC_HT_BiofeedbackGained"))
{
if(DEBUG) DoDebug("psi_hiddentalent: Adding Biofeedback");
AddPowerKnown(oPC, nClass, GetPowerRowID(nClass, POWER_BIOFEEDBACK), TRUE, GetHitDice(oPC));
SetKnownPowersModifier(oPC, nClass, ++nPowerTotal);
SetPersistantLocalInt(oPC, "PRC_HT_BiofeedbackGained", TRUE);
}
if (GetHasFeat(FEAT_HIDDEN_TALENT_BITE_WOLF, oPC) && !GetPersistantLocalInt(oPC, "PRC_HT_BiteOfTheWolfGained"))
{
if(DEBUG) DoDebug("psi_hiddentalent: Adding Bite of the Wolf");
AddPowerKnown(oPC, nClass, GetPowerRowID(nClass, POWER_BITEWOLF), TRUE, GetHitDice(oPC));
SetKnownPowersModifier(oPC, nClass, ++nPowerTotal);
SetPersistantLocalInt(oPC, "PRC_HT_BiteOfTheWolfGained", TRUE);
}
if (GetHasFeat(FEAT_HIDDEN_TALENT_BOLT, oPC) && !GetPersistantLocalInt(oPC, "PRC_HT_BoltGained"))
{
if(DEBUG) DoDebug("psi_hiddentalent: Adding Bolt");
AddPowerKnown(oPC, nClass, GetPowerRowID(nClass, POWER_BOLT), TRUE, GetHitDice(oPC));
SetKnownPowersModifier(oPC, nClass, ++nPowerTotal);
SetPersistantLocalInt(oPC, "PRC_HT_BoltGained", TRUE);
}
if (GetHasFeat(FEAT_HIDDEN_TALENT_BURST, oPC) && !GetPersistantLocalInt(oPC, "PRC_HT_BurstGained"))
{
if(DEBUG) DoDebug("psi_hiddentalent: Adding Burst");
AddPowerKnown(oPC, nClass, GetPowerRowID(nClass, POWER_BURST), TRUE, GetHitDice(oPC));
SetKnownPowersModifier(oPC, nClass, ++nPowerTotal);
SetPersistantLocalInt(oPC, "PRC_HT_BurstGained", TRUE);
}
if (GetHasFeat(FEAT_HIDDEN_TALENT_CALLTOMIND, oPC) && !GetPersistantLocalInt(oPC, "PRC_HT_CallToMindGained"))
{
if(DEBUG) DoDebug("psi_hiddentalent: Adding Call To Mind");
AddPowerKnown(oPC, nClass, GetPowerRowID(nClass, POWER_CALLTOMIND), TRUE, GetHitDice(oPC));
SetKnownPowersModifier(oPC, nClass, ++nPowerTotal);
SetPersistantLocalInt(oPC, "PRC_HT_CallToMindGained", TRUE);
}
// Hook to OnLevelDown to remove the power slots granted here
AddEventScript(oPC, EVENT_ONPLAYERLEVELDOWN, "psi_hiddentalent", TRUE, FALSE);
}
else if(GetRunningEvent() == EVENT_ONPLAYERLEVELDOWN)
{
// Has lost Biofeedback, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_BiofeedbackGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_BIOFEEDBACK, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_BiofeedbackGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Bolt, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_BiteOfTheWolfGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_BITE_WOLF, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_BiteOfTheWolfGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Has lost Bolt, but the slot is still present
if(GetPersistantLocalInt(oPC, "PRC_HT_BoltGained") && !GetHasFeat(FEAT_HIDDEN_TALENT_BOLT, oPC))
{
DeletePersistantLocalInt(oPC, "PRC_HT_BoltGained");
SetKnownPowersModifier(oPC, nClass, --nPowerTotal);
}
// Remove eventhook if the character no longer has any Hidden Talent feats
if(!IsHiddenTalent)
RemoveEventScript(oPC, EVENT_ONPLAYERLEVELDOWN, "psi_hiddentalent", TRUE, FALSE);
}
} */

View File

@ -90,7 +90,7 @@ void main()
}
/* int nTargetManifesterLevel = max(max(GetClassByPosition(1, oTarget) != CLASS_TYPE_INVALID ? GetManifesterLevel(oTarget, GetClassByPosition(1, oTarget)) : 0,
/* int nTargetManifesterLevel = PRCMax(PRCMax(GetClassByPosition(1, oTarget) != CLASS_TYPE_INVALID ? GetManifesterLevel(oTarget, GetClassByPosition(1, oTarget)) : 0,
GetClassByPosition(2, oTarget) != CLASS_TYPE_INVALID ? GetManifesterLevel(oTarget, GetClassByPosition(2, oTarget)) : 0
),
GetClassByPosition(3, oTarget) != CLASS_TYPE_INVALID ? GetManifesterLevel(oTarget, GetClassByPosition(3, oTarget)) : 0
@ -98,7 +98,7 @@ void main()
int nPPGiven = 2 + 2 * manif.nTimesAugOptUsed_1;
// Can't give more than the target has manifester levels
nPPGiven = min(nPPGiven, nTargetManifesterLevel);
nPPGiven = PRCMin(nPPGiven, nTargetManifesterLevel);
// Let the AI know the power was used on it
PRCSignalSpellEvent(oTarget, FALSE, manif.nSpellID, oManifester);

View File

@ -102,7 +102,7 @@ void main()
if(manif.bCanManifest)
{
// {0, 1, 2}, depending on the size of the creature
int nEffectiveSize = max(min(PRCGetCreatureSize(oTarget), CREATURE_SIZE_LARGE), CREATURE_SIZE_SMALL) - CREATURE_SIZE_SMALL;
int nEffectiveSize = PRCMax(PRCMin(PRCGetCreatureSize(oTarget), CREATURE_SIZE_LARGE), CREATURE_SIZE_SMALL) - CREATURE_SIZE_SMALL;
int nClawSize = nEffectiveSize + manif.nTimesAugOptUsed_1 + manif.nTimesAugOptUsed_2;
int nBaseDamage;
effect eVis = EffectVisualEffect(VFX_IMP_PULSE_FIRE);

View File

@ -66,7 +66,7 @@ void main()
if(manif.bCanManifest)
{
int bIsBioDispel = GetLocalInt(GetModule(),"BIODispel");
int nMLCap = min(10 + (2 * manif.nTimesAugOptUsed_1), manif.nManifesterLevel);
int nMLCap = PRCMin(10 + (2 * manif.nTimesAugOptUsed_1), manif.nManifesterLevel);
effect eVis = EffectVisualEffect(VFX_IMP_BREACH);
effect eImpact = EffectVisualEffect(VFX_FNF_DISPEL);
location lTarget = PRCGetSpellTargetLocation();

View File

@ -97,7 +97,7 @@ void main()
// Will save for half and not being dazed
if(PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS))
{
nDamage = max(nDamage / 2, 1); // Minimum 1 damage
nDamage = PRCMax(nDamage / 2, 1); // Minimum 1 damage
}
else if (GetHasMettle(oTarget, SAVING_THROW_WILL))
{

View File

@ -101,7 +101,7 @@ void main()
{
int nMaxDamage = GetLocalInt(oManifester, EMPATHIC_FEEDBACK_VARNAME);
int nDamageTaken = GetTotalDamageDealt();
int nDamage = min(nMaxDamage, nDamageTaken);
int nDamage = PRCMin(nMaxDamage, nDamageTaken);
// Use positive damage, it's unlikelier to be resisted than magic damage
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_POSITIVE);

View File

@ -84,7 +84,7 @@ int DoPower(object oManifester, object oTarget, struct manifestation manif)
{
int nDC = GetManifesterDC(oManifester);
int nPen = GetPsiPenetration(oManifester);
int nMaxTran = min(50 + (10 * manif.nTimesAugOptUsed_1), // Maximum transferrable is 50 + 10* augmentation
int nMaxTran = PRCMin(50 + (10 * manif.nTimesAugOptUsed_1), // Maximum transferrable is 50 + 10* augmentation
GetMaxHitPoints(oManifester) - GetCurrentHitPoints(oManifester) // Limited to the amount of damage the manifester has actually suffered
);
if (DEBUG) DoDebug("Transfer Cap: " + IntToString(nMaxTran));

View File

@ -72,7 +72,7 @@ void main()
PRCSignalSpellEvent(oTarget, TRUE, manif.nSpellID, manif.oManifester);
// Roll damage
nDamage = MetaPsionicsDamage(manif, nDieSize, nNumberOfDice, min(manif.nManifesterLevel, 20), enAdj.nBonusPerDie, TRUE, FALSE);
nDamage = MetaPsionicsDamage(manif, nDieSize, nNumberOfDice, PRCMin(manif.nManifesterLevel, 20), enAdj.nBonusPerDie, TRUE, FALSE);
// Target-specific stuff
nDamage = GetTargetSpecificChangesToDamage(oTarget, manif.oManifester, nDamage, TRUE, TRUE);

View File

@ -139,7 +139,7 @@ void main()
PRCSignalSpellEvent(oTarget, TRUE, manif.nSpellID, oManifester);
// Test HP limits
nTestHP = max(0, GetCurrentHitPoints(oTarget));
nTestHP = PRCMax(0, GetCurrentHitPoints(oTarget));
if(GetCurrentHitPoints(oTarget) <= 30 &&
GetCurrentHitPoints(oTarget) <= nHPAffectable
)

View File

@ -59,7 +59,7 @@ void main()
if(manif.bCanManifest)
{
int nBonus = max(manif.nManifesterLevel, 25);
int nBonus = PRCMax(manif.nManifesterLevel, 25);
effect eLink = EffectVisualEffect(VFX_DUR_GLOBE_MINOR);
float fDuration = 6.0f;
if(manif.bExtend) fDuration *= 2;

View File

@ -84,7 +84,7 @@ void main()
int nLevels = 1 + manif.nTimesAugOptUsed_1;
int nOrigXP = GetXP(oTarget);
int nOrigHD = GetHitDice(oTarget);
int nTargetHD = max(1, nOrigHD - nLevels);
int nTargetHD = PRCMax(1, nOrigHD - nLevels);
int nXPCost = nLevels *
(GetPRCSwitch(PRC_PSI_PSYCHIC_REFORMATION_NERF) == 2 ?
25 : // If nerf is set, the XP cost may also be reduced to 25 per level

View File

@ -64,7 +64,7 @@ void main()
{
int nDC = GetManifesterDC(oManifester);
int nPen = GetPsiPenetration(oManifester);
int nDispelLevel = max(manif.nManifesterLevel, 20);
int nDispelLevel = PRCMax(manif.nManifesterLevel, 20);
int nEffectSID, nRemoveDC;
effect eVisLink = EffectVisualEffect(VFX_IMP_BREACH);
eVisLink = EffectLinkEffects(eVisLink, EffectVisualEffect(VFX_FNF_DISPEL));

View File

@ -171,7 +171,7 @@ void main()
ApplyAbilityDamage(oTarget, ABILITY_STRENGTH, 1, DURATION_TYPE_TEMPORARY, TRUE, -1.0f);
// Keep track of how many times we've drained the person, which is one more than previous
nGainedFromCurrent = min(nGainedFromCurrent + 1, nMaxBonus); // Do not allow the value to exceed the max bonus. It probably doesn't matter, but it's ugly :P
nGainedFromCurrent = PRCMin(nGainedFromCurrent + 1, nMaxBonus); // Do not allow the value to exceed the max bonus. It probably doesn't matter, but it's ugly :P
SetLocalInt(oManifester, "PRC_Power_SomE_STRGainedFrom_" + ObjectToString(oTarget), nGainedFromCurrent);
// Check ff the amount gained from current target is greater than the current bonus, but not higher than the maximum

View File

@ -22,7 +22,7 @@ void main()
int nDam = (nDamageType == DAMAGE_TYPE_SONIC) ? d4(nLevel) : d6(nLevel); //reduced damage dice
if((nDamageType == DAMAGE_TYPE_COLD) || (nDamageType == DAMAGE_TYPE_ELECTRICAL) || (nDamageType == DAMAGE_TYPE_ACID))
nDam = max(nLevel, nDam - nLevel); //minimum of 1 per die
nDam = PRCMax(nLevel, nDam - nLevel); //minimum of 1 per die
if(!GetIsReactionTypeFriendly(oTarget))
{

View File

@ -44,7 +44,7 @@ void main()
int nDam = (nDamageType == DAMAGE_TYPE_SONIC) ? d4(nDice) : d6(nDice); //reduced damage dice
if((nDamageType == DAMAGE_TYPE_COLD) || (nDamageType == DAMAGE_TYPE_ELECTRICAL) || (nDamageType == DAMAGE_TYPE_ACID))
nDam = max(nDice, nDam - nDice); //minimum of 1 per die
nDam = PRCMax(nDice, nDam - nDice); //minimum of 1 per die
// Damage damage type is the simple case, just get the total damage
// of the spell's type, apply metamagic and roll the save.

Some files were not shown because too many files have changed in this diff Show More