Reorganized hak files & removed duplicates. Added @rafhot's PRC spell & ability level scaling expansion. Further script integration. Full compile.
111 lines
3.8 KiB
Plaintext
111 lines
3.8 KiB
Plaintext
//Include Name: epicdc_inc
|
|
/////////////////////////////////////
|
|
//Created by Genisys / Guile 6/14/08
|
|
/////////////////////////////////////
|
|
//NOTE: IF you change anything here
|
|
//you must build the module (Scripts only)
|
|
//or changes will not be saved!
|
|
|
|
////////////////EPIC DC BONUS OPTION SETTING/////////////////////////////////
|
|
/*
|
|
The # below, (eDC = #) is the # of levels a player must have over level 20
|
|
(caster levels) to gain a + 1 bonus to the spell's Saving Throw
|
|
Difficulty Class (DC) they are casting. (This system is on most spells)
|
|
(ie. +2 at caster level 26 if the # = 3) Recommended settings are 2 to 6.
|
|
Basically the # you enter is how many caster levels the PC needs over level
|
|
20 to get a +1 bonus. This script has been tested thoroughly.
|
|
*/
|
|
|
|
const int eDC = 2; //ie. 3 = + 1 / 3 levels over level 20 (caster levels)
|
|
// (ie. level 38 = + 6 Epic DC Bonus)
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
/*
|
|
*NOTE: Not All spells which allow saves work within this system.
|
|
Below are Spells which have thier own Epic DC Bonsus System set up within
|
|
the spell's script. (Make sure you change the # there! if you change it above!)
|
|
|
|
Combust ~ "x2_s0_combust"
|
|
Gedlee's Electric Loop ~ "x2_s0_elecloop"
|
|
|
|
This include script will allow you to easially add an Epic DC Bonus to spells
|
|
which you wish to modify. (Spells which I haven't modified yet.)
|
|
|
|
You can modify any spell within the NWN Toolset Script Editor, simply click
|
|
the open an exisiting file tab at the top of the script editor, then select
|
|
All Resources, then in the name box type: nw_s or x2_s , you should be able
|
|
to find the spell script you wish to edit there.
|
|
|
|
In the spell script you wish to add an Epic DC Bonus..
|
|
|
|
Directly below: #include "x2_inc_spellhook"
|
|
Type this: #include "epicdc_inc"
|
|
|
|
void main()
|
|
{
|
|
|
|
If the spell allows a save usually scripted like so:
|
|
|
|
PRCGetReflexAdjustedDamage(nDamage, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_FIRE);
|
|
if(MySavingThrow(SAVING_THROW_FORT, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_NONE, OBJECT_SELF, fDelay))
|
|
etc.
|
|
|
|
you can add an epic DC Bonus by replacing GetSpellSaveDC() with:
|
|
|
|
GetEpicSpellSaveDC()
|
|
|
|
like so...
|
|
PRCGetReflexAdjustedDamage(nDamage, oTarget, GetEpicSpellSaveDC(), SAVING_THROW_TYPE_FIRE);
|
|
|
|
IMPORTANT: Save the spell & build the module (scripts only!), then save module!
|
|
NOTE: you are not modifying the original, but your module will use the edited
|
|
version instead, the original cannot be modified by saving. Lastly you will
|
|
have to build the module (scripts only / click advanced tab),
|
|
and then save the module. I HIGHLY recommend you open up the module properties
|
|
of your module (select edit at the top), then select cached scripts once the
|
|
module properties dialogue box pops up. Find all of the scripts that you have
|
|
edited and add them to the list of cached scripts, but DO NOT cache includes,
|
|
as they are part of a script (not an actual script) and are treated as though
|
|
that include is part of the script you are caching. So, you would not want to
|
|
cache this script or the spellfunc_inc script either.
|
|
|
|
(DO NOT TOUCH ANYTHING BELOW OR THIS LINE!) */
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
#include "prc_inc_spells"
|
|
//////Protoype (Defined)//////////
|
|
int GetEpicSpellSaveDC()
|
|
{
|
|
int bDC;
|
|
|
|
object oCaster = OBJECT_SELF;
|
|
int nDCBonus;
|
|
int nLvl = GetCasterLevel(OBJECT_SELF);
|
|
int aInt = eDC - 1;
|
|
int bInt = nLvl + aInt;
|
|
|
|
int cInt = nLvl - 20;
|
|
int dInt = cInt / eDC;
|
|
int gInt = dInt;
|
|
|
|
//Obviously they qualify for a epic bonus DC..
|
|
if(bInt >1)
|
|
{
|
|
nDCBonus = gInt;
|
|
|
|
string sMessage;
|
|
sMessage = "Your Epic DC Bonus = +";
|
|
sMessage += IntToString(nDCBonus);
|
|
|
|
SendMessageToPC(oCaster, sMessage);
|
|
}
|
|
|
|
else
|
|
{
|
|
nDCBonus = 0;
|
|
}
|
|
|
|
bDC = GetSpellSaveDC() + nDCBonus;
|
|
return bDC;
|
|
|
|
//End Prototype Definition
|
|
}
|