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:
parent
370b29e917
commit
e641b42f84
110
Notes/PRC8 Psionics Cheatsheet.txt
Normal file
110
Notes/PRC8 Psionics Cheatsheet.txt
Normal 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 character’s power points.
|
||||||
|
|
||||||
|
- ResetPowerPoints(object oChar)
|
||||||
|
- Resets a character’s power points to maximum.
|
||||||
|
|
||||||
|
- GainPowerPoints(object oChar, int nGain, int bCanExceedMax = FALSE, int bInform = TRUE)
|
||||||
|
- Increases a character’s power points, possibly beyond the maximum.
|
||||||
|
|
||||||
|
- LosePowerPoints(object oChar, int nLoss, int bInform = TRUE)
|
||||||
|
- Deducts from a character’s power points without going below zero.
|
||||||
|
|
||||||
|
- LoseAllPowerPoints(object oChar, int bInform = TRUE)
|
||||||
|
- Sets a character’s 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.
|
@ -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
BIN
Release/PRC8_20250129.7z
Normal file
Binary file not shown.
BIN
_backup/PRC8_20250128.7z
Normal file
BIN
_backup/PRC8_20250128.7z
Normal file
Binary file not shown.
@ -220,8 +220,8 @@
|
|||||||
216 WP_Light_Pick 7940 3 1 0
|
216 WP_Light_Pick 7940 3 1 0
|
||||||
217 WP_Falchion 7943 3 1 0
|
217 WP_Falchion 7943 3 1 0
|
||||||
218 WP_Maul 7947 3 1 0
|
218 WP_Maul 7947 3 1 0
|
||||||
219 FEAT_CHARMING_THE_ARROW 25997 3 1 0
|
219 FEAT_CHARMING_THE_ARROW 25997 1 -1 0
|
||||||
220 FEAT_MARTIAL_STALKER 25998 3 1 0
|
220 FEAT_MARTIAL_STALKER 25998 1 -1 0
|
||||||
221 Expertise 389 1 -1 0
|
221 Expertise 389 1 -1 0
|
||||||
222 ImpExpertise 390 1 -1 0
|
222 ImpExpertise 390 1 -1 0
|
||||||
223 GreatCleave 391 1 -1 0
|
223 GreatCleave 391 1 -1 0
|
||||||
|
@ -14267,7 +14267,7 @@
|
|||||||
14263 Prevenom **** 1 1 1 1 0
|
14263 Prevenom **** 1 1 1 1 0
|
||||||
14264 PrevenomWeapon **** 1 1 1 1 1
|
14264 PrevenomWeapon **** 1 1 1 1 1
|
||||||
14265 GripOfIron **** 1 1 1 1 0
|
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
|
14267 **Level_6_Powers** **** 1 1 1 **** 0
|
||||||
14268 **Level_6_Powers** **** 1 1 1 **** 0
|
14268 **Level_6_Powers** **** 1 1 1 **** 0
|
||||||
14269 **Level_6_Powers** **** 1 1 1 **** 0
|
14269 **Level_6_Powers** **** 1 1 1 **** 0
|
||||||
|
@ -5361,7 +5361,7 @@
|
|||||||
5357 Factotum_Cunning_Knowledge 16824532 16826316 fot_oracle **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 3903 **** 1 -1 **** 1 **** **** **** **** **** **** **** **** **** **** 4 **** **** **** **** **** 0 0
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
25897 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
25898 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
25898 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
25899 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
25899 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
25900 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
25900 "## START PRC8 HIDDEN TALENT FEATS ##" **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
25901 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
25947 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
25948 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
25948 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
25949 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
25949 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
@ -25998,8 +25998,15 @@
|
|||||||
25994 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
25994 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
25995 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
25995 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
25996 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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
|
25997 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
25998 FEAT_MARTIAL_STALKER 16990314 16990315 IR_NINJA **** **** **** **** **** **** **** **** 2488 45 0 0 1 **** **** **** **** 0.5 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_MARTIAL_STALKER 5 0 **** **** **** **** 0 0
|
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 "#BEGIN PRC8 WOL RESERVE#" **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
25999 FEAT_MARTIAL_STALKER 16990314 16990315 IR_NINJA **** **** **** **** **** **** **** **** 2488 45 0 0 1 **** **** **** **** 0.5 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_MARTIAL_STALKER 5 0 **** **** **** **** 0 0
|
||||||
26000 Bullybasher_GiantBearing 16977316 16977317 is_giantbearing **** **** **** **** **** **** **** **** **** **** 0 0 0 **** **** 16553 **** 0.5 **** **** 1 **** **** **** **** **** **** **** **** **** WOL_BULLY_GIANT 6 0 **** **** **** **** 0 0
|
26000 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
26001 FEAT_VOWOFPOVERTY 16977318 16977319 ife_sacredvow **** **** **** **** **** **** **** **** **** **** 0 0 1 **** **** **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_VOWOFPOVERTY 6 **** **** **** **** **** 0 0
|
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
|
||||||
|
@ -585,11 +585,11 @@
|
|||||||
581 16828014 DaylightAdaptation 0.01 4592
|
581 16828014 DaylightAdaptation 0.01 4592
|
||||||
582 16835930 ACP_HEAVY_FEAT 0.01 3480
|
582 16835930 ACP_HEAVY_FEAT 0.01 3480
|
||||||
583 16835931 ACP_UNARMED_FEAT 0.01 3481
|
583 16835931 ACP_UNARMED_FEAT 0.01 3481
|
||||||
584 **** ReservedForISCAndESS **** ****
|
584 16823582 FEAT_AUGMENT_PSIONICS_QUICKSELECTS 0.01 3550
|
||||||
585 **** ReservedForISCAndESS **** ****
|
585 16823584 FEAT_AUGMENT_PSIONICS_DIGITS_0_4 0.01 3551
|
||||||
586 **** ReservedForISCAndESS **** ****
|
586 16823585 FEAT_AUGMENT_PSIONICS_DIGITS_5_9 0.01 3552
|
||||||
587 **** ReservedForISCAndESS **** ****
|
587 16823586 FEAT_AUGMENT_PSIONICS_TENS 0.01 3553
|
||||||
588 **** ReservedForISCAndESS **** ****
|
588 16823582 FEAT_AUGMENT_QUICKSELECTS_2 0.01 3563
|
||||||
589 **** ReservedForISCAndESS **** ****
|
589 **** ReservedForISCAndESS **** ****
|
||||||
590 **** ReservedForISCAndESS **** ****
|
590 **** ReservedForISCAndESS **** ****
|
||||||
591 **** ReservedForISCAndESS **** ****
|
591 **** ReservedForISCAndESS **** ****
|
||||||
|
@ -116,3 +116,14 @@
|
|||||||
112 FocusedLexicon 16827469 16827468 ife_racehate
|
112 FocusedLexicon 16827469 16827468 ife_racehate
|
||||||
113 UtteranceFocus 16827483 16827482 ife_foc_spel
|
113 UtteranceFocus 16827483 16827482 ife_foc_spel
|
||||||
114 ReserveFeats 16852238 16852239 ife_foc_spel
|
114 ReserveFeats 16852238 16852239 ife_foc_spel
|
||||||
|
115 **** **** **** ****
|
||||||
|
116 **** **** **** ****
|
||||||
|
117 **** **** **** ****
|
||||||
|
118 **** **** **** ****
|
||||||
|
119 **** **** **** ****
|
||||||
|
120 **** **** **** ****
|
||||||
|
121 **** **** **** ****
|
||||||
|
122 **** **** **** ****
|
||||||
|
123 **** **** **** ****
|
||||||
|
124 **** **** **** ****
|
||||||
|
125 **** **** **** ****
|
||||||
|
30
nwn/nwnprc/trunk/2das/prc_vop_feats.2da
Normal file
30
nwn/nwnprc/trunk/2das/prc_vop_feats.2da
Normal 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 **** **** **** **** **** **** ****
|
@ -145,7 +145,7 @@
|
|||||||
141 STILL_MIND_COMPETANCE_BONUS 2
|
141 STILL_MIND_COMPETANCE_BONUS 2
|
||||||
142 FEARLESS_MORALE_BONUS 2
|
142 FEARLESS_MORALE_BONUS 2
|
||||||
143 RANGED_ATTACK_IN_MELEE_RANGE 4
|
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
|
145 POINT_BLANK_SHOT_ATTACK_BONUS 1
|
||||||
146 POINT_BLANK_SHOT_DAMAGE_BONUS 1
|
146 POINT_BLANK_SHOT_DAMAGE_BONUS 1
|
||||||
147 MOBILITY_DODGE_BONUS 4
|
147 MOBILITY_DODGE_BONUS 4
|
||||||
@ -193,14 +193,14 @@
|
|||||||
189 RESIST_DISEASE_BONUS 4
|
189 RESIST_DISEASE_BONUS 4
|
||||||
190 FIRING_INTO_MELEE_MODIFIER -4
|
190 FIRING_INTO_MELEE_MODIFIER -4
|
||||||
191 RESISTANCE_TO_ENERGY 5
|
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
|
193 DIRTY_FIGHTING_NUM_ATTACKS_PER_ROUND 1
|
||||||
194 DENEIRS_EYE_SAVE_BONUS 2
|
194 DENEIRS_EYE_SAVE_BONUS 2
|
||||||
195 LLIIRAS_HEART_SAVE_BONUS 2
|
195 LLIIRAS_HEART_SAVE_BONUS 2
|
||||||
196 EXTRA_SMITING_BONUS_USES 2
|
196 EXTRA_SMITING_BONUS_USES 2
|
||||||
197 SPELLCRAFT_NUM_RANKS_PER_SAVE_BONUS 5
|
197 SPELLCRAFT_NUM_RANKS_PER_SAVE_BONUS 0
|
||||||
198 **** ****
|
198 **** ****
|
||||||
199 MAX_AC_DODGE_MOD 20
|
199 MAX_AC_DODGE_MOD 30
|
||||||
200 **** ****
|
200 **** ****
|
||||||
201 PRESTIGE_ENCHANT_ARROW_1_BONUS 1
|
201 PRESTIGE_ENCHANT_ARROW_1_BONUS 1
|
||||||
202 PRESTIGE_ENCHANT_ARROW_2_BONUS 2
|
202 PRESTIGE_ENCHANT_ARROW_2_BONUS 2
|
||||||
|
@ -1,42 +1,42 @@
|
|||||||
2DA V2.0
|
2DA V2.0
|
||||||
|
|
||||||
Label Name Description Icon Untrained KeyAbility ArmorCheckPenalty AllClassesCanUse Category MaxCR Constant HostileSkill
|
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 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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
38 CraftGeneral 16832369 16832370 isk_X2CArm 1 INT 0 1 **** **** SKILL_CRAFT_GENERAL 0 0
|
||||||
|
@ -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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
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 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
14267 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
14268 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
14268 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
14269 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
14269 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** ****
|
||||||
|
BIN
nwn/nwnprc/trunk/gfx/ife_chosen_evil.tga
Normal file
BIN
nwn/nwnprc/trunk/gfx/ife_chosen_evil.tga
Normal file
Binary file not shown.
@ -334,7 +334,7 @@ void DispelMagicBestMod(object oTarget, int nCasterLevel)
|
|||||||
{
|
{
|
||||||
int nExist = GetLocalInt(OBJECT_SELF, "CaptureMagic");
|
int nExist = GetLocalInt(OBJECT_SELF, "CaptureMagic");
|
||||||
int nSpellLevel = StringToInt(Get2DACache("spells", "Innate", nEffectSpellID));
|
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)
|
if (GetLevelByClass(CLASS_TYPE_NOCTUMANCER) >= 10)
|
||||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(EffectSpellImmunity(nEffectSpellID)), OBJECT_SELF, 60.0);
|
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 nExist = GetLocalInt(OBJECT_SELF, "CaptureMagic");
|
||||||
int nSpellLevel = StringToInt(Get2DACache("spells", "Innate", nEffectSpellID));
|
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)
|
if (GetLevelByClass(CLASS_TYPE_NOCTUMANCER) >= 10)
|
||||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(EffectSpellImmunity(nEffectSpellID)), OBJECT_SELF, 60.0);
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(EffectSpellImmunity(nEffectSpellID)), OBJECT_SELF, 60.0);
|
||||||
}
|
}
|
||||||
|
@ -453,7 +453,7 @@ void CreateSpiritualWeapon(object oCaster, float fDuration, int nClass)
|
|||||||
int iCasterLvL = PRCGetCasterLevel(oCaster);
|
int iCasterLvL = PRCGetCasterLevel(oCaster);
|
||||||
int nBAB = GetBaseAttackBonus(oCaster);
|
int nBAB = GetBaseAttackBonus(oCaster);
|
||||||
int nAttNumber = 1+(nBAB / 4);
|
int nAttNumber = 1+(nBAB / 4);
|
||||||
int nDamBonus = min(5, iCasterLvL / 3);
|
int nDamBonus = PRCMin(5, iCasterLvL / 3);
|
||||||
int nPenetr = iCasterLvL + SPGetPenetr();
|
int nPenetr = iCasterLvL + SPGetPenetr();
|
||||||
int nStat = nClass == CLASS_TYPE_INVALID ?
|
int nStat = nClass == CLASS_TYPE_INVALID ?
|
||||||
GetAbilityModifier(ABILITY_CHARISMA, oCaster) ://:: if cast from items use charisma by default
|
GetAbilityModifier(ABILITY_CHARISMA, oCaster) ://:: if cast from items use charisma by default
|
||||||
@ -804,7 +804,7 @@ void HandleSpiritualWeaponUnequipEvent()
|
|||||||
int nCasterLevel = PRCGetCasterLevel(oCaster);
|
int nCasterLevel = PRCGetCasterLevel(oCaster);
|
||||||
int nDuration = nCasterLevel;
|
int nDuration = nCasterLevel;
|
||||||
int nPenetr = nCasterLevel + SPGetPenetr();
|
int nPenetr = nCasterLevel + SPGetPenetr();
|
||||||
int nDamBonus = min(5, nCasterLevel / 3);
|
int nDamBonus = PRCMin(5, nCasterLevel / 3);
|
||||||
float fDuration = IntToFloat(nDuration);
|
float fDuration = IntToFloat(nDuration);
|
||||||
|
|
||||||
// Log the event for debugging
|
// Log the event for debugging
|
||||||
|
@ -32,7 +32,7 @@ const int ACTION_USE_ITEM_TMI_LIMIT = 1500;
|
|||||||
* @param b Another integer
|
* @param b Another integer
|
||||||
* @return a iff a is greater than b, otherwise b
|
* @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.
|
* Returns the lesser of the two values passed to it.
|
||||||
@ -41,7 +41,7 @@ int max(int a, int b);
|
|||||||
* @param b Another integer
|
* @param b Another integer
|
||||||
* @return a iff a is lesser than b, otherwise b
|
* @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.
|
* Returns the greater of the two values passed to it.
|
||||||
@ -50,7 +50,7 @@ int min(int a, int b);
|
|||||||
* @param b Another float
|
* @param b Another float
|
||||||
* @return a iff a is greater than b, otherwise b
|
* @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.
|
* Returns the lesser of the two values passed to it.
|
||||||
@ -59,7 +59,7 @@ float fmax(float a, float b);
|
|||||||
* @param b Another float
|
* @param b Another float
|
||||||
* @return a iff a is lesser than b, otherwise b
|
* @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
|
* 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,
|
* 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.
|
* they can be interpreted at run time and produce rbg scales between 32 and 255 in increments.
|
||||||
* -- allows 3375 colors to be made.
|
* -- 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:
|
* more examples:
|
||||||
*
|
*
|
||||||
* GetRGB() := WHITE // no parameters, default is white
|
* PRCGetRGB() := WHITE // no parameters, default is white
|
||||||
* GetRGB(15,15,1):= YELLOW
|
* PRCGetRGB(15,15,1):= YELLOW
|
||||||
* GetRGB(15,5,1) := ORANGE
|
* PRCGetRGB(15,5,1) := ORANGE
|
||||||
* GetRGB(15,1,1) := RED
|
* PRCGetRGB(15,1,1) := RED
|
||||||
* GetRGB(7,7,15) := BLUE
|
* PRCGetRGB(7,7,15) := BLUE
|
||||||
* GetRGB(1,15,1) := NEON GREEN
|
* PRCGetRGB(1,15,1) := NEON GREEN
|
||||||
* GetRGB(1,11,1) := GREEN
|
* PRCGetRGB(1,11,1) := GREEN
|
||||||
* GetRGB(9,6,1) := BROWN
|
* PRCGetRGB(9,6,1) := BROWN
|
||||||
* GetRGB(11,9,11):= LIGHT PURPLE
|
* PRCGetRGB(11,9,11):= LIGHT PURPLE
|
||||||
* GetRGB(12,10,7):= TAN
|
* PRCGetRGB(12,10,7):= TAN
|
||||||
* GetRGB(8,1,8) := PURPLE
|
* PRCGetRGB(8,1,8) := PURPLE
|
||||||
* GetRGB(13,9,13):= PLUM
|
* PRCGetRGB(13,9,13):= PLUM
|
||||||
* GetRGB(1,7,7) := TEAL
|
* PRCGetRGB(1,7,7) := TEAL
|
||||||
* GetRGB(1,15,15):= CYAN
|
* PRCGetRGB(1,15,15):= CYAN
|
||||||
* GetRGB(1,1,15) := BRIGHT BLUE
|
* PRCGetRGB(1,1,15) := BRIGHT BLUE
|
||||||
*
|
*
|
||||||
* issues? contact genji@thegenji.com
|
* issues? contact genji@thegenji.com
|
||||||
* special thanks to ADAL-Miko and Rich Dersheimer in the bio forums.
|
* 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
|
* 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.
|
* @param s The string to trim.
|
||||||
*/
|
*/
|
||||||
string TrimString(string s);
|
string PRCTrimString(string s);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compares the given two strings lexicographically.
|
* Compares the given two strings lexicographically.
|
||||||
@ -584,13 +584,13 @@ const int ERROR_CODE_5_ONCE_MORE5 = -1;
|
|||||||
* Function Definitions *
|
* 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)
|
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");
|
object coloringBook = GetObjectByTag("ColoringBook");
|
||||||
if (coloringBook == OBJECT_INVALID)
|
if (coloringBook == OBJECT_INVALID)
|
||||||
@ -953,7 +953,7 @@ void ForceEquip(object oPC, object oItem, int nSlot, int nThCall = 0)
|
|||||||
AssignCommand(oPC, ActionEquipItem(oItem, nSlot));
|
AssignCommand(oPC, ActionEquipItem(oItem, nSlot));
|
||||||
}
|
}
|
||||||
// Use a lenghtening delay in order to attempt handling lag and possible other interference. From 0.1s to 1s
|
// 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
|
// Loop
|
||||||
@ -995,7 +995,7 @@ void ForceUnequip(object oPC, object oItem, int nSlot, int nThCall = 0)
|
|||||||
AssignCommand(oPC, ActionUnequipItem(oItem));
|
AssignCommand(oPC, ActionUnequipItem(oItem));
|
||||||
|
|
||||||
// Ramp up the delay if the action is not getting through. Might let whatever is intefering finish
|
// 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
|
// The item has already been unequipped
|
||||||
else
|
else
|
||||||
@ -1051,7 +1051,7 @@ string BooleanToString(int bool, int bTLK = FALSE)
|
|||||||
(bool ? "True" : "False");
|
(bool ? "True" : "False");
|
||||||
}
|
}
|
||||||
|
|
||||||
string TrimString(string s)
|
string PRCTrimString(string s)
|
||||||
{
|
{
|
||||||
int nCrop = 0;
|
int nCrop = 0;
|
||||||
string temp;
|
string temp;
|
||||||
@ -1105,7 +1105,7 @@ int StringCompare(string s1, string s2)
|
|||||||
// Start comparing
|
// Start comparing
|
||||||
int nT,
|
int nT,
|
||||||
i = 0,
|
i = 0,
|
||||||
nMax = min(GetStringLength(s1), GetStringLength(s2));
|
nMax = PRCMin(GetStringLength(s1), GetStringLength(s2));
|
||||||
while(i < nMax)
|
while(i < nMax)
|
||||||
{
|
{
|
||||||
// Get the difference between the values of i:th characters
|
// 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));
|
AssignCommand(oPC, ActionPutDownItem(oItem));
|
||||||
|
|
||||||
// Ramp up the delay if the action is not getting through. Might let whatever is intefering finish
|
// 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
|
// The item has already been unequipped
|
||||||
else
|
else
|
||||||
|
@ -204,7 +204,7 @@ int GetInvokerLevel(object oInvoker = OBJECT_SELF, int nSpecificClass = CLASS_TY
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if(nSpecificClass == CLASS_TYPE_DRAGON_SHAMAN)
|
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
|
else
|
||||||
nLevel = GetLevelByClass(nSpecificClass, oInvoker);
|
nLevel = GetLevelByClass(nSpecificClass, oInvoker);
|
||||||
if(DEBUG) DoDebug("Invoker Class Level is: " + IntToString(nLevel));
|
if(DEBUG) DoDebug("Invoker Class Level is: " + IntToString(nLevel));
|
||||||
@ -256,7 +256,7 @@ int GetHighestInvokerLevel(object oCreature)
|
|||||||
|
|
||||||
/* 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(2, oCreature) != CLASS_TYPE_INVALID ? GetInvokerLevel(oCreature, GetClassByPosition(2, oCreature)) : 0
|
||||||
),
|
),
|
||||||
GetClassByPosition(3, oCreature) != CLASS_TYPE_INVALID ? GetInvokerLevel(oCreature, GetClassByPosition(3, oCreature)) : 0
|
GetClassByPosition(3, oCreature) != CLASS_TYPE_INVALID ? GetInvokerLevel(oCreature, GetClassByPosition(3, oCreature)) : 0
|
||||||
|
@ -204,7 +204,7 @@ int GetIncarnumLevelForClass(int nSpecificClass, object oMeldshaper)
|
|||||||
|
|
||||||
int GetHighestMeldshaperLevel(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(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
|
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;
|
int nCon = GetAbilityScore(oMeldshaper, ABILITY_CONSTITUTION, TRUE)-10;
|
||||||
if (GetHasFeat(FEAT_UNDEAD_MELDSHAPER, oMeldshaper)) nCon = GetAbilityScore(oMeldshaper, ABILITY_WISDOM, 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
|
//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));
|
//if (DEBUG) DoDebug("GetMaxShapeSoulmeldCount is "+IntToString(nMax));
|
||||||
return nMax;
|
return nMax;
|
||||||
@ -856,7 +856,7 @@ void InvestEssentia(object oMeldshaper, int nMeld, int nEssentia)
|
|||||||
}
|
}
|
||||||
int nClass = GetMeldShapedClass(oMeldshaper, nMeld);
|
int nClass = GetMeldShapedClass(oMeldshaper, nMeld);
|
||||||
// Special capacity of 1/2 class level
|
// 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);
|
else if (nEssentia > GetMaxEssentiaCapacity(oMeldshaper, nClass, nMeld)) nEssentia = GetMaxEssentiaCapacity(oMeldshaper, nClass, nMeld);
|
||||||
// Can't invest more than you have
|
// Can't invest more than you have
|
||||||
if (nEssentia > GetTotalUsableEssentia(oMeldshaper)) nEssentia = GetTotalUsableEssentia(oMeldshaper);
|
if (nEssentia > GetTotalUsableEssentia(oMeldshaper)) nEssentia = GetTotalUsableEssentia(oMeldshaper);
|
||||||
@ -1176,7 +1176,7 @@ int GetMaxEssentiaCapacityFeat(object oMeldshaper)
|
|||||||
else if (nHD >= 6) nMax = 2;
|
else if (nHD >= 6) nMax = 2;
|
||||||
|
|
||||||
if (GetLocalInt(oMeldshaper, "DivineSoultouch")) nMax += 1;
|
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;
|
if (GetHasFeat(FEAT_IMPROVED_ESSENTIA_CAPACITY, oMeldshaper)) nMax += 1;
|
||||||
|
|
||||||
// Don't allow more than they have
|
// Don't allow more than they have
|
||||||
|
@ -188,15 +188,15 @@ int GetArmourCheckPenaltyReduction(object oItem)
|
|||||||
int nACPenalty = GetItemArmourCheckPenalty(oItem);
|
int nACPenalty = GetItemArmourCheckPenalty(oItem);
|
||||||
if(nMaterial & PRC_CRAFT_FLAG_MASTERWORK)
|
if(nMaterial & PRC_CRAFT_FLAG_MASTERWORK)
|
||||||
{
|
{
|
||||||
nBonus = min(1, nACPenalty);
|
nBonus = PRCMin(1, nACPenalty);
|
||||||
}
|
}
|
||||||
if(nMaterial & PRC_CRAFT_FLAG_DARKWOOD)
|
if(nMaterial & PRC_CRAFT_FLAG_DARKWOOD)
|
||||||
{
|
{
|
||||||
nBonus = min(2, nACPenalty);
|
nBonus = PRCMin(2, nACPenalty);
|
||||||
}
|
}
|
||||||
if(nMaterial & PRC_CRAFT_FLAG_MITHRAL)
|
if(nMaterial & PRC_CRAFT_FLAG_MITHRAL)
|
||||||
{
|
{
|
||||||
nBonus = min(3, nACPenalty);
|
nBonus = PRCMin(3, nACPenalty);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nBonus;
|
return nBonus;
|
||||||
@ -986,7 +986,7 @@ int CheckGolemPrereq(object oPC, int nLine, int bEpic)
|
|||||||
int nLevel;
|
int nLevel;
|
||||||
int j = 0;
|
int j = 0;
|
||||||
//replace the arti level check later when PrCs are added
|
//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 nManifesterLevel = GetManifesterLevel(oPC);
|
||||||
int nTemp, nLength, nPosition;
|
int nTemp, nLength, nPosition;
|
||||||
int bArtificer = (GetLevelByClass(CLASS_TYPE_ARTIFICER, oPC) > 0);
|
int bArtificer = (GetLevelByClass(CLASS_TYPE_ARTIFICER, oPC) > 0);
|
||||||
@ -999,7 +999,7 @@ int CheckGolemPrereq(object oPC, int nLine, int bEpic)
|
|||||||
else if(sPropertyType == "P")
|
else if(sPropertyType == "P")
|
||||||
nLevel = nManifesterLevel;
|
nLevel = nManifesterLevel;
|
||||||
else
|
else
|
||||||
nLevel = max(nCasterLevel, nManifesterLevel);
|
nLevel = PRCMax(nCasterLevel, nManifesterLevel);
|
||||||
if(!bEpic && Get2DACache(sFile, "Epic", nLine) == "1")
|
if(!bEpic && Get2DACache(sFile, "Epic", nLine) == "1")
|
||||||
return FALSE;
|
return FALSE;
|
||||||
else if(nLevel < StringToInt(Get2DACache(sFile, "Level", nLine)))
|
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 nLevel;
|
||||||
int j = 0;
|
int j = 0;
|
||||||
//replace the arti level check later when PrCs are added
|
//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_BATTLESMITH) * 3;
|
||||||
nCasterLevel += GetLevelByClass(CLASS_TYPE_IRONSOUL_FORGEMASTER) * 3;
|
nCasterLevel += GetLevelByClass(CLASS_TYPE_IRONSOUL_FORGEMASTER) * 3;
|
||||||
int nManifesterLevel = GetManifesterLevel(oPC);
|
int nManifesterLevel = GetManifesterLevel(oPC);
|
||||||
@ -1064,7 +1064,7 @@ int CheckPrereq(object oPC, int nLine, int bEpic, string sFile, struct itemvars
|
|||||||
else if(sPropertyType == "P")
|
else if(sPropertyType == "P")
|
||||||
nLevel = nManifesterLevel;
|
nLevel = nManifesterLevel;
|
||||||
else
|
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);
|
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 nEnhancement;
|
||||||
int nSpellPattern;
|
int nSpellPattern;
|
||||||
int nSpell1, nSpell2, nSpell3, nSpellOR1, nSpellOR2;
|
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 nManifesterLevel = GetManifesterLevel(oPC);
|
||||||
int nLevel;
|
int nLevel;
|
||||||
int nFileEnd = PRCGetFileEnd(sFile);
|
int nFileEnd = PRCGetFileEnd(sFile);
|
||||||
|
@ -1560,6 +1560,12 @@ const int FEAT_SANCTIFY_MARTIAL_SICKLE = 3169;
|
|||||||
const int FEAT_SANCTIFY_MARTIAL_MINDBLADE = 3623;
|
const int FEAT_SANCTIFY_MARTIAL_MINDBLADE = 3623;
|
||||||
const int FEAT_SANCTIFY_MARTIAL_WHIP = 3596;
|
const int FEAT_SANCTIFY_MARTIAL_WHIP = 3596;
|
||||||
const int FEAT_SANCTIFY_MARTIAL_TRIDENT = 3597;
|
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
|
//heartwarder
|
||||||
const int FEAT_CHARISMA_INC1 = 3230;
|
const int FEAT_CHARISMA_INC1 = 3230;
|
||||||
@ -2493,7 +2499,13 @@ const int FEAT_WEAPON_OF_CHOICE_MINDBLADE = 3622;
|
|||||||
const int FEAT_MIND_CLEAVE = 24414;
|
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_MENTAL_RESISTANCE = 4812;
|
||||||
const int FEAT_HOSTILE_MIND = 4813;
|
const int FEAT_HOSTILE_MIND = 4813;
|
||||||
const int FEAT_FORCE_OF_WILL = 4814;
|
const int FEAT_FORCE_OF_WILL = 4814;
|
||||||
@ -5867,6 +5879,56 @@ const int FEAT_TIAMAT_SPELLCASTING_NONE = 19591;
|
|||||||
const int FEAT_DSONG_SPELLCASTING_NONE = 19592;
|
const int FEAT_DSONG_SPELLCASTING_NONE = 19592;
|
||||||
const int FEAT_OLLAM_SPELLCASTING_NONE = 19593;
|
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
|
//:: Test void
|
||||||
// void main (){}
|
// void main (){}
|
@ -418,7 +418,7 @@ void ApplyBreath(struct breath BreathUsed, location lTargetArea, int bLinger = F
|
|||||||
if (BreathUsed.nDCStat >= 10)
|
if (BreathUsed.nDCStat >= 10)
|
||||||
nSaveDC = BreathUsed.nDCStat;
|
nSaveDC = BreathUsed.nDCStat;
|
||||||
else
|
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
|
//Set up variables that depend on damage type
|
||||||
switch (BreathUsed.nDamageType)
|
switch (BreathUsed.nDamageType)
|
||||||
|
@ -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
|
// this is the Bioware implementation, which includes BAB from other classes and caps at 6
|
||||||
int GetMonkAttacks(int iBAB, int iHD)
|
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)
|
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
|
// Wilders get to add cha bonus to touch attacks only, but cannot exceed normal AC that way
|
||||||
if(GetHasFeat(FEAT_WILDER_ELUDE_TOUCH, oDefender))
|
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");
|
//if (DEBUG) DoDebug("GetDefenderAC: End Section #5");
|
||||||
return iAC;
|
return iAC;
|
||||||
@ -4880,7 +4880,7 @@ DoDebug("GetWeaponBonusDamage() found onhitcastspell with Spell type: " + IntToS
|
|||||||
iDamage = iDamageDarkfire + iDamageFlameWeapon;
|
iDamage = iDamageDarkfire + iDamageFlameWeapon;
|
||||||
else
|
else
|
||||||
// otherwise we take the maximum
|
// otherwise we take the maximum
|
||||||
iDamage = max(iDamageDarkfire, iDamageFlameWeapon);
|
iDamage = PRCMax(iDamageDarkfire, iDamageFlameWeapon);
|
||||||
if(iDamage)
|
if(iDamage)
|
||||||
{
|
{
|
||||||
// now either (if stacking) add the spell's fire damage to any other fire damage that is already on the weapon,
|
// 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)
|
if(bStack)
|
||||||
iDamage += GetDamageByConstant(weapBonusDam.dam_Fire, TRUE);
|
iDamage += GetDamageByConstant(weapBonusDam.dam_Fire, TRUE);
|
||||||
else
|
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
|
if(iDamage > 20) iDamage = 20; // make sure that the damage does not exceed 20
|
||||||
// convert integer damage back to DamageBonusConstant
|
// convert integer damage back to DamageBonusConstant
|
||||||
|
@ -73,7 +73,7 @@ void CheckForPnPHolyAvenger(object oItem);
|
|||||||
void _prc_inc_itmrstr_ApplySpeedIncrease(object oPC)
|
void _prc_inc_itmrstr_ApplySpeedIncrease(object oPC)
|
||||||
{
|
{
|
||||||
// Get target speed modification value. Limit to 99, since that's the effect constructor maximum value
|
// 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);
|
object oSkin = GetPCSkin(oPC);
|
||||||
|
|
||||||
AssignCommand(oSkin, _prc_inc_itmrstr_ApplySpeedModification(oPC, EFFECT_TYPE_MOVEMENT_SPEED_INCREASE, nSpeedMod));
|
AssignCommand(oSkin, _prc_inc_itmrstr_ApplySpeedModification(oPC, EFFECT_TYPE_MOVEMENT_SPEED_INCREASE, nSpeedMod));
|
||||||
|
@ -193,7 +193,7 @@ void DetectAlignmentRound(int nRound, location lLoc, int nGoodEvil, int nLawChao
|
|||||||
{
|
{
|
||||||
//presence/absence
|
//presence/absence
|
||||||
//ApplyEffectDetectAuraOnObject(AURA_STRENGTH_MODERATE, oCaster, nBeamVFX);
|
//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 != -1 ? // "good" and "evil" work as both substantives and adjectives, but not so for "lawful" and "chaotic"
|
||||||
(nLawChaos == ALIGNMENT_LAWFUL ?
|
(nLawChaos == ALIGNMENT_LAWFUL ?
|
||||||
GetStringByStrRef(4957) // "law"
|
GetStringByStrRef(4957) // "law"
|
||||||
@ -253,7 +253,7 @@ void DetectAlignmentRound(int nRound, location lLoc, int nGoodEvil, int nLawChao
|
|||||||
else if(nRound >= 3)
|
else if(nRound >= 3)
|
||||||
{
|
{
|
||||||
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
|
//strength & location
|
||||||
ActionDoCommand(ApplyEffectDetectAuraOnObject(nStrength, oTest, nBeamVFX));
|
ActionDoCommand(ApplyEffectDetectAuraOnObject(nStrength, oTest, nBeamVFX));
|
||||||
}
|
}
|
||||||
@ -264,7 +264,7 @@ void DetectAlignmentRound(int nRound, location lLoc, int nGoodEvil, int nLawChao
|
|||||||
{
|
{
|
||||||
//reporting
|
//reporting
|
||||||
//ApplyEffectDetectAuraOnObject(nStrongestAura, oCaster, nBeamVFX);
|
//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);
|
//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)
|
else if(nRound >= 3)
|
||||||
{
|
{
|
||||||
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
|
//strength & location
|
||||||
ActionDoCommand(ApplyEffectDetectAuraOnObject(nStrength, oTest, nBeamVFX));
|
ActionDoCommand(ApplyEffectDetectAuraOnObject(nStrength, oTest, nBeamVFX));
|
||||||
}
|
}
|
||||||
@ -382,7 +382,7 @@ void DetectMagicAura(int nRound, location lLoc, int nBeamVFX, float fDist)
|
|||||||
{
|
{
|
||||||
//reporting
|
//reporting
|
||||||
//ApplyEffectDetectAuraOnObject(nStrongestAura, oCaster, nBeamVFX);
|
//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);
|
//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)
|
else if(nRound >= 3)
|
||||||
{
|
{
|
||||||
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
|
//strength & location
|
||||||
ActionDoCommand(ApplyEffectDetectAuraOnObject(nStrength, oTest, nBeamVFX));
|
ActionDoCommand(ApplyEffectDetectAuraOnObject(nStrength, oTest, nBeamVFX));
|
||||||
}
|
}
|
||||||
@ -486,7 +486,7 @@ void DetectRaceAura(int nRound, int nRace, location lLoc, int nBeamVFX, float fD
|
|||||||
{
|
{
|
||||||
//reporting
|
//reporting
|
||||||
//ApplyEffectDetectAuraOnObject(nStrongestAura, oCaster, nBeamVFX);
|
//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);
|
//ActionPlayAnimation(ANIMATION_LOOPING_MEDITATE, 1.0, 6.0);
|
||||||
|
@ -174,7 +174,7 @@ void ScryMain(object oPC, object oTarget)
|
|||||||
{
|
{
|
||||||
// Caster level check or the Divination fails.
|
// Caster level check or the Divination fails.
|
||||||
// Max of 10
|
// 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);
|
FloatingTextStringOnCreature(GetName(oTarget) + " has Escape Detection active.", oPC, FALSE);
|
||||||
return;
|
return;
|
||||||
|
@ -1980,7 +1980,7 @@ void UpdateStoredTemplateInfo(object oShifter, int nShifterType, int nStart = 0)
|
|||||||
int nArraySize = GetNumberOfStoredTemplates(oShifter, nShifterType);
|
int nArraySize = GetNumberOfStoredTemplates(oShifter, nShifterType);
|
||||||
if(nStart < nArraySize)
|
if(nStart < nArraySize)
|
||||||
{
|
{
|
||||||
int nEnd = min(nStart + CHUNK_SIZE, nArraySize);
|
int nEnd = PRCMin(nStart + CHUNK_SIZE, nArraySize);
|
||||||
_UpdateStoredTemplateInfo(oShifter, nShifterType, nStart, nEnd);
|
_UpdateStoredTemplateInfo(oShifter, nShifterType, nStart, nEnd);
|
||||||
if(nEnd < nArraySize)
|
if(nEnd < nArraySize)
|
||||||
DelayCommand(0.0f, UpdateStoredTemplateInfo(oShifter, nShifterType, nEnd));
|
DelayCommand(0.0f, UpdateStoredTemplateInfo(oShifter, nShifterType, nEnd));
|
||||||
|
@ -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
|
// 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
|
// Loop
|
||||||
|
@ -197,7 +197,6 @@ const int IP_CONST_FEAT_SPRINGATTACK = 258;
|
|||||||
const int IP_CONST_FEAT_EVASION = 386;
|
const int IP_CONST_FEAT_EVASION = 386;
|
||||||
const int IP_CONST_FEAT_IMPEVASION = 387;
|
const int IP_CONST_FEAT_IMPEVASION = 387;
|
||||||
const int IP_CONST_FEAT_GREAT_CLEAVE = 260;
|
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_IMPROVED_INIT = 261;
|
||||||
const int IP_CONST_FEAT_BLOODED = 270;
|
const int IP_CONST_FEAT_BLOODED = 270;
|
||||||
|
|
||||||
@ -209,6 +208,15 @@ const int IP_CONST_FEAT_TELEPORT_MANAGEMENT_RADIAL = 263;
|
|||||||
|
|
||||||
const int IP_CONST_FEAT_EPIC_REST = 399;
|
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;
|
||||||
|
|
||||||
|
|
||||||
//:: PnP Weapon Feats
|
//:: PnP Weapon Feats
|
||||||
const int IP_CONST_FEAT_WEAPON_PROFICIENCY_SHORTSWORD = 4601;
|
const int IP_CONST_FEAT_WEAPON_PROFICIENCY_SHORTSWORD = 4601;
|
||||||
const int IP_CONST_FEAT_WEAPON_PROFICIENCY_LONGSWORD = 4602;
|
const int IP_CONST_FEAT_WEAPON_PROFICIENCY_LONGSWORD = 4602;
|
||||||
|
@ -183,7 +183,7 @@ int _prc_inc_GetItemACBonus(object oItem)
|
|||||||
while(GetIsItemPropertyValid(iProp))
|
while(GetIsItemPropertyValid(iProp))
|
||||||
{
|
{
|
||||||
if(GetItemPropertyType(iProp) == ITEM_PROPERTY_AC_BONUS && GetItemPropertyDurationType(iProp) == DURATION_TYPE_PERMANENT)
|
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);
|
iProp = GetNextItemProperty(oItem);
|
||||||
}
|
}
|
||||||
return nArmorBonus;
|
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.nNaturalBonus = GetItemACValue(GetItemInSlot(INVENTORY_SLOT_NECK, oTemplate));
|
||||||
|
|
||||||
ac_info.nDeflectionBonus = GetItemACValue(GetItemInSlot(INVENTORY_SLOT_HEAD, 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 = PRCMax(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 = PRCMax(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 = PRCMax(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 = PRCMax(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 = PRCMax(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 = PRCMax(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 = PRCMax(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 = PRCMax(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 = PRCMax(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 = PRCMax(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 = PRCMax(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_CARMOUR, oTemplate)));
|
||||||
|
|
||||||
object oOffHandItem = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oTemplate);
|
object oOffHandItem = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oTemplate);
|
||||||
ac_info.nShieldBase = 0;
|
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;
|
ac_info.nShieldBonus = GetItemACValue(oOffHandItem) - ac_info.nShieldBase;
|
||||||
break;
|
break;
|
||||||
default: //A weapon
|
default: //A weapon
|
||||||
ac_info.nDeflectionBonus = max(ac_info.nDeflectionBonus, GetItemACValue(oOffHandItem));
|
ac_info.nDeflectionBonus = PRCMax(ac_info.nDeflectionBonus, GetItemACValue(oOffHandItem));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -277,11 +277,11 @@ struct _prc_inc_ac_info_struct _prc_inc_ACInfo(object oTemplate)
|
|||||||
switch (GetBaseItemType(oArmsItem))
|
switch (GetBaseItemType(oArmsItem))
|
||||||
{
|
{
|
||||||
case BASE_ITEM_BRACER:
|
case BASE_ITEM_BRACER:
|
||||||
ac_info.nShieldBonus = max(ac_info.nShieldBonus, GetItemACValue(oArmsItem));
|
ac_info.nShieldBonus = PRCMax(ac_info.nShieldBonus, GetItemACValue(oArmsItem));
|
||||||
break;
|
break;
|
||||||
case BASE_ITEM_GLOVES:
|
case BASE_ITEM_GLOVES:
|
||||||
default:
|
default:
|
||||||
ac_info.nDeflectionBonus = max(ac_info.nDeflectionBonus, GetItemACValue(oArmsItem));
|
ac_info.nDeflectionBonus = PRCMax(ac_info.nDeflectionBonus, GetItemACValue(oArmsItem));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -296,7 +296,7 @@ struct _prc_inc_ac_info_struct _prc_inc_ACInfo(object oTemplate)
|
|||||||
if (ac_info.nShieldBonus > 20)
|
if (ac_info.nShieldBonus > 20)
|
||||||
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?
|
//TODO: make sure this isn't < 0?
|
||||||
|
|
||||||
return ac_info;
|
return ac_info;
|
||||||
@ -416,43 +416,43 @@ int _prc_inc_shifting_ShifterLevelRequirement(object oTemplate)
|
|||||||
|
|
||||||
// Size tests
|
// Size tests
|
||||||
if(nSize >= CREATURE_SIZE_HUGE)
|
if(nSize >= CREATURE_SIZE_HUGE)
|
||||||
nLevelRequired = max(nLevelRequired, 7);
|
nLevelRequired = PRCMax(nLevelRequired, 7);
|
||||||
if(nSize == CREATURE_SIZE_LARGE)
|
if(nSize == CREATURE_SIZE_LARGE)
|
||||||
nLevelRequired = max(nLevelRequired, 3);
|
nLevelRequired = PRCMax(nLevelRequired, 3);
|
||||||
if(nSize == CREATURE_SIZE_MEDIUM)
|
if(nSize == CREATURE_SIZE_MEDIUM)
|
||||||
nLevelRequired = max(nLevelRequired, 1);
|
nLevelRequired = PRCMax(nLevelRequired, 1);
|
||||||
if(nSize == CREATURE_SIZE_SMALL)
|
if(nSize == CREATURE_SIZE_SMALL)
|
||||||
nLevelRequired = max(nLevelRequired, 1);
|
nLevelRequired = PRCMax(nLevelRequired, 1);
|
||||||
if(nSize <= CREATURE_SIZE_TINY)
|
if(nSize <= CREATURE_SIZE_TINY)
|
||||||
nLevelRequired = max(nLevelRequired, 3);
|
nLevelRequired = PRCMax(nLevelRequired, 3);
|
||||||
|
|
||||||
// Type tests
|
// Type tests
|
||||||
if(nRacialType == RACIAL_TYPE_OUTSIDER)
|
if(nRacialType == RACIAL_TYPE_OUTSIDER)
|
||||||
nLevelRequired = max(nLevelRequired, 9);
|
nLevelRequired = PRCMax(nLevelRequired, 9);
|
||||||
if(nRacialType == RACIAL_TYPE_ELEMENTAL)
|
if(nRacialType == RACIAL_TYPE_ELEMENTAL)
|
||||||
nLevelRequired = max(nLevelRequired, 9);
|
nLevelRequired = PRCMax(nLevelRequired, 9);
|
||||||
if(nRacialType == RACIAL_TYPE_CONSTRUCT)
|
if(nRacialType == RACIAL_TYPE_CONSTRUCT)
|
||||||
nLevelRequired = max(nLevelRequired, 8);
|
nLevelRequired = PRCMax(nLevelRequired, 8);
|
||||||
if(nRacialType == RACIAL_TYPE_UNDEAD)
|
if(nRacialType == RACIAL_TYPE_UNDEAD)
|
||||||
nLevelRequired = max(nLevelRequired, 8);
|
nLevelRequired = PRCMax(nLevelRequired, 8);
|
||||||
if(nRacialType == RACIAL_TYPE_DRAGON)
|
if(nRacialType == RACIAL_TYPE_DRAGON)
|
||||||
nLevelRequired = max(nLevelRequired, 7);
|
nLevelRequired = PRCMax(nLevelRequired, 7);
|
||||||
if(nRacialType == RACIAL_TYPE_ABERRATION)
|
if(nRacialType == RACIAL_TYPE_ABERRATION)
|
||||||
nLevelRequired = max(nLevelRequired, 6);
|
nLevelRequired = PRCMax(nLevelRequired, 6);
|
||||||
if(nRacialType == RACIAL_TYPE_OOZE)
|
if(nRacialType == RACIAL_TYPE_OOZE)
|
||||||
nLevelRequired = max(nLevelRequired, 6);
|
nLevelRequired = PRCMax(nLevelRequired, 6);
|
||||||
if(nRacialType == RACIAL_TYPE_MAGICAL_BEAST)
|
if(nRacialType == RACIAL_TYPE_MAGICAL_BEAST)
|
||||||
nLevelRequired = max(nLevelRequired, 5);
|
nLevelRequired = PRCMax(nLevelRequired, 5);
|
||||||
if(nRacialType == RACIAL_TYPE_GIANT)
|
if(nRacialType == RACIAL_TYPE_GIANT)
|
||||||
nLevelRequired = max(nLevelRequired, 4);
|
nLevelRequired = PRCMax(nLevelRequired, 4);
|
||||||
if(nRacialType == RACIAL_TYPE_VERMIN)
|
if(nRacialType == RACIAL_TYPE_VERMIN)
|
||||||
nLevelRequired = max(nLevelRequired, 4);
|
nLevelRequired = PRCMax(nLevelRequired, 4);
|
||||||
if(nRacialType == RACIAL_TYPE_BEAST)
|
if(nRacialType == RACIAL_TYPE_BEAST)
|
||||||
nLevelRequired = max(nLevelRequired, 3);
|
nLevelRequired = PRCMax(nLevelRequired, 3);
|
||||||
if(nRacialType == RACIAL_TYPE_ANIMAL)
|
if(nRacialType == RACIAL_TYPE_ANIMAL)
|
||||||
nLevelRequired = max(nLevelRequired, 2);
|
nLevelRequired = PRCMax(nLevelRequired, 2);
|
||||||
if(nRacialType == RACIAL_TYPE_HUMANOID_MONSTROUS)
|
if(nRacialType == RACIAL_TYPE_HUMANOID_MONSTROUS)
|
||||||
nLevelRequired = max(nLevelRequired, 2);
|
nLevelRequired = PRCMax(nLevelRequired, 2);
|
||||||
if(nRacialType == RACIAL_TYPE_DWARF ||
|
if(nRacialType == RACIAL_TYPE_DWARF ||
|
||||||
nRacialType == RACIAL_TYPE_ELF ||
|
nRacialType == RACIAL_TYPE_ELF ||
|
||||||
nRacialType == RACIAL_TYPE_GNOME ||
|
nRacialType == RACIAL_TYPE_GNOME ||
|
||||||
@ -463,7 +463,7 @@ int _prc_inc_shifting_ShifterLevelRequirement(object oTemplate)
|
|||||||
nRacialType == RACIAL_TYPE_HUMANOID_ORC ||
|
nRacialType == RACIAL_TYPE_HUMANOID_ORC ||
|
||||||
nRacialType == RACIAL_TYPE_HUMANOID_REPTILIAN
|
nRacialType == RACIAL_TYPE_HUMANOID_REPTILIAN
|
||||||
)
|
)
|
||||||
nLevelRequired = max(nLevelRequired, 1);
|
nLevelRequired = PRCMax(nLevelRequired, 1);
|
||||||
|
|
||||||
return nLevelRequired;
|
return nLevelRequired;
|
||||||
}
|
}
|
||||||
|
@ -264,7 +264,7 @@ int SpellfireDrainItem(object oPC, object oItem, int bCharged = TRUE, int bSingl
|
|||||||
int nCharges = GetItemCharges(oItem);
|
int nCharges = GetItemCharges(oItem);
|
||||||
if(nCharges) //charged item
|
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
|
SetItemCharges(oItem, nCharges - nExpend); //will destroy item if all charges drained
|
||||||
AddSpellfireLevels(oPC, nExpend); //adds 1 level/charge
|
AddSpellfireLevels(oPC, nExpend); //adds 1 level/charge
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -307,7 +307,7 @@ int SpellfireDrainItem(object oPC, object oItem, int bCharged = TRUE, int bSingl
|
|||||||
(nBase == BASE_ITEM_ENCHANTED_SCROLL)
|
(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)
|
if(nExpend == nStack)
|
||||||
DestroyObject(oItem);
|
DestroyObject(oItem);
|
||||||
else
|
else
|
||||||
|
@ -2898,11 +2898,11 @@ int GetAlternativeCasterLevel(object oPC, int nLevel)
|
|||||||
nLevel += GetLevelByClass(CLASS_TYPE_IRONSOUL_FORGEMASTER) * 3;
|
nLevel += GetLevelByClass(CLASS_TYPE_IRONSOUL_FORGEMASTER) * 3;
|
||||||
if(GetLocalInt(oPC, "UsingImbueItem"))
|
if(GetLocalInt(oPC, "UsingImbueItem"))
|
||||||
{
|
{
|
||||||
nLevel = max(GetLocalInt(oPC, "InvokerLevel"), nLevel);
|
nLevel = PRCMax(GetLocalInt(oPC, "InvokerLevel"), nLevel);
|
||||||
}
|
}
|
||||||
if(GetLocalInt(oPC, "ArtificerCrafting"))
|
if(GetLocalInt(oPC, "ArtificerCrafting"))
|
||||||
{
|
{
|
||||||
nLevel = max(GetLevelByClass(CLASS_TYPE_ARTIFICER, oPC), nLevel);
|
nLevel = PRCMax(GetLevelByClass(CLASS_TYPE_ARTIFICER, oPC), nLevel);
|
||||||
}
|
}
|
||||||
return nLevel;
|
return nLevel;
|
||||||
}
|
}
|
||||||
|
@ -1145,9 +1145,57 @@ object IPGetTargetedOrEquippedMeleeWeapon()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
object IPGetTargetedOrEquippedArmor(int bAllowShields = FALSE)
|
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();
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
if(GetIsObjectValid(oTarget) && GetObjectType(oTarget) == OBJECT_TYPE_ITEM)
|
if(GetIsObjectValid(oTarget) && GetObjectType(oTarget) == OBJECT_TYPE_ITEM)
|
||||||
@ -1193,7 +1241,7 @@ object IPGetTargetedOrEquippedArmor(int bAllowShields = FALSE)
|
|||||||
return OBJECT_INVALID;
|
return OBJECT_INVALID;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// Returns FALSE it the item has no sequencer property
|
// Returns FALSE it the item has no sequencer property
|
||||||
// Returns number of spells that can be stored in any other case
|
// 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)
|
if(GetItemPropertyDurationType(ip) == DURATION_TYPE_PERMANENT || !bIgnoreTemporary)
|
||||||
{
|
{
|
||||||
nTemp = GetItemPropertyCostTableValue(ip);
|
nTemp = GetItemPropertyCostTableValue(ip);
|
||||||
nFound = max(nFound, nTemp);
|
nFound = PRCMax(nFound, nTemp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ip = GetNextItemProperty(oWeapon);
|
ip = GetNextItemProperty(oWeapon);
|
||||||
|
@ -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
|
// Determine how many times it can be used and how much it costs
|
||||||
nTimesAugd = nTimesCanAug == PRC_UNLIMITED_AUGMENTATION ?
|
nTimesAugd = nTimesCanAug == PRC_UNLIMITED_AUGMENTATION ?
|
||||||
nToAutodistribute / pap.nAugCost_1 :
|
nToAutodistribute / pap.nAugCost_1 :
|
||||||
min(nToAutodistribute / pap.nAugCost_1, nTimesCanAug);
|
PRCMin(nToAutodistribute / pap.nAugCost_1, nTimesCanAug);
|
||||||
nToAutodistribute -= nTimesAugd * pap.nAugCost_1;
|
nToAutodistribute -= nTimesAugd * pap.nAugCost_1;
|
||||||
|
|
||||||
manif.nTimesAugOptUsed_1 += nTimesAugd;
|
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
|
// Determine how many times it can be used and how much it costs
|
||||||
nTimesAugd = nTimesCanAug == PRC_UNLIMITED_AUGMENTATION ?
|
nTimesAugd = nTimesCanAug == PRC_UNLIMITED_AUGMENTATION ?
|
||||||
nToAutodistribute / pap.nAugCost_2 :
|
nToAutodistribute / pap.nAugCost_2 :
|
||||||
min(nToAutodistribute / pap.nAugCost_2, nTimesCanAug);
|
PRCMin(nToAutodistribute / pap.nAugCost_2, nTimesCanAug);
|
||||||
nToAutodistribute -= nTimesAugd * pap.nAugCost_2;
|
nToAutodistribute -= nTimesAugd * pap.nAugCost_2;
|
||||||
|
|
||||||
manif.nTimesAugOptUsed_2 += nTimesAugd;
|
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
|
// Determine how many times it can be used and how much it costs
|
||||||
nTimesAugd = nTimesCanAug == PRC_UNLIMITED_AUGMENTATION ?
|
nTimesAugd = nTimesCanAug == PRC_UNLIMITED_AUGMENTATION ?
|
||||||
nToAutodistribute / pap.nAugCost_3 :
|
nToAutodistribute / pap.nAugCost_3 :
|
||||||
min(nToAutodistribute / pap.nAugCost_3, nTimesCanAug);
|
PRCMin(nToAutodistribute / pap.nAugCost_3, nTimesCanAug);
|
||||||
nToAutodistribute -= nTimesAugd * pap.nAugCost_3;
|
nToAutodistribute -= nTimesAugd * pap.nAugCost_3;
|
||||||
|
|
||||||
manif.nTimesAugOptUsed_3 += nTimesAugd;
|
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
|
// Determine how many times it can be used and how much it costs
|
||||||
nTimesAugd = nTimesCanAug == PRC_UNLIMITED_AUGMENTATION ?
|
nTimesAugd = nTimesCanAug == PRC_UNLIMITED_AUGMENTATION ?
|
||||||
nToAutodistribute / pap.nAugCost_4 :
|
nToAutodistribute / pap.nAugCost_4 :
|
||||||
min(nToAutodistribute / pap.nAugCost_4, nTimesCanAug);
|
PRCMin(nToAutodistribute / pap.nAugCost_4, nTimesCanAug);
|
||||||
nToAutodistribute -= nTimesAugd * pap.nAugCost_4;
|
nToAutodistribute -= nTimesAugd * pap.nAugCost_4;
|
||||||
|
|
||||||
manif.nTimesAugOptUsed_4 += nTimesAugd;
|
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
|
// Determine how many times it can be used and how much it costs
|
||||||
nTimesAugd = nTimesCanAug == PRC_UNLIMITED_AUGMENTATION ?
|
nTimesAugd = nTimesCanAug == PRC_UNLIMITED_AUGMENTATION ?
|
||||||
nToAutodistribute / pap.nAugCost_5 :
|
nToAutodistribute / pap.nAugCost_5 :
|
||||||
min(nToAutodistribute / pap.nAugCost_5, nTimesCanAug);
|
PRCMin(nToAutodistribute / pap.nAugCost_5, nTimesCanAug);
|
||||||
nToAutodistribute -= nTimesAugd * pap.nAugCost_5;
|
nToAutodistribute -= nTimesAugd * pap.nAugCost_5;
|
||||||
|
|
||||||
manif.nTimesAugOptUsed_5 += nTimesAugd;
|
manif.nTimesAugOptUsed_5 += nTimesAugd;
|
||||||
@ -687,7 +687,7 @@ struct manifestation EvaluateAugmentation(struct manifestation manif, struct pow
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add in cost reduction
|
// Add in cost reduction
|
||||||
nAugPPCost = max(0, nAugPPCost - nAugPPCostReductions);
|
nAugPPCost = PRCMax(0, nAugPPCost - nAugPPCostReductions);
|
||||||
|
|
||||||
// Store the PP cost increase
|
// Store the PP cost increase
|
||||||
manif.nPPCost += nAugPPCost;
|
manif.nPPCost += nAugPPCost;
|
||||||
|
@ -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)
|
void LocalCleanExtraFists(object oCreature)
|
||||||
{
|
{
|
||||||
int iIsCWeap, iIsEquip;
|
int iIsCWeap, iIsEquip;
|
||||||
@ -1092,7 +1150,7 @@ int GetHighestManifesterLevel(object oCreature)
|
|||||||
|
|
||||||
/* 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(2, oCreature) != CLASS_TYPE_INVALID ? GetManifesterLevel(oCreature, GetClassByPosition(2, oCreature)) : 0
|
||||||
),
|
),
|
||||||
GetClassByPosition(3, oCreature) != CLASS_TYPE_INVALID ? GetManifesterLevel(oCreature, GetClassByPosition(3, oCreature)) : 0
|
GetClassByPosition(3, oCreature) != CLASS_TYPE_INVALID ? GetManifesterLevel(oCreature, GetClassByPosition(3, oCreature)) : 0
|
||||||
|
@ -127,7 +127,7 @@ int _GetMetaPsiPPCost(int nCost, int nIMPsiRed, int bUseSum)
|
|||||||
nCost :
|
nCost :
|
||||||
bUseSum ? nCost :
|
bUseSum ? nCost :
|
||||||
// When calculating Improved Metapsionics separately, it cannot make the cost of a single metapsionic use go below 1
|
// 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.
|
/** Internal function.
|
||||||
@ -477,7 +477,7 @@ void EvaluateChainPower(struct manifestation manif, object oPrimaryTarget, int b
|
|||||||
if(manif.bChain)
|
if(manif.bChain)
|
||||||
{
|
{
|
||||||
// It is, determine amount of secondary targets and range to look for the over
|
// 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);
|
float fRange = FeetToMeters(30.0f);
|
||||||
location lTarget = GetLocation(oPrimaryTarget);
|
location lTarget = GetLocation(oPrimaryTarget);
|
||||||
object oSecondaryTarget;
|
object oSecondaryTarget;
|
||||||
|
@ -134,20 +134,23 @@ void LoseAllPowerPoints(object oChar, int bInform = TRUE);
|
|||||||
* @param oChar Character whose feats to evaluate
|
* @param oChar Character whose feats to evaluate
|
||||||
* @return The amount of Power Points gained from Feats
|
* @return The amount of Power Points gained from Feats
|
||||||
*/
|
*/
|
||||||
int _GetFeatBonusPP(object oChar){
|
int _GetFeatBonusPP(object oChar)
|
||||||
|
{
|
||||||
int nBonusPP = 0;
|
int nBonusPP = 0;
|
||||||
|
|
||||||
// Normal feats
|
//:: Wild Talent & Hidden Talents
|
||||||
if(GetHasFeat(FEAT_WILD_TALENT, oChar))
|
if(GetHasFeat(FEAT_WILD_TALENT, oChar) || IsHiddenTalent())
|
||||||
nBonusPP += 2;
|
nBonusPP += 2;
|
||||||
|
|
||||||
int i, nPsiTalents;
|
//:: Psionic Feats
|
||||||
|
int i;
|
||||||
|
int nPsiTalents;
|
||||||
for(i = FEAT_PSIONIC_TALENT_1; i <= FEAT_PSIONIC_TALENT_10; i++)
|
for(i = FEAT_PSIONIC_TALENT_1; i <= FEAT_PSIONIC_TALENT_10; i++)
|
||||||
if(GetHasFeat(i, oChar)) nPsiTalents++;
|
if(GetHasFeat(i, oChar)) nPsiTalents++;
|
||||||
|
|
||||||
nBonusPP += nPsiTalents * (2 + nPsiTalents + 1) / 2;
|
nBonusPP += nPsiTalents * (2 + nPsiTalents + 1) / 2;
|
||||||
|
|
||||||
// Epic feats
|
//:: Epic feats
|
||||||
int nImpManifestations;
|
int nImpManifestations;
|
||||||
for(i = FEAT_IMPROVED_MANIFESTATION_1; i <= FEAT_IMPROVED_MANIFESTATION_10; i++)
|
for(i = FEAT_IMPROVED_MANIFESTATION_1; i <= FEAT_IMPROVED_MANIFESTATION_10; i++)
|
||||||
if(GetHasFeat(i, oChar)) nImpManifestations++;
|
if(GetHasFeat(i, oChar)) nImpManifestations++;
|
||||||
|
@ -254,7 +254,7 @@ int _PsionicHole(object oTarget)
|
|||||||
|
|
||||||
if(GetHasFeat(FEAT_PSIONIC_HOLE, oTarget))
|
if(GetHasFeat(FEAT_PSIONIC_HOLE, oTarget))
|
||||||
// Psionic Hole will never decrease power cost, even if the target is lacking in wisdom bonus
|
// 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;
|
return nCost;
|
||||||
}
|
}
|
||||||
|
@ -79,7 +79,7 @@ PRCGetPowerResistance(object oTarget, object oCaster)
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
// Only use the PR given by the power if it's higher than the previous
|
// 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
|
// Tower of Iron Will, 19 + augment vs Mind-Affecting
|
||||||
if(GetLocalInt(oTarget, "PRC_Power_TowerOfIronWill_PR") &&
|
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
|
// 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
|
// Foe Hunter SR stacks with normal SR
|
||||||
|
@ -323,7 +323,7 @@ int GetHighestShadowcasterLevel(object oCreature)
|
|||||||
|
|
||||||
/* 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(2, oCreature) != CLASS_TYPE_INVALID ? GetShadowcasterLevel(oCreature, GetClassByPosition(2, oCreature)) : 0
|
||||||
),
|
),
|
||||||
GetClassByPosition(3, oCreature) != CLASS_TYPE_INVALID ? GetShadowcasterLevel(oCreature, GetClassByPosition(3, oCreature)) : 0
|
GetClassByPosition(3, oCreature) != CLASS_TYPE_INVALID ? GetShadowcasterLevel(oCreature, GetClassByPosition(3, oCreature)) : 0
|
||||||
|
@ -140,8 +140,8 @@ void MazeEscapeHB(object oCreature, int nCountLeft)
|
|||||||
int bResult = (nD20 + nIntMod) >= MAZE_ESCAPE_DC;
|
int bResult = (nD20 + nIntMod) >= MAZE_ESCAPE_DC;
|
||||||
|
|
||||||
// Inform the creature of the result
|
// Inform the creature of the result
|
||||||
SendMessageToPC(oCreature, GetRGB(7,7,15) + GetName(oCreature) + "</c>" + // "Int check" "success" "failure"
|
SendMessageToPC(oCreature, PRCGetRGB(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>");
|
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
|
// Return from the maze if the check was successfull
|
||||||
if(bResult)
|
if(bResult)
|
||||||
|
@ -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)
|
// A character with no initiator levels has an init level of 1/2 HD (min 1)
|
||||||
if(!nLevel)
|
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
|
// 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);
|
// if(DEBUG) FloatingTextStringOnCreature("Initiator Level: " + IntToString(nLevel), oInitiator, FALSE);
|
||||||
@ -557,7 +557,7 @@ int GetHighestInitiatorLevel(object oCreature)
|
|||||||
|
|
||||||
/* 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(2, oCreature) != CLASS_TYPE_INVALID ? GetInitiatorLevel(oCreature, GetClassByPosition(2, oCreature)) : 0
|
||||||
),
|
),
|
||||||
GetClassByPosition(3, oCreature) != CLASS_TYPE_INVALID ? GetInitiatorLevel(oCreature, GetClassByPosition(3, oCreature)) : 0
|
GetClassByPosition(3, oCreature) != CLASS_TYPE_INVALID ? GetInitiatorLevel(oCreature, GetClassByPosition(3, oCreature)) : 0
|
||||||
|
@ -368,7 +368,7 @@ int GetHighestTrueSpeakerLevel(object oCreature)
|
|||||||
|
|
||||||
/* 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(2, oCreature) != CLASS_TYPE_INVALID ? GetTruespeakerLevel(oCreature, GetClassByPosition(2, oCreature)) : 0
|
||||||
),
|
),
|
||||||
GetClassByPosition(3, oCreature) != CLASS_TYPE_INVALID ? GetTruespeakerLevel(oCreature, GetClassByPosition(3, oCreature)) : 0
|
GetClassByPosition(3, oCreature) != CLASS_TYPE_INVALID ? GetTruespeakerLevel(oCreature, GetClassByPosition(3, oCreature)) : 0
|
||||||
|
@ -2307,7 +2307,7 @@ int InnateCounterspell(object oCaster, int nSpellId, int nSpellLevel)
|
|||||||
// Set a marker on the Noctumancer at the right level
|
// Set a marker on the Noctumancer at the right level
|
||||||
if (GetLevelByClass(CLASS_TYPE_NOCTUMANCER) >= 7)
|
if (GetLevelByClass(CLASS_TYPE_NOCTUMANCER) >= 7)
|
||||||
{
|
{
|
||||||
int nStore = min(1, nSpellLevel/2);
|
int nStore = PRCMin(1, nSpellLevel/2);
|
||||||
SetLocalInt(oShadow, "InnateCounterSuccess", nStore);
|
SetLocalInt(oShadow, "InnateCounterSuccess", nStore);
|
||||||
FloatingTextStringOnCreature("You have one free mystery of "+IntToString(nStore)+" level", oShadow, FALSE);
|
FloatingTextStringOnCreature("You have one free mystery of "+IntToString(nStore)+" level", oShadow, FALSE);
|
||||||
}
|
}
|
||||||
|
@ -573,6 +573,7 @@ scripts\ft_spontsummon.nss \
|
|||||||
scripts\ft_tears_ever.nss \
|
scripts\ft_tears_ever.nss \
|
||||||
scripts\ft_vowofpoverty.nss \
|
scripts\ft_vowofpoverty.nss \
|
||||||
scripts\ft_vowpoverty_ab.nss \
|
scripts\ft_vowpoverty_ab.nss \
|
||||||
|
scripts\ft_vowpoverty_ft.nss \
|
||||||
scripts\gen_sptouchice.nss \
|
scripts\gen_sptouchice.nss \
|
||||||
scripts\gensp_holyrad.nss \
|
scripts\gensp_holyrad.nss \
|
||||||
scripts\gensp_holyrada.nss \
|
scripts\gensp_holyrada.nss \
|
||||||
@ -2664,7 +2665,7 @@ spells\sp_right_smt.nss \
|
|||||||
spells\sp_rightmt.nss \
|
spells\sp_rightmt.nss \
|
||||||
spells\sp_ring_blds.nss \
|
spells\sp_ring_blds.nss \
|
||||||
spells\sp_ring_bldsa.nss \
|
spells\sp_ring_bldsa.nss \
|
||||||
spells\sp_ring_bldsc.nss \
|
spells\sp_ring_bldsC.nss \
|
||||||
spells\sp_rotcurse_urf.nss \
|
spells\sp_rotcurse_urf.nss \
|
||||||
spells\sp_rouse.nss \
|
spells\sp_rouse.nss \
|
||||||
spells\sp_sannish.nss \
|
spells\sp_sannish.nss \
|
||||||
@ -3186,6 +3187,7 @@ objs\ft_spontsummon.ncs \
|
|||||||
objs\ft_tears_ever.ncs \
|
objs\ft_tears_ever.ncs \
|
||||||
objs\ft_vowofpoverty.ncs \
|
objs\ft_vowofpoverty.ncs \
|
||||||
objs\ft_vowpoverty_ab.ncs \
|
objs\ft_vowpoverty_ab.ncs \
|
||||||
|
objs\ft_vowpoverty_ft.ncs \
|
||||||
objs\gen_sptouchice.ncs \
|
objs\gen_sptouchice.ncs \
|
||||||
objs\gensp_holyrad.ncs \
|
objs\gensp_holyrad.ncs \
|
||||||
objs\gensp_holyrada.ncs \
|
objs\gensp_holyrada.ncs \
|
||||||
@ -5276,7 +5278,7 @@ spellobjs\sp_right_smt.ncs \
|
|||||||
spellobjs\sp_rightmt.ncs \
|
spellobjs\sp_rightmt.ncs \
|
||||||
spellobjs\sp_ring_blds.ncs \
|
spellobjs\sp_ring_blds.ncs \
|
||||||
spellobjs\sp_ring_bldsa.ncs \
|
spellobjs\sp_ring_bldsa.ncs \
|
||||||
spellobjs\sp_ring_bldsc.ncs \
|
spellobjs\sp_ring_bldsC.ncs \
|
||||||
spellobjs\sp_rotcurse_urf.ncs \
|
spellobjs\sp_rotcurse_urf.ncs \
|
||||||
spellobjs\sp_rouse.ncs \
|
spellobjs\sp_rouse.ncs \
|
||||||
spellobjs\sp_sannish.ncs \
|
spellobjs\sp_sannish.ncs \
|
||||||
@ -6824,7 +6826,7 @@ epicspellobjs\wander_unseen.ncs
|
|||||||
2das\iprp_damagetype.2da \
|
2das\iprp_damagetype.2da \
|
||||||
2das\iprp_decvalue1.2da \
|
2das\iprp_decvalue1.2da \
|
||||||
2das\iprp_decvalue2.2da \
|
2das\iprp_decvalue2.2da \
|
||||||
2das\iprp_feats.2da \
|
2das\iprp_feats.2DA \
|
||||||
2das\iprp_incvalue1.2da \
|
2das\iprp_incvalue1.2da \
|
||||||
2das\iprp_incvalue2.2da \
|
2das\iprp_incvalue2.2da \
|
||||||
2das\iprp_matcost.2da \
|
2das\iprp_matcost.2da \
|
||||||
@ -6886,6 +6888,7 @@ epicspellobjs\wander_unseen.ncs
|
|||||||
2das\prc_polymorph.2da \
|
2das\prc_polymorph.2da \
|
||||||
2das\prc_rune_craft.2da \
|
2das\prc_rune_craft.2da \
|
||||||
2das\prc_spells.2da \
|
2das\prc_spells.2da \
|
||||||
|
2das\prc_vop_feats.2da \
|
||||||
2das\prc_weap_items.2da \
|
2das\prc_weap_items.2da \
|
||||||
2das\ruleset.2da \
|
2das\ruleset.2da \
|
||||||
2das\shft_packages.2da \
|
2das\shft_packages.2da \
|
||||||
@ -7695,6 +7698,7 @@ gfx\ife_cfrenzy.tga \
|
|||||||
gfx\ife_championsval.tga \
|
gfx\ife_championsval.tga \
|
||||||
gfx\ife_chilltouch.tga \
|
gfx\ife_chilltouch.tga \
|
||||||
gfx\ife_chmonray.tga \
|
gfx\ife_chmonray.tga \
|
||||||
|
gfx\ife_chosen_evil.tga \
|
||||||
gfx\ife_chperray.tga \
|
gfx\ife_chperray.tga \
|
||||||
gfx\ife_climb.tga \
|
gfx\ife_climb.tga \
|
||||||
gfx\ife_closedmind.tga \
|
gfx\ife_closedmind.tga \
|
||||||
@ -24457,6 +24461,7 @@ psionics\psi_g_psi_weapon.nss \
|
|||||||
psionics\psi_g_stroftwo.nss \
|
psionics\psi_g_stroftwo.nss \
|
||||||
psionics\psi_gen_enter.nss \
|
psionics\psi_gen_enter.nss \
|
||||||
psionics\psi_gen_exit.nss \
|
psionics\psi_gen_exit.nss \
|
||||||
|
psionics\psi_hiddentalent.nss \
|
||||||
psionics\psi_imnd_armmnd.nss \
|
psionics\psi_imnd_armmnd.nss \
|
||||||
psionics\psi_imnd_lndrslv.nss \
|
psionics\psi_imnd_lndrslv.nss \
|
||||||
psionics\psi_imnd_mindbod.nss \
|
psionics\psi_imnd_mindbod.nss \
|
||||||
@ -25066,6 +25071,7 @@ psionicsobjs\psi_g_psi_weapon.ncs \
|
|||||||
psionicsobjs\psi_g_stroftwo.ncs \
|
psionicsobjs\psi_g_stroftwo.ncs \
|
||||||
psionicsobjs\psi_gen_enter.ncs \
|
psionicsobjs\psi_gen_enter.ncs \
|
||||||
psionicsobjs\psi_gen_exit.ncs \
|
psionicsobjs\psi_gen_exit.ncs \
|
||||||
|
psionicsobjs\psi_hiddentalent.ncs \
|
||||||
psionicsobjs\psi_imnd_armmnd.ncs \
|
psionicsobjs\psi_imnd_armmnd.ncs \
|
||||||
psionicsobjs\psi_imnd_lndrslv.ncs \
|
psionicsobjs\psi_imnd_lndrslv.ncs \
|
||||||
psionicsobjs\psi_imnd_mindbod.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_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
|
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_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\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
|
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_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
|
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_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
|
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_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_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
|
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
|
||||||
|
@ -123,7 +123,7 @@ void EurynomePoisonBloodDelay(object oBinder, object oTarget, int nDC)
|
|||||||
{
|
{
|
||||||
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_POISON))
|
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, EffectVisualEffect(VFX_IMP_ACID_S), oTarget);
|
||||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(d6(nDice), DAMAGE_TYPE_ACID), oTarget);
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(d6(nDice), DAMAGE_TYPE_ACID), oTarget);
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@ void main()
|
|||||||
{
|
{
|
||||||
object oBinder = OBJECT_SELF;
|
object oBinder = OBJECT_SELF;
|
||||||
int nKSSLvl = GetLevelByClass(CLASS_TYPE_KNIGHT_SACRED_SEAL, oBinder);
|
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();
|
int nSpellID = PRCGetSpellId();
|
||||||
|
|
||||||
if(GetIsPatronVestigeBound(oBinder))
|
if(GetIsPatronVestigeBound(oBinder))
|
||||||
|
@ -29,7 +29,7 @@ void main()
|
|||||||
if(!BindAbilCooldown(oBinder, GetSpellId(), VESTIGE_BUER)) return;
|
if(!BindAbilCooldown(oBinder, GetSpellId(), VESTIGE_BUER)) return;
|
||||||
object oTarget = PRCGetSpellTargetObject();
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
int nBinderLevel = GetBinderLevel(oBinder, VESTIGE_BUER);
|
int nBinderLevel = GetBinderLevel(oBinder, VESTIGE_BUER);
|
||||||
int nHeal = d8() + min(nBinderLevel, 10);
|
int nHeal = d8() + PRCMin(nBinderLevel, 10);
|
||||||
|
|
||||||
if(PRCGetIsAliveCreature(oTarget))
|
if(PRCGetIsAliveCreature(oTarget))
|
||||||
{
|
{
|
||||||
|
@ -25,7 +25,7 @@ void main()
|
|||||||
object oCaster = OBJECT_SELF;
|
object oCaster = OBJECT_SELF;
|
||||||
object oTarget = PRCGetSpellTargetObject();
|
object oTarget = PRCGetSpellTargetObject();
|
||||||
int CasterLvl = GetInvokerLevel(oCaster, GetInvokingClass());
|
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 eVis = EffectVisualEffect(VFX_IMP_IMPROVE_ABILITY_SCORE);
|
||||||
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
|
||||||
effect eSkill = EffectSkillIncrease(SKILL_BLUFF, nSkillBonus);
|
effect eSkill = EffectSkillIncrease(SKILL_BLUFF, nSkillBonus);
|
||||||
|
@ -40,14 +40,14 @@ void main()
|
|||||||
}
|
}
|
||||||
if(nSpell == INVOKE_DAMAGE_REDUCTION)
|
if(nSpell == INVOKE_DAMAGE_REDUCTION)
|
||||||
{
|
{
|
||||||
int nDur = max(3 + nCha, 1);
|
int nDur = PRCMax(3 + nCha, 1);
|
||||||
int nRedAmt = ((nWarlockLvl + 1) / 4) + (max(nDiscLvl / 2, 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_TEMPORARY, EffectDamageReduction(nRedAmt, DAMAGE_POWER_PLUS_THREE), oPC, RoundsToSeconds(nDur));
|
||||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_SUPER_HEROISM), oPC);
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_SUPER_HEROISM), oPC);
|
||||||
}
|
}
|
||||||
if(nSpell == INVOKE_FIENDISH_RESISTANCE)
|
if(nSpell == INVOKE_FIENDISH_RESISTANCE)
|
||||||
{
|
{
|
||||||
int nDur = max(3 + nCha, 1);
|
int nDur = PRCMax(3 + nCha, 1);
|
||||||
if(GetAlignmentGoodEvil(oPC) == ALIGNMENT_GOOD)
|
if(GetAlignmentGoodEvil(oPC) == ALIGNMENT_GOOD)
|
||||||
{
|
{
|
||||||
FloatingTextStringOnCreature("Your deity must be evil!", oPC, FALSE);
|
FloatingTextStringOnCreature("Your deity must be evil!", oPC, FALSE);
|
||||||
@ -63,7 +63,7 @@ void main()
|
|||||||
}
|
}
|
||||||
if(nSpell == INVOKE_PROTECTIVE_AURA)
|
if(nSpell == INVOKE_PROTECTIVE_AURA)
|
||||||
{
|
{
|
||||||
int nDur = max(3 + nCha, 1);
|
int nDur = PRCMax(3 + nCha, 1);
|
||||||
if(GetAlignmentGoodEvil(oPC) == ALIGNMENT_EVIL)
|
if(GetAlignmentGoodEvil(oPC) == ALIGNMENT_EVIL)
|
||||||
{
|
{
|
||||||
FloatingTextStringOnCreature("Your deity must be good!", oPC, FALSE);
|
FloatingTextStringOnCreature("Your deity must be good!", oPC, FALSE);
|
||||||
@ -79,15 +79,15 @@ void main()
|
|||||||
}
|
}
|
||||||
if(nSpell == INVOKE_STRENGTH_OF_WILL)
|
if(nSpell == INVOKE_STRENGTH_OF_WILL)
|
||||||
{
|
{
|
||||||
int nDur = max(3 + nCha, 1);
|
int nDur = PRCMax(3 + nCha, 1);
|
||||||
int nBonus = max(nDiscLvl / 2, 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));
|
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));
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eGift, oPC, RoundsToSeconds(nDur));
|
||||||
}
|
}
|
||||||
if(nSpell == INVOKE_WILD_FRENZY)
|
if(nSpell == INVOKE_WILD_FRENZY)
|
||||||
{
|
{
|
||||||
int nDur = max(3 + nCha, 1);
|
int nDur = PRCMax(3 + nCha, 1);
|
||||||
int nTempHP = 2 * nDiscLvl;
|
int nTempHP = 2 * nDiscLvl;
|
||||||
if(GetAlignmentLawChaos(oPC) == ALIGNMENT_LAWFUL)
|
if(GetAlignmentLawChaos(oPC) == ALIGNMENT_LAWFUL)
|
||||||
{
|
{
|
||||||
|
@ -41,8 +41,8 @@ void main()
|
|||||||
|
|
||||||
//calculate DC for essence effects
|
//calculate DC for essence effects
|
||||||
int nInvLevel = GetInvokerLevel(oPC, CLASS_TYPE_WARLOCK);
|
int nInvLevel = GetInvokerLevel(oPC, CLASS_TYPE_WARLOCK);
|
||||||
int nBlastLvl = min((nInvLevel + 1) / 2, 9);
|
int nBlastLvl = PRCMin((nInvLevel + 1) / 2, 9);
|
||||||
nBlastLvl = max(max(nEssenceData & 0xF, nEssenceData2 & 0xF), nBlastLvl);
|
nBlastLvl = PRCMax(PRCMax(nEssenceData & 0xF, nEssenceData2 & 0xF), nBlastLvl);
|
||||||
int nDC = 10 + nBlastLvl + GetAbilityModifier(ABILITY_CHARISMA);
|
int nDC = 10 + nBlastLvl + GetAbilityModifier(ABILITY_CHARISMA);
|
||||||
if(GetHasFeat(FEAT_LORD_OF_ALL_ESSENCES)) nDC += 2;
|
if(GetHasFeat(FEAT_LORD_OF_ALL_ESSENCES)) nDC += 2;
|
||||||
|
|
||||||
|
@ -36,8 +36,8 @@ void main()
|
|||||||
|
|
||||||
//calculate DC for essence effects
|
//calculate DC for essence effects
|
||||||
int nInvLevel = GetInvokerLevel(oPC, CLASS_TYPE_WARLOCK);
|
int nInvLevel = GetInvokerLevel(oPC, CLASS_TYPE_WARLOCK);
|
||||||
int nBlastLvl = min((nInvLevel + 1) / 2, 9);
|
int nBlastLvl = PRCMin((nInvLevel + 1) / 2, 9);
|
||||||
nBlastLvl = max(4, max(max(nEssenceData & 0xF, nEssenceData2 & 0xF), nBlastLvl));
|
nBlastLvl = PRCMax(4, PRCMax(PRCMax(nEssenceData & 0xF, nEssenceData2 & 0xF), nBlastLvl));
|
||||||
int nDC = 10 + nBlastLvl + GetAbilityModifier(ABILITY_CHARISMA);
|
int nDC = 10 + nBlastLvl + GetAbilityModifier(ABILITY_CHARISMA);
|
||||||
if(GetHasFeat(FEAT_LORD_OF_ALL_ESSENCES)) nDC += 2;
|
if(GetHasFeat(FEAT_LORD_OF_ALL_ESSENCES)) nDC += 2;
|
||||||
|
|
||||||
|
@ -71,8 +71,8 @@ void main()
|
|||||||
|
|
||||||
//calculate DC for essence effects
|
//calculate DC for essence effects
|
||||||
int nInvLevel = GetInvokerLevel(oPC, CLASS_TYPE_WARLOCK);
|
int nInvLevel = GetInvokerLevel(oPC, CLASS_TYPE_WARLOCK);
|
||||||
int nBlastLvl = min((nInvLevel + 1) / 2, 9);
|
int nBlastLvl = PRCMin((nInvLevel + 1) / 2, 9);
|
||||||
nBlastLvl = max(nShapeLevel, max(max(nEssenceData & 0xF, nEssenceData2 & 0xF), nBlastLvl));
|
nBlastLvl = PRCMax(nShapeLevel, PRCMax(PRCMax(nEssenceData & 0xF, nEssenceData2 & 0xF), nBlastLvl));
|
||||||
int nDC = 10 + nBlastLvl + GetAbilityModifier(ABILITY_CHARISMA);
|
int nDC = 10 + nBlastLvl + GetAbilityModifier(ABILITY_CHARISMA);
|
||||||
if(GetHasFeat(FEAT_LORD_OF_ALL_ESSENCES)) nDC += 2;
|
if(GetHasFeat(FEAT_LORD_OF_ALL_ESSENCES)) nDC += 2;
|
||||||
int nDmgDice = GetBlastDamageDices(oPC, nInvLevel);
|
int nDmgDice = GetBlastDamageDices(oPC, nInvLevel);
|
||||||
|
@ -32,8 +32,8 @@ void main()
|
|||||||
|
|
||||||
//calculate DC for essence effects
|
//calculate DC for essence effects
|
||||||
int nInvLevel = GetInvokerLevel(oPC, CLASS_TYPE_WARLOCK);
|
int nInvLevel = GetInvokerLevel(oPC, CLASS_TYPE_WARLOCK);
|
||||||
int nBlastLvl = min((nInvLevel + 1) / 2, 9);
|
int nBlastLvl = PRCMin((nInvLevel + 1) / 2, 9);
|
||||||
nBlastLvl = max(max(nEssenceData & 0xF, nEssenceData2 & 0xF), nBlastLvl);
|
nBlastLvl = PRCMax(PRCMax(nEssenceData & 0xF, nEssenceData2 & 0xF), nBlastLvl);
|
||||||
int nDC = 10 + nBlastLvl + GetAbilityModifier(ABILITY_CHARISMA);
|
int nDC = 10 + nBlastLvl + GetAbilityModifier(ABILITY_CHARISMA);
|
||||||
if(GetHasFeat(FEAT_LORD_OF_ALL_ESSENCES)) nDC += 2;
|
if(GetHasFeat(FEAT_LORD_OF_ALL_ESSENCES)) nDC += 2;
|
||||||
|
|
||||||
|
@ -36,8 +36,8 @@ void main()
|
|||||||
|
|
||||||
//calculate DC for essence effects
|
//calculate DC for essence effects
|
||||||
int nInvLevel = GetInvokerLevel(oPC, CLASS_TYPE_WARLOCK);
|
int nInvLevel = GetInvokerLevel(oPC, CLASS_TYPE_WARLOCK);
|
||||||
int nBlastLvl = min((nInvLevel + 1) / 2, 9);
|
int nBlastLvl = PRCMin((nInvLevel + 1) / 2, 9);
|
||||||
nBlastLvl = max(max(nEssenceData & 0xF, nEssenceData2 & 0xF), nBlastLvl);
|
nBlastLvl = PRCMax(PRCMax(nEssenceData & 0xF, nEssenceData2 & 0xF), nBlastLvl);
|
||||||
int nDC = 10 + nBlastLvl + GetAbilityModifier(ABILITY_CHARISMA);
|
int nDC = 10 + nBlastLvl + GetAbilityModifier(ABILITY_CHARISMA);
|
||||||
if(GetHasFeat(FEAT_LORD_OF_ALL_ESSENCES)) nDC += 2;
|
if(GetHasFeat(FEAT_LORD_OF_ALL_ESSENCES)) nDC += 2;
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ void main()
|
|||||||
{
|
{
|
||||||
int nClass = GetLocalInt(oPC, "SpellType");
|
int nClass = GetLocalInt(oPC, "SpellType");
|
||||||
int nSpellbookMinLevel = 0;
|
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));
|
if(DEBUG) DoDebug("inv_imbueitemcon: Spellbook max level: " + IntToString(nSpellbookMaxLevel));
|
||||||
string sFile = GetFileForClass(nClass);
|
string sFile = GetFileForClass(nClass);
|
||||||
int i;
|
int i;
|
||||||
|
@ -30,7 +30,7 @@ void main()
|
|||||||
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
|
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
|
||||||
|
|
||||||
//cap the extra damage
|
//cap the extra damage
|
||||||
nCasterLvl = min(nCasterLvl, 20);
|
nCasterLvl = PRCMin(nCasterLvl, 20);
|
||||||
|
|
||||||
object oTarget = GetEnteringObject();
|
object oTarget = GetEnteringObject();
|
||||||
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster))
|
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster))
|
||||||
|
@ -42,7 +42,7 @@ void main()
|
|||||||
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
|
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
|
||||||
|
|
||||||
//cap the extra damage
|
//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);
|
object oTarget = GetFirstInPersistentObject(OBJECT_SELF,OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
|
||||||
//Declare the spell shape, size and the location.
|
//Declare the spell shape, size and the location.
|
||||||
|
@ -63,7 +63,7 @@ void main()
|
|||||||
|
|
||||||
if(GetHasFeat(FEAT_PARAGON_VISIONARY))
|
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());
|
effect eLink = EffectLinkEffects(EffectUltravision(), EffectSeeInvisible());
|
||||||
eLink = EffectLinkEffects(eLink, EffectSkillIncrease(SKILL_SPOT, nSkillBonus));
|
eLink = EffectLinkEffects(eLink, EffectSkillIncrease(SKILL_SPOT, nSkillBonus));
|
||||||
eLink = EffectLinkEffects(eLink, EffectSkillIncrease(SKILL_LISTEN, nSkillBonus));
|
eLink = EffectLinkEffects(eLink, EffectSkillIncrease(SKILL_LISTEN, nSkillBonus));
|
||||||
|
@ -392,7 +392,7 @@ void main()
|
|||||||
SetHeader("How much do you want to invest into "+GetStringByStrRef(StringToInt(Get2DACache("spells", "Name", nMeld)))+"?");
|
SetHeader("How much do you want to invest into "+GetStringByStrRef(StringToInt(Get2DACache("spells", "Name", nMeld)))+"?");
|
||||||
int i;
|
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);
|
AddChoice(IntToString(i), i, oMeldshaper);
|
||||||
}
|
}
|
||||||
@ -409,7 +409,7 @@ void main()
|
|||||||
int nMeld = GetLocalInt(oMeldshaper, "nMeld");
|
int nMeld = GetLocalInt(oMeldshaper, "nMeld");
|
||||||
SetHeader("How much do you want to invest into "+GetStringByStrRef(StringToInt(Get2DACache("feat", "FEAT", nMeld)))+"?");
|
SetHeader("How much do you want to invest into "+GetStringByStrRef(StringToInt(Get2DACache("feat", "FEAT", nMeld)))+"?");
|
||||||
int i;
|
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);
|
AddChoice(IntToString(i), i, oMeldshaper);
|
||||||
}
|
}
|
||||||
@ -420,7 +420,7 @@ void main()
|
|||||||
// Build the confirmation query
|
// Build the confirmation query
|
||||||
int nMeld = GetLocalInt(oMeldshaper, "nMeld");
|
int nMeld = GetLocalInt(oMeldshaper, "nMeld");
|
||||||
SetHeader("How much do you want to invest into "+GetStringByStrRef(StringToInt(Get2DACache("spells", "Name", 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;
|
if (nMeld == MELD_SPINE_ENHANCEMENT) nMax = GetLevelByClass(CLASS_TYPE_SPINEMELD_WARRIOR, oMeldshaper)/2;
|
||||||
int i;
|
int i;
|
||||||
for(i = 1; i <= nMax; i++)
|
for(i = 1; i <= nMax; i++)
|
||||||
|
@ -11,5 +11,5 @@ void main()
|
|||||||
{
|
{
|
||||||
object oMeldshaper = PRCGetSpellTargetObject();
|
object oMeldshaper = PRCGetSpellTargetObject();
|
||||||
|
|
||||||
SetIncorporeal(oMeldshaper, RoundsToSeconds(max(GetAbilityModifier(ABILITY_CHARISMA, oMeldshaper),1)), 1);
|
SetIncorporeal(oMeldshaper, RoundsToSeconds(PRCMax(GetAbilityModifier(ABILITY_CHARISMA, oMeldshaper),1)), 1);
|
||||||
}
|
}
|
@ -189,7 +189,7 @@ void main()
|
|||||||
int nPower = GetLocalInt(oMeldshaper, "nPower");
|
int nPower = GetLocalInt(oMeldshaper, "nPower");
|
||||||
SetHeader("How much do you want to invest into "+GetStringByStrRef(StringToInt(Get2DACache("spells", "Name", nPower)))+"?");
|
SetHeader("How much do you want to invest into "+GetStringByStrRef(StringToInt(Get2DACache("spells", "Name", nPower)))+"?");
|
||||||
int i;
|
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++)
|
for(i = 1; i <= nMin; i++)
|
||||||
{
|
{
|
||||||
AddChoice(IntToString(i), i, oMeldshaper);
|
AddChoice(IntToString(i), i, oMeldshaper);
|
||||||
|
@ -29,7 +29,7 @@ void main()
|
|||||||
|
|
||||||
if(myst.bCanMyst)
|
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.eLink = SupernaturalEffect(EffectLinkEffects(EffectACIncrease(nAC, AC_DEFLECTION_BONUS), EffectVisualEffect(VFX_DUR_ENTROPIC_SHIELD)));
|
||||||
|
|
||||||
myst.fDur = 60.0 * myst.nShadowcasterLevel;
|
myst.fDur = 60.0 * myst.nShadowcasterLevel;
|
||||||
|
@ -40,7 +40,7 @@ void main()
|
|||||||
// Check Spell Resistance
|
// Check Spell Resistance
|
||||||
if(!PRCDoResistSpell(oShadow, oTarget, myst.nPen) || myst.bIgnoreSR)
|
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))
|
if (PRCMySavingThrow(SAVING_THROW_WILL, oTarget, GetShadowcasterDC(oShadow), SAVING_THROW_TYPE_MIND_SPELLS))
|
||||||
nDam/2;
|
nDam/2;
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ void main()
|
|||||||
|
|
||||||
if(myst.bCanMyst)
|
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(EffectDamageResistance(DAMAGE_TYPE_COLD, nAmount, nAmount), EffectVisualEffect(VFX_DUR_PROTECTION_ENERGY_COLD));
|
||||||
myst.eLink = EffectLinkEffects(myst.eLink, EffectDamageIncrease(DAMAGE_BONUS_1d6, DAMAGE_TYPE_COLD));
|
myst.eLink = EffectLinkEffects(myst.eLink, EffectDamageIncrease(DAMAGE_BONUS_1d6, DAMAGE_TYPE_COLD));
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ void main()
|
|||||||
|
|
||||||
if(myst.bCanMyst)
|
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.eLink = EffectLinkEffects(EffectTemporaryHitpoints(nAmount), EffectVisualEffect(VFX_DUR_CHAOS_CLOAK));
|
||||||
|
|
||||||
myst.fDur = 600.0 * myst.nShadowcasterLevel;
|
myst.fDur = 600.0 * myst.nShadowcasterLevel;
|
||||||
|
@ -24,7 +24,7 @@ void main()
|
|||||||
object oShadow = GetAreaOfEffectCreator();
|
object oShadow = GetAreaOfEffectCreator();
|
||||||
object oAoE = GetAreaOfEffectObject(GetLocalLocation(oShadow, "BlackFire_Loc"), "VFX_PER_CURTAIN_SHADOWS");
|
object oAoE = GetAreaOfEffectObject(GetLocalLocation(oShadow, "BlackFire_Loc"), "VFX_PER_CURTAIN_SHADOWS");
|
||||||
struct mystery myst = GetLocalMystery(oShadow, MYST_HOLD_MYST+"3");
|
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.
|
//Capture the first target object in the shape.
|
||||||
object oTarget = GetEnteringObject();
|
object oTarget = GetEnteringObject();
|
||||||
|
@ -31,7 +31,7 @@ void main()
|
|||||||
int nDamage;
|
int nDamage;
|
||||||
object oAoE = GetAreaOfEffectObject(GetLocalLocation(oShadow, "BlackFire_Loc"), "VFX_PER_CURTAIN_SHADOWS");
|
object oAoE = GetAreaOfEffectObject(GetLocalLocation(oShadow, "BlackFire_Loc"), "VFX_PER_CURTAIN_SHADOWS");
|
||||||
struct mystery myst = GetLocalMystery(oShadow, MYST_HOLD_MYST+"3");
|
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.
|
//Capture the first target object in the shape.
|
||||||
object oTarget = GetFirstInPersistentObject(OBJECT_SELF, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
|
object oTarget = GetFirstInPersistentObject(OBJECT_SELF, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
|
||||||
|
@ -23,7 +23,7 @@ void main()
|
|||||||
|
|
||||||
if (!GetLocalInt(oShadow, "FlickerMyst"))
|
if (!GetLocalInt(oShadow, "FlickerMyst"))
|
||||||
{
|
{
|
||||||
int nLevel = max(GetShadowcasterLevel(oShadow), GetLocalInt(oShadow, "TenebrousFlicker"));
|
int nLevel = PRCMax(GetShadowcasterLevel(oShadow), GetLocalInt(oShadow, "TenebrousFlicker"));
|
||||||
DimensionDoor(oShadow, nLevel);
|
DimensionDoor(oShadow, nLevel);
|
||||||
SetLocalInt(oShadow, "FlickerMyst", TRUE);
|
SetLocalInt(oShadow, "FlickerMyst", TRUE);
|
||||||
DelayCommand(5.5, DeleteLocalInt(oShadow, "FlickerMyst"));
|
DelayCommand(5.5, DeleteLocalInt(oShadow, "FlickerMyst"));
|
||||||
|
@ -30,7 +30,7 @@ void main()
|
|||||||
|
|
||||||
if(myst.bCanMyst)
|
if(myst.bCanMyst)
|
||||||
{
|
{
|
||||||
int nDie = min(myst.nShadowcasterLevel, 20);
|
int nDie = PRCMin(myst.nShadowcasterLevel, 20);
|
||||||
location lTargetLocation = PRCGetSpellTargetLocation();
|
location lTargetLocation = PRCGetSpellTargetLocation();
|
||||||
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_VAMPIRIC_DRAIN_PRC), lTargetLocation);
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_VAMPIRIC_DRAIN_PRC), lTargetLocation);
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ void main()
|
|||||||
|
|
||||||
if(myst.bCanMyst)
|
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.
|
//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);
|
object oTarget = MyFirstObjectInShape(SHAPE_SPELLCONE, FeetToMeters(30.0), lTargetLocation, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
|
||||||
|
@ -30,7 +30,7 @@ void main()
|
|||||||
|
|
||||||
if(myst.bCanMyst)
|
if(myst.bCanMyst)
|
||||||
{
|
{
|
||||||
int nDie = min(myst.nShadowcasterLevel, 5);
|
int nDie = PRCMin(myst.nShadowcasterLevel, 5);
|
||||||
myst.fDur = RoundsToSeconds(myst.nShadowcasterLevel);
|
myst.fDur = RoundsToSeconds(myst.nShadowcasterLevel);
|
||||||
if(myst.bExtend) myst.fDur *= 2;
|
if(myst.bExtend) myst.fDur *= 2;
|
||||||
myst.nPen = ShadowSRPen(oShadow, myst.nShadowcasterLevel);
|
myst.nPen = ShadowSRPen(oShadow, myst.nShadowcasterLevel);
|
||||||
|
@ -37,9 +37,9 @@ void main()
|
|||||||
//--------------------------------------------------------------------------
|
//--------------------------------------------------------------------------
|
||||||
// Dispel Magic is capped at caster level 10
|
// 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)
|
if (myst.nMystId == MYST_SHADOWS_FADE_GREATER)
|
||||||
nCasterLevel = min(myst.nShadowcasterLevel, 20);
|
nCasterLevel = PRCMin(myst.nShadowcasterLevel, 20);
|
||||||
|
|
||||||
if (GetIsObjectValid(oTarget))
|
if (GetIsObjectValid(oTarget))
|
||||||
{
|
{
|
||||||
|
@ -33,7 +33,7 @@ void main()
|
|||||||
|
|
||||||
if(myst.bCanMyst)
|
if(myst.bCanMyst)
|
||||||
{
|
{
|
||||||
int nDie = min(myst.nShadowcasterLevel, 20);
|
int nDie = PRCMin(myst.nShadowcasterLevel, 20);
|
||||||
myst.nPen = ShadowSRPen(oShadow, myst.nShadowcasterLevel);
|
myst.nPen = ShadowSRPen(oShadow, myst.nShadowcasterLevel);
|
||||||
myst.nSaveDC = GetShadowcasterDC(oShadow);
|
myst.nSaveDC = GetShadowcasterDC(oShadow);
|
||||||
effect eCold = EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_COLD);
|
effect eCold = EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_COLD);
|
||||||
|
@ -62,7 +62,7 @@ void main()
|
|||||||
int nDam = d6();
|
int nDam = d6();
|
||||||
if (GetLocalInt(oShadow, "SharpShadMax")) nDam = 6;
|
if (GetLocalInt(oShadow, "SharpShadMax")) nDam = 6;
|
||||||
if (GetLocalInt(oShadow, "SharpShadEmp")) nDam += nDam/2;
|
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, EffectVisualEffect(VFX_IMP_MAGMAG), oTarget);
|
||||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(nDam, DAMAGE_TYPE_PIERCING), oTarget);
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(nDam, DAMAGE_TYPE_PIERCING), oTarget);
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,7 @@ void main()
|
|||||||
if (oTarget == oPC) return; // No hitting yourself
|
if (oTarget == oPC) return; // No hitting yourself
|
||||||
if (GetLocalInt(oPC, "CombatLoopProtection")) return; // Stop the damn loop
|
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));
|
SetLocalInt(oPC, "BABOverride", GetShadowcasterLevel(oPC));
|
||||||
DelayCommand(1.0, DeleteLocalInt(oPC, "BABOverride"));
|
DelayCommand(1.0, DeleteLocalInt(oPC, "BABOverride"));
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ void TOBAttack(object oTarget, object oInitiator, struct maneuver move)
|
|||||||
if(GetAlignmentGoodEvil(oInitiator) != GetAlignmentGoodEvil(oTarget)
|
if(GetAlignmentGoodEvil(oInitiator) != GetAlignmentGoodEvil(oTarget)
|
||||||
|| GetAlignmentLawChaos(oInitiator) != GetAlignmentLawChaos(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));
|
object oHeal = GetCrusaderHealTarget(oInitiator, FeetToMeters(10.0));
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(nHeal), oHeal);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(nHeal), oHeal);
|
||||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HEALING_L_LAW), oHeal);
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HEALING_L_LAW), oHeal);
|
||||||
|
@ -39,7 +39,7 @@ void TOBAttack(object oTarget, object oInitiator, struct maneuver move)
|
|||||||
if(GetAlignmentGoodEvil(oInitiator) != GetAlignmentGoodEvil(oTarget)
|
if(GetAlignmentGoodEvil(oInitiator) != GetAlignmentGoodEvil(oTarget)
|
||||||
|| GetAlignmentLawChaos(oInitiator) != GetAlignmentLawChaos(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));
|
object oHeal = GetCrusaderHealTarget(oInitiator, FeetToMeters(10.0));
|
||||||
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(nHeal), oHeal);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(nHeal), oHeal);
|
||||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HEALING_L_LAW), oHeal);
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HEALING_L_LAW), oHeal);
|
||||||
|
@ -46,7 +46,7 @@ void TOBAttack(object oTarget, object oInitiator, struct maneuver move)
|
|||||||
if(GetIsFriend(oTarget, oInitiator))
|
if(GetIsFriend(oTarget, oInitiator))
|
||||||
{
|
{
|
||||||
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, PRCGetSpellId()));
|
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);
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(nHeal), oTarget);
|
||||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HEALING_L_LAW), oTarget);
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HEALING_L_LAW), oTarget);
|
||||||
}
|
}
|
||||||
|
@ -203,7 +203,7 @@ void main()
|
|||||||
// Determine maximum maneuver level
|
// Determine maximum maneuver level
|
||||||
// Initiators get new maneuvers at the same levels as wizards
|
// Initiators get new maneuvers at the same levels as wizards
|
||||||
// See ToB p39, table 3-1
|
// 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
|
// Set the tokens
|
||||||
int i;
|
int i;
|
||||||
|
@ -234,7 +234,7 @@ void main()
|
|||||||
// Determine maximum maneuver level
|
// Determine maximum maneuver level
|
||||||
// Initiators get new maneuvers at the same levels as wizards
|
// Initiators get new maneuvers at the same levels as wizards
|
||||||
// See ToB p39, table 3-1
|
// 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
|
// Set the tokens
|
||||||
int i;
|
int i;
|
||||||
|
@ -76,7 +76,7 @@ void main()
|
|||||||
// Determine maximum maneuver level
|
// Determine maximum maneuver level
|
||||||
// Initiators get new maneuvers at the same levels as wizards
|
// Initiators get new maneuvers at the same levels as wizards
|
||||||
// See ToB p39, table 3-1
|
// 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
|
// Set the tokens
|
||||||
int i;
|
int i;
|
||||||
|
@ -71,7 +71,7 @@ void main()
|
|||||||
oItem = GetSpellCastItem();
|
oItem = GetSpellCastItem();
|
||||||
if(GetBaseItemType(oItem) == BASE_ITEM_ARMOR)
|
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)
|
if(nCold > 0)
|
||||||
{
|
{
|
||||||
effect eHeal = EffectHeal(nCold);
|
effect eHeal = EffectHeal(nCold);
|
||||||
|
@ -76,7 +76,7 @@ void main()
|
|||||||
else /* Effects of UTTER_ARCHERS_EYE_R would be here */
|
else /* Effects of UTTER_ARCHERS_EYE_R would be here */
|
||||||
{
|
{
|
||||||
// Damage Resistance 10 piercing, max of 100 total
|
// 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.
|
// If either of these ApplyEffect isn't needed, delete it.
|
||||||
// Duration Effects
|
// Duration Effects
|
||||||
|
529
nwn/nwnprc/trunk/psionics/psi_hiddentalent.nss
Normal file
529
nwn/nwnprc/trunk/psionics/psi_hiddentalent.nss
Normal 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);
|
||||||
|
}
|
||||||
|
} */
|
@ -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(2, oTarget) != CLASS_TYPE_INVALID ? GetManifesterLevel(oTarget, GetClassByPosition(2, oTarget)) : 0
|
||||||
),
|
),
|
||||||
GetClassByPosition(3, oTarget) != CLASS_TYPE_INVALID ? GetManifesterLevel(oTarget, GetClassByPosition(3, 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;
|
int nPPGiven = 2 + 2 * manif.nTimesAugOptUsed_1;
|
||||||
// Can't give more than the target has manifester levels
|
// 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
|
// Let the AI know the power was used on it
|
||||||
PRCSignalSpellEvent(oTarget, FALSE, manif.nSpellID, oManifester);
|
PRCSignalSpellEvent(oTarget, FALSE, manif.nSpellID, oManifester);
|
||||||
|
@ -102,7 +102,7 @@ void main()
|
|||||||
if(manif.bCanManifest)
|
if(manif.bCanManifest)
|
||||||
{
|
{
|
||||||
// {0, 1, 2}, depending on the size of the creature
|
// {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 nClawSize = nEffectiveSize + manif.nTimesAugOptUsed_1 + manif.nTimesAugOptUsed_2;
|
||||||
int nBaseDamage;
|
int nBaseDamage;
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_PULSE_FIRE);
|
effect eVis = EffectVisualEffect(VFX_IMP_PULSE_FIRE);
|
||||||
|
@ -66,7 +66,7 @@ void main()
|
|||||||
if(manif.bCanManifest)
|
if(manif.bCanManifest)
|
||||||
{
|
{
|
||||||
int bIsBioDispel = GetLocalInt(GetModule(),"BIODispel");
|
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 eVis = EffectVisualEffect(VFX_IMP_BREACH);
|
||||||
effect eImpact = EffectVisualEffect(VFX_FNF_DISPEL);
|
effect eImpact = EffectVisualEffect(VFX_FNF_DISPEL);
|
||||||
location lTarget = PRCGetSpellTargetLocation();
|
location lTarget = PRCGetSpellTargetLocation();
|
||||||
|
@ -97,7 +97,7 @@ void main()
|
|||||||
// Will save for half and not being dazed
|
// Will save for half and not being dazed
|
||||||
if(PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS))
|
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))
|
else if (GetHasMettle(oTarget, SAVING_THROW_WILL))
|
||||||
{
|
{
|
||||||
|
@ -101,7 +101,7 @@ void main()
|
|||||||
{
|
{
|
||||||
int nMaxDamage = GetLocalInt(oManifester, EMPATHIC_FEEDBACK_VARNAME);
|
int nMaxDamage = GetLocalInt(oManifester, EMPATHIC_FEEDBACK_VARNAME);
|
||||||
int nDamageTaken = GetTotalDamageDealt();
|
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
|
// Use positive damage, it's unlikelier to be resisted than magic damage
|
||||||
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_POSITIVE);
|
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_POSITIVE);
|
||||||
|
@ -84,7 +84,7 @@ int DoPower(object oManifester, object oTarget, struct manifestation manif)
|
|||||||
{
|
{
|
||||||
int nDC = GetManifesterDC(oManifester);
|
int nDC = GetManifesterDC(oManifester);
|
||||||
int nPen = GetPsiPenetration(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
|
GetMaxHitPoints(oManifester) - GetCurrentHitPoints(oManifester) // Limited to the amount of damage the manifester has actually suffered
|
||||||
);
|
);
|
||||||
if (DEBUG) DoDebug("Transfer Cap: " + IntToString(nMaxTran));
|
if (DEBUG) DoDebug("Transfer Cap: " + IntToString(nMaxTran));
|
||||||
|
@ -72,7 +72,7 @@ void main()
|
|||||||
PRCSignalSpellEvent(oTarget, TRUE, manif.nSpellID, manif.oManifester);
|
PRCSignalSpellEvent(oTarget, TRUE, manif.nSpellID, manif.oManifester);
|
||||||
|
|
||||||
// Roll damage
|
// 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
|
// Target-specific stuff
|
||||||
nDamage = GetTargetSpecificChangesToDamage(oTarget, manif.oManifester, nDamage, TRUE, TRUE);
|
nDamage = GetTargetSpecificChangesToDamage(oTarget, manif.oManifester, nDamage, TRUE, TRUE);
|
||||||
|
|
||||||
|
@ -139,7 +139,7 @@ void main()
|
|||||||
PRCSignalSpellEvent(oTarget, TRUE, manif.nSpellID, oManifester);
|
PRCSignalSpellEvent(oTarget, TRUE, manif.nSpellID, oManifester);
|
||||||
|
|
||||||
// Test HP limits
|
// Test HP limits
|
||||||
nTestHP = max(0, GetCurrentHitPoints(oTarget));
|
nTestHP = PRCMax(0, GetCurrentHitPoints(oTarget));
|
||||||
if(GetCurrentHitPoints(oTarget) <= 30 &&
|
if(GetCurrentHitPoints(oTarget) <= 30 &&
|
||||||
GetCurrentHitPoints(oTarget) <= nHPAffectable
|
GetCurrentHitPoints(oTarget) <= nHPAffectable
|
||||||
)
|
)
|
||||||
|
@ -59,7 +59,7 @@ void main()
|
|||||||
|
|
||||||
if(manif.bCanManifest)
|
if(manif.bCanManifest)
|
||||||
{
|
{
|
||||||
int nBonus = max(manif.nManifesterLevel, 25);
|
int nBonus = PRCMax(manif.nManifesterLevel, 25);
|
||||||
effect eLink = EffectVisualEffect(VFX_DUR_GLOBE_MINOR);
|
effect eLink = EffectVisualEffect(VFX_DUR_GLOBE_MINOR);
|
||||||
float fDuration = 6.0f;
|
float fDuration = 6.0f;
|
||||||
if(manif.bExtend) fDuration *= 2;
|
if(manif.bExtend) fDuration *= 2;
|
||||||
|
@ -84,7 +84,7 @@ void main()
|
|||||||
int nLevels = 1 + manif.nTimesAugOptUsed_1;
|
int nLevels = 1 + manif.nTimesAugOptUsed_1;
|
||||||
int nOrigXP = GetXP(oTarget);
|
int nOrigXP = GetXP(oTarget);
|
||||||
int nOrigHD = GetHitDice(oTarget);
|
int nOrigHD = GetHitDice(oTarget);
|
||||||
int nTargetHD = max(1, nOrigHD - nLevels);
|
int nTargetHD = PRCMax(1, nOrigHD - nLevels);
|
||||||
int nXPCost = nLevels *
|
int nXPCost = nLevels *
|
||||||
(GetPRCSwitch(PRC_PSI_PSYCHIC_REFORMATION_NERF) == 2 ?
|
(GetPRCSwitch(PRC_PSI_PSYCHIC_REFORMATION_NERF) == 2 ?
|
||||||
25 : // If nerf is set, the XP cost may also be reduced to 25 per level
|
25 : // If nerf is set, the XP cost may also be reduced to 25 per level
|
||||||
|
@ -64,7 +64,7 @@ void main()
|
|||||||
{
|
{
|
||||||
int nDC = GetManifesterDC(oManifester);
|
int nDC = GetManifesterDC(oManifester);
|
||||||
int nPen = GetPsiPenetration(oManifester);
|
int nPen = GetPsiPenetration(oManifester);
|
||||||
int nDispelLevel = max(manif.nManifesterLevel, 20);
|
int nDispelLevel = PRCMax(manif.nManifesterLevel, 20);
|
||||||
int nEffectSID, nRemoveDC;
|
int nEffectSID, nRemoveDC;
|
||||||
effect eVisLink = EffectVisualEffect(VFX_IMP_BREACH);
|
effect eVisLink = EffectVisualEffect(VFX_IMP_BREACH);
|
||||||
eVisLink = EffectLinkEffects(eVisLink, EffectVisualEffect(VFX_FNF_DISPEL));
|
eVisLink = EffectLinkEffects(eVisLink, EffectVisualEffect(VFX_FNF_DISPEL));
|
||||||
|
@ -171,7 +171,7 @@ void main()
|
|||||||
ApplyAbilityDamage(oTarget, ABILITY_STRENGTH, 1, DURATION_TYPE_TEMPORARY, TRUE, -1.0f);
|
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
|
// 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);
|
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
|
// Check ff the amount gained from current target is greater than the current bonus, but not higher than the maximum
|
||||||
|
@ -22,7 +22,7 @@ void main()
|
|||||||
|
|
||||||
int nDam = (nDamageType == DAMAGE_TYPE_SONIC) ? d4(nLevel) : d6(nLevel); //reduced damage dice
|
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))
|
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))
|
if(!GetIsReactionTypeFriendly(oTarget))
|
||||||
{
|
{
|
||||||
|
@ -44,7 +44,7 @@ void main()
|
|||||||
|
|
||||||
int nDam = (nDamageType == DAMAGE_TYPE_SONIC) ? d4(nDice) : d6(nDice); //reduced damage dice
|
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))
|
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
|
// Damage damage type is the simple case, just get the total damage
|
||||||
// of the spell's type, apply metamagic and roll the save.
|
// 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
Loading…
x
Reference in New Issue
Block a user