Initial upload.
Adding base PRC 4.19a files to repository.
This commit is contained in:
118
trunk/smp/smp_inc_ability.nss
Normal file
118
trunk/smp/smp_inc_ability.nss
Normal file
@@ -0,0 +1,118 @@
|
||||
/*:://////////////////////////////////////////////
|
||||
//:: Name (Monster) Ability Include file
|
||||
//:: FileName SMP_INC_ABILITY
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Notes
|
||||
//:://////////////////////////////////////////////
|
||||
This includes some handy things for abilties.
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: Jasperre
|
||||
//::////////////////////////////////////////////*/
|
||||
|
||||
// Immunities (Includes constants)
|
||||
#include "SMP_INC_RESIST"
|
||||
|
||||
// SMP_INC_ABILITY. This returns a DC based on 2 factors:
|
||||
// 1. Half the levels provided by nClass
|
||||
// 2. The modifier for the ability nAbility
|
||||
// So, it'll return 10 + Half of nClass level's + Ability modifier of nAbility
|
||||
int SMP_GetAbilitySaveDC(int nClass, int nAbility);
|
||||
|
||||
// SMP_INC_ABILITY. This sets oTarget to be immune to this spells effect from
|
||||
// oCreature forever.
|
||||
// Sets a local int retrievable by SMP_GetIsImmuneToAbility().
|
||||
void SMP_SetIsImmuneToAbility(object oTarget, int nId, object oCreature = OBJECT_SELF);
|
||||
|
||||
// SMP_INC_ABILITY. This will return TRUE if oTarget is immune to futher uses of
|
||||
// nId ability used by oCreature.
|
||||
int SMP_GetIsImmuneToAbility(object oTarget, int nId, object oCreature = OBJECT_SELF);
|
||||
|
||||
// SMP_INC_ABILITY. Monster non-spell ability save.
|
||||
// - Uses SAVING_THROW_WILL, SAVING_THROW_REFLEX, SAVING_THROW_FORT.
|
||||
// functions: WillSave ReflexSave FortitudeSave.
|
||||
int SMP_SavingThrow(int nSavingThrow, object oTarget, int nDC, int nSaveType = SAVING_THROW_TYPE_NONE, object oSaveVersus = OBJECT_SELF, float fDelay = 0.0);
|
||||
|
||||
// This returns a DC based on 2 factors:
|
||||
// 1. Half the levels provided by nClass
|
||||
// 2. The modifier for the ability nAbility
|
||||
// So, it'll return 10 + Half of nClass level's + Ability modifier of nAbility
|
||||
int SMP_GetAbilitySaveDC(int nClass, int nAbility)
|
||||
{
|
||||
// Start DC at 10...
|
||||
// * Add half the levels of nClass
|
||||
// * Add the nAbility modifer
|
||||
return 10 + (GetLevelByClass(nClass)/2) + GetAbilityModifier(nAbility);
|
||||
}
|
||||
|
||||
// This sets oTarget to be immune to this spells effect from oCreature forever.
|
||||
// Sets a local int retrievable by SMP_GetIsImmuneToAbility().
|
||||
void SMP_SetIsImmuneToAbility(object oTarget, int nId, object oCreature = OBJECT_SELF)
|
||||
{
|
||||
SetLocalInt(oCreature, "SMP_IMMMUNE_TO_ABILITY" + IntToString(nId) + ObjectToString(oTarget), TRUE);
|
||||
}
|
||||
|
||||
// This will return TRUE if oTarget is immune to futher uses of nId ability
|
||||
// used by oCreature.
|
||||
int SMP_GetIsImmuneToAbility(object oTarget, int nId, object oCreature = OBJECT_SELF)
|
||||
{
|
||||
return GetLocalInt(oCreature, "SMP_IMMMUNE_TO_ABILITY" + IntToString(nId) + ObjectToString(oTarget));
|
||||
}
|
||||
|
||||
// Monster non-spell ability save.
|
||||
// - Uses SAVING_THROW_WILL, SAVING_THROW_REFLEX, SAVING_THROW_FORT.
|
||||
// functions: WillSave ReflexSave FortitudeSave.
|
||||
int SMP_SavingThrow(int nSavingThrow, object oTarget, int nDC, int nSaveType = SAVING_THROW_TYPE_NONE, object oSaveVersus = OBJECT_SELF, float fDelay = 0.0)
|
||||
{
|
||||
// This does not decrease the save if there are things like Protection from
|
||||
// Spells.
|
||||
// Declare things
|
||||
effect eVis;
|
||||
int bValid = FALSE;
|
||||
// Fortitude saving throw
|
||||
if(nSavingThrow == SAVING_THROW_FORT)
|
||||
{
|
||||
bValid = FortitudeSave(oTarget, nDC, nSaveType, oSaveVersus);
|
||||
if(bValid == 1)
|
||||
{
|
||||
eVis = EffectVisualEffect(VFX_IMP_FORTITUDE_SAVING_THROW_USE);
|
||||
}
|
||||
}
|
||||
// Reflex saving throw
|
||||
else if(nSavingThrow == SAVING_THROW_REFLEX)
|
||||
{
|
||||
bValid = ReflexSave(oTarget, nDC, nSaveType, oSaveVersus);
|
||||
if(bValid == 1)
|
||||
{
|
||||
eVis = EffectVisualEffect(VFX_IMP_REFLEX_SAVE_THROW_USE);
|
||||
}
|
||||
}
|
||||
// Will saving throw
|
||||
else if(nSavingThrow == SAVING_THROW_WILL)
|
||||
{
|
||||
bValid = WillSave(oTarget, nDC, nSaveType, oSaveVersus);
|
||||
if(bValid == 1)
|
||||
{
|
||||
eVis = EffectVisualEffect(VFX_IMP_WILL_SAVING_THROW_USE);
|
||||
}
|
||||
}
|
||||
/* No error checking (keeps it fast) we'd know anyway of errors!
|
||||
|
||||
Finally:
|
||||
return 0 = FAILED SAVE
|
||||
return 1 = SAVE SUCCESSFUL
|
||||
return 2 = IMMUNE TO WHAT WAS BEING SAVED AGAINST
|
||||
|
||||
We ignore 2, and say it is 0.
|
||||
*/
|
||||
// If 2, ignore
|
||||
if(bValid == 2)
|
||||
{
|
||||
bValid = 0;
|
||||
}
|
||||
// If we save, apply save effect.
|
||||
else if(bValid == 1)
|
||||
{
|
||||
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
|
||||
}
|
||||
return bValid;
|
||||
}
|
Reference in New Issue
Block a user