2025/05/03 Bugfixes

Added Exotic weapon profs to fighter bonus feats.
Fixed possession bug in inc_persist_loc.nss.
Added Fochlucan Lyrist to divine classes in prc_inc_castlvl.nss
Cleaned up Owl's Insight.
This commit is contained in:
Jaysyn904 2025-05-03 12:54:27 -04:00
parent 36120f5dd6
commit 5d82529b9d
4 changed files with 1242 additions and 1167 deletions

File diff suppressed because it is too large Load Diff

View File

@ -251,10 +251,9 @@ object GetHideToken(object oPC, int bAMS = FALSE)
return oToken;
}
void SetPersistantLocalString(object oPC, string sName, string sValue)
{
if(GetIsPC(oPC))
if(GetIsPC(oPC) == TRUE && GetMaster(oPC) == OBJECT_INVALID && !GetIsDMPossessed(oPC))
{
SQLocalsPlayer_SetString(oPC, sName, sValue);
}
@ -264,9 +263,21 @@ void SetPersistantLocalString(object oPC, string sName, string sValue)
}
}
void SetPersistantLocalInt(object oPC, string sName, int nValue)
/* void SetPersistantLocalString(object oPC, string sName, string sValue)
{
if(GetIsPC(oPC))
{
SQLocalsPlayer_SetString(oPC, sName, sValue);
}
else
{
SetLocalString(oPC, sName, sValue);
}
} */
void SetPersistantLocalInt(object oPC, string sName, int nValue)
{
if(GetIsPC(oPC) == TRUE && GetMaster(oPC) == OBJECT_INVALID && !GetIsDMPossessed(oPC))
{
SQLocalsPlayer_SetInt(oPC, sName, nValue);
}
@ -278,7 +289,7 @@ void SetPersistantLocalInt(object oPC, string sName, int nValue)
void SetPersistantLocalFloat(object oPC, string sName, float fValue)
{
if(GetIsPC(oPC))
if(GetIsPC(oPC) == TRUE && GetMaster(oPC) == OBJECT_INVALID && !GetIsDMPossessed(oPC))
{
SQLocalsPlayer_SetFloat(oPC, sName, fValue);
}
@ -290,7 +301,7 @@ void SetPersistantLocalFloat(object oPC, string sName, float fValue)
void SetPersistantLocalLocation(object oPC, string sName, location lValue)
{
if(GetIsPC(oPC))
if(GetIsPC(oPC) == TRUE && GetMaster(oPC) == OBJECT_INVALID && !GetIsDMPossessed(oPC))
{
SQLocalsPlayer_SetLocation(oPC, sName, lValue);
}
@ -302,7 +313,7 @@ void SetPersistantLocalLocation(object oPC, string sName, location lValue)
void SetPersistantLocalObject(object oPC, string sName, object oValue)
{
if(GetIsPC(oPC))
if(GetIsPC(oPC) == TRUE && GetMaster(oPC) == OBJECT_INVALID && !GetIsDMPossessed(oPC))
{
SQLocalsPlayer_SetObject(oPC, sName, oValue);
}
@ -314,7 +325,7 @@ void SetPersistantLocalObject(object oPC, string sName, object oValue)
string GetPersistantLocalString(object oPC, string sName)
{
if(GetIsPC(oPC))
if(GetIsPC(oPC) == TRUE && GetMaster(oPC) == OBJECT_INVALID && !GetIsDMPossessed(oPC))
{
return SQLocalsPlayer_GetString(oPC, sName);
}
@ -323,7 +334,7 @@ string GetPersistantLocalString(object oPC, string sName)
int GetPersistantLocalInt(object oPC, string sName)
{
if(GetIsPC(oPC))
if(GetIsPC(oPC) == TRUE && GetMaster(oPC) == OBJECT_INVALID && !GetIsDMPossessed(oPC))
{
return SQLocalsPlayer_GetInt(oPC, sName);
}
@ -332,7 +343,7 @@ int GetPersistantLocalInt(object oPC, string sName)
float GetPersistantLocalFloat(object oPC, string sName)
{
if(GetIsPC(oPC))
if(GetIsPC(oPC) == TRUE && GetMaster(oPC) == OBJECT_INVALID && !GetIsDMPossessed(oPC))
{
return SQLocalsPlayer_GetFloat(oPC, sName);
}
@ -341,7 +352,7 @@ float GetPersistantLocalFloat(object oPC, string sName)
location GetPersistantLocalLocation(object oPC, string sName)
{
if(GetIsPC(oPC))
if(GetIsPC(oPC) == TRUE && GetMaster(oPC) == OBJECT_INVALID && !GetIsDMPossessed(oPC))
{
return SQLocalsPlayer_GetLocation(oPC, sName);
}
@ -350,7 +361,7 @@ location GetPersistantLocalLocation(object oPC, string sName)
object GetPersistantLocalObject(object oPC, string sName)
{
if(GetIsPC(oPC))
if(GetIsPC(oPC) == TRUE && GetMaster(oPC) == OBJECT_INVALID && !GetIsDMPossessed(oPC))
{
// Additional check since the OID returned may be invalid, but not actually OBJECT_INVALID
object oReturn = SQLocalsPlayer_GetObject(oPC, sName);
@ -362,7 +373,7 @@ object GetPersistantLocalObject(object oPC, string sName)
void DeletePersistantLocalString(object oPC, string sName)
{
if(GetIsPC(oPC))
if(GetIsPC(oPC) == TRUE && GetMaster(oPC) == OBJECT_INVALID && !GetIsDMPossessed(oPC))
{
SQLocalsPlayer_DeleteString(oPC, sName);
}
@ -374,7 +385,7 @@ void DeletePersistantLocalString(object oPC, string sName)
void DeletePersistantLocalInt(object oPC, string sName)
{
if(GetIsPC(oPC))
if(GetIsPC(oPC) == TRUE && GetMaster(oPC) == OBJECT_INVALID && !GetIsDMPossessed(oPC))
{
SQLocalsPlayer_DeleteInt(oPC, sName);
}
@ -386,7 +397,7 @@ void DeletePersistantLocalInt(object oPC, string sName)
void DeletePersistantLocalFloat(object oPC, string sName)
{
if(GetIsPC(oPC))
if(GetIsPC(oPC) == TRUE && GetMaster(oPC) == OBJECT_INVALID && !GetIsDMPossessed(oPC))
{
SQLocalsPlayer_DeleteFloat(oPC, sName);
}
@ -398,7 +409,7 @@ void DeletePersistantLocalFloat(object oPC, string sName)
void DeletePersistantLocalLocation(object oPC, string sName)
{
if(GetIsPC(oPC))
if(GetIsPC(oPC) == TRUE && GetMaster(oPC) == OBJECT_INVALID && !GetIsDMPossessed(oPC))
{
SQLocalsPlayer_DeleteLocation(oPC, sName);
}
@ -410,7 +421,7 @@ void DeletePersistantLocalLocation(object oPC, string sName)
void DeletePersistantLocalObject(object oPC, string sName)
{
if(GetIsPC(oPC))
if(GetIsPC(oPC) == TRUE && GetMaster(oPC) == OBJECT_INVALID && !GetIsDMPossessed(oPC))
{
SQLocalsPlayer_DeleteObject(oPC, sName);
}

View File

@ -3799,6 +3799,9 @@ int GetDivinePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_ELDISCIPLE_SPELLCASTING_ARCHIVIST, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_ELDRITCH_DISCIPLE, oCaster);
if(GetHasFeat(FEAT_FOCHLUCAN_LYRIST_SPELLCASTING_ARCHIVIST, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FOCHLUCAN_LYRIST, oCaster);
if(GetHasFeat(FEAT_FORESTMASTER_SPELLCASTING_ARCHIVIST, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FORESTMASTER, oCaster);
@ -3903,6 +3906,9 @@ int GetDivinePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_ELDISCIPLE_SPELLCASTING_BLACKGUARD, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_ELDRITCH_DISCIPLE, oCaster);
if(GetHasFeat(FEAT_FOCHLUCAN_LYRIST_SPELLCASTING_BLACKGUARD, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FOCHLUCAN_LYRIST, oCaster);
/* if(GetHasFeat(FEAT_FORESTMASTER_SPELLCASTING_BLACKGUARD, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FORESTMASTER, oCaster);
@ -4010,6 +4016,9 @@ int GetDivinePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_ELDISCIPLE_SPELLCASTING_BLIGHTER, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_ELDRITCH_DISCIPLE, oCaster);
if(GetHasFeat(FEAT_FOCHLUCAN_LYRIST_SPELLCASTING_BLIGHTER, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FOCHLUCAN_LYRIST, oCaster);
/* if(GetHasFeat(FEAT_FORESTMASTER_SPELLCASTING_BLIGHTER, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FORESTMASTER, oCaster); */
@ -4118,6 +4127,9 @@ int GetDivinePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_ELDISCIPLE_SPELLCASTING_CLERIC, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_ELDRITCH_DISCIPLE, oCaster);
if(GetHasFeat(FEAT_FOCHLUCAN_LYRIST_SPELLCASTING_CLERIC, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FOCHLUCAN_LYRIST, oCaster);
if(GetHasFeat(FEAT_FORESTMASTER_SPELLCASTING_CLERIC, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FORESTMASTER, oCaster);
@ -4228,6 +4240,9 @@ int GetDivinePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_FORESTMASTER_SPELLCASTING_DRUID, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FORESTMASTER, oCaster);
if(GetHasFeat(FEAT_FOCHLUCAN_LYRIST_SPELLCASTING_DRUID, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FOCHLUCAN_LYRIST, oCaster);
/* if(GetHasFeat(FEAT_FISTRAZIEL_SPELLCASTING_DRUID, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FISTRAZIEL, oCaster);
@ -4334,6 +4349,9 @@ int GetDivinePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_ELDISCIPLE_SPELLCASTING_FAVOURED_SOUL, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_ELDRITCH_DISCIPLE, oCaster);
if(GetHasFeat(FEAT_FOCHLUCAN_LYRIST_SPELLCASTING_FAVOURED_SOUL, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FOCHLUCAN_LYRIST, oCaster);
if(GetHasFeat(FEAT_FORESTMASTER_SPELLCASTING_FAVOURED_SOUL, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FORESTMASTER, oCaster);
@ -4438,6 +4456,9 @@ int GetDivinePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_ELDISCIPLE_SPELLCASTING_HEALER, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_ELDRITCH_DISCIPLE, oCaster);
if(GetHasFeat(FEAT_FOCHLUCAN_LYRIST_SPELLCASTING_HEALER, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FOCHLUCAN_LYRIST, oCaster);
// if(GetHasFeat(FEAT_FORESTMASTER_SPELLCASTING_HEALER, oCaster))
// nDivine += GetLevelByClass(CLASS_TYPE_FORESTMASTER, oCaster);
@ -4548,6 +4569,9 @@ int GetDivinePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
/* if(GetHasFeat(FEAT_FISTRAZIEL_SPELLCASTING_JUSTICEWW, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FISTRAZIEL, oCaster); */
if(GetHasFeat(FEAT_FOCHLUCAN_LYRIST_SPELLCASTING_JUSTICEWW, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FOCHLUCAN_LYRIST, oCaster);
if(GetHasFeat(FEAT_HEARTWARDER_SPELLCASTING_JUSTICEWW, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_HEARTWARDER, oCaster);
@ -4651,6 +4675,9 @@ int GetDivinePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_FISTRAZIEL_SPELLCASTING_KNIGHT_CHALICE, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FISTRAZIEL, oCaster);
if(GetHasFeat(FEAT_FOCHLUCAN_LYRIST_SPELLCASTING_KNIGHT_CHALICE, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FOCHLUCAN_LYRIST, oCaster);
/* if(GetHasFeat(FEAT_HEARTWARDER_SPELLCASTING_KNIGHT_CHALICE, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_HEARTWARDER, oCaster); */
@ -4752,6 +4779,9 @@ int GetDivinePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_FISTRAZIEL_SPELLCASTING_KNIGHT_MIDDLECIRCLE, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FISTRAZIEL, oCaster);
if(GetHasFeat(FEAT_FOCHLUCAN_LYRIST_SPELLCASTING_KNIGHT_MIDDLECIRCLE, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FOCHLUCAN_LYRIST, oCaster);
if(GetHasFeat(FEAT_HEARTWARDER_SPELLCASTING_KNIGHT_MIDDLECIRCLE, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_HEARTWARDER, oCaster);
@ -4850,6 +4880,9 @@ int GetDivinePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_ELDISCIPLE_SPELLCASTING_NENTYAR_HUNTER, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_ELDRITCH_DISCIPLE, oCaster);
if(GetHasFeat(FEAT_FOCHLUCAN_LYRIST_SPELLCASTING_NENTYAR_HUNTER, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FOCHLUCAN_LYRIST, oCaster);
if(GetHasFeat(FEAT_FORESTMASTER_SPELLCASTING_NENTYAR_HUNTER, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FORESTMASTER, oCaster);
@ -4960,9 +4993,12 @@ int GetDivinePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
nDivine += GetLevelByClass(CLASS_TYPE_FORESTMASTER, oCaster);
if(GetHasFeat(FEAT_FISTRAZIEL_SPELLCASTING_OCULAR, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FISTRAZIEL, oCaster);
nDivine += GetLevelByClass(CLASS_TYPE_FISTRAZIEL, oCaster); */
if(GetHasFeat(FEAT_HEARTWARDER_SPELLCASTING_OCULAR, oCaster))
if(GetHasFeat(FEAT_FOCHLUCAN_LYRIST_SPELLCASTING_OCULAR, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FOCHLUCAN_LYRIST, oCaster);
/* if(GetHasFeat(FEAT_HEARTWARDER_SPELLCASTING_OCULAR, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_HEARTWARDER, oCaster); */
if(GetHasFeat(FEAT_HIEROPHANT_SPELLCASTING_OCULAR, oCaster))
@ -5155,6 +5191,9 @@ int GetDivinePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_ELDISCIPLE_SPELLCASTING_RANGER, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_ELDRITCH_DISCIPLE, oCaster);
if(GetHasFeat(FEAT_FOCHLUCAN_LYRIST_SPELLCASTING_RANGER, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FOCHLUCAN_LYRIST, oCaster);
if(GetHasFeat(FEAT_FORESTMASTER_SPELLCASTING_RANGER, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FORESTMASTER, oCaster);
@ -5256,6 +5295,9 @@ int GetDivinePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
if(GetHasFeat(FEAT_ELDISCIPLE_SPELLCASTING_OASHAMAN, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_ELDRITCH_DISCIPLE, oCaster);
if(GetHasFeat(FEAT_FOCHLUCAN_LYRIST_SPELLCASTING_OASHAMAN, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FOCHLUCAN_LYRIST, oCaster);
if(GetHasFeat(FEAT_FORESTMASTER_SPELLCASTING_OASHAMAN, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FORESTMASTER, oCaster);
@ -5464,6 +5506,9 @@ int GetDivinePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
// if(GetHasFeat(FEAT_ELDISCIPLE_SPELLCASTING_SOHEI, oCaster))
// nDivine += GetLevelByClass(CLASS_TYPE_ELDRITCH_DISCIPLE, oCaster);
if(GetHasFeat(FEAT_FOCHLUCAN_LYRIST_SPELLCASTING_SOHEI, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FOCHLUCAN_LYRIST, oCaster);
// if(GetHasFeat(FEAT_FORESTMASTER_SPELLCASTING_SOHEI, oCaster))
// nDivine += GetLevelByClass(CLASS_TYPE_FORESTMASTER, oCaster);
@ -5574,6 +5619,9 @@ int GetDivinePRCLevels(object oCaster, int nCastingClass = CLASS_TYPE_INVALID)
/* if(GetHasFeat(FEAT_FISTRAZIEL_SPELLCASTING_SOL, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FISTRAZIEL, oCaster); */
if(GetHasFeat(FEAT_FOCHLUCAN_LYRIST_SPELLCASTING_SOL, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_FOCHLUCAN_LYRIST, oCaster);
/* if(GetHasFeat(FEAT_HEARTWARDER_SPELLCASTING_SOL, oCaster))
nDivine += GetLevelByClass(CLASS_TYPE_HEARTWARDER, oCaster); */

View File

@ -21,12 +21,11 @@ int DoSpell(object oCaster, object oTarget, int nCasterLevel, int nEvent)
{
effect eVis = EffectVisualEffect(VFX_IMP_BONUS_WISDOM);
int nMetaMagic = PRCGetMetaMagicFeat();
int CasterLvl = PRCGetCasterLevel(OBJECT_SELF);
int nDuration = nCasterLevel;
if (CheckMetaMagic(nMetaMagic, METAMAGIC_EXTEND))
nDuration *= 2; //Duration is +100%
effect eLink = EffectLinkEffects(EffectAbilityIncrease(ABILITY_WISDOM, nCasterLevel / 2), EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE));
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, 438, FALSE));
effect eLink = EffectLinkEffects(EffectAbilityIncrease(ABILITY_WISDOM, PRCMax(12, nCasterLevel / 2)), EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE));
SignalEvent(oTarget, EventSpellCastAt(oCaster, 438, FALSE));
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, HoursToSeconds(nDuration),TRUE,-1,nCasterLevel);
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);