Updated AMS marker feats. Removed arcane & divine marker feats. Updated Dread Necromancer for epic progression. Updated weapon baseitem models. Updated new weapons for crafting & npc equip. Updated prefix. Updated release archive.
151 lines
5.3 KiB
Plaintext
151 lines
5.3 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Psionics include: Energy powers
|
|
//:: psi_inc_enrgypow
|
|
//::///////////////////////////////////////////////
|
|
/** @file
|
|
Defines function and structure for determining
|
|
energy-type dependent features of the Energy X
|
|
line of powers.
|
|
|
|
|
|
@author Ornedan
|
|
@date Created - 2005.12.12
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:://////////////////////////////////////////////
|
|
|
|
//////////////////////////////////////////////////
|
|
/* Structures */
|
|
//////////////////////////////////////////////////
|
|
|
|
/**
|
|
* A structure for passing the Energy type modification
|
|
* data back to the power script.
|
|
*/
|
|
struct energy_adjustments{
|
|
int nBonusPerDie;
|
|
int nSaveType;
|
|
int nDamageType;
|
|
int nDCMod;
|
|
int nPenMod;
|
|
int nVFX1;
|
|
int nVFX2;
|
|
};
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
/* Function prototypes */
|
|
//////////////////////////////////////////////////
|
|
|
|
/**
|
|
* Determines the energy-dependent adjustments to damage per die, DC and
|
|
* manifester level in regards to Power Resistance. Also does VFX, saving
|
|
* throw type and damage type.
|
|
*
|
|
* @param nSpellID SpellID of the power being manifested
|
|
* @param nSpellID_Cold SpellID of the cold version of the power
|
|
* @param nSpellID_Elec SpellID of the electricity version of the power
|
|
* @param nSpellID_Fire SpellID of the fire version of the power
|
|
* @param nSpellID_Sonic SpellID of the sonic version of the power
|
|
* @param nVFX2_Cold Power specific VFX for cold
|
|
* @param nVFX2_Elec Power specific VFX for electricity
|
|
* @param nVFX2_Fire Power specific VFX for fire
|
|
* @param nVFX2_Sonic Power specific VFX for sonic
|
|
*/
|
|
struct energy_adjustments EvaluateEnergy(int nSpellID, int nSpellID_Cold, int nSpellID_Elec, int nSpellID_Fire, int nSpellID_Sonic,
|
|
int nVFX2_Cold = 0, int nVFX2_Elec = 0, int nVFX2_Fire = 0, int nVFX2_Sonic = 0);
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
/* Includes */
|
|
//////////////////////////////////////////////////
|
|
|
|
#include "inc_utility"
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
/* Function definitions */
|
|
//////////////////////////////////////////////////
|
|
|
|
struct energy_adjustments EvaluateEnergy(int nSpellID, int nSpellID_Cold, int nSpellID_Elec, int nSpellID_Fire, int nSpellID_Sonic,
|
|
int nVFX2_Cold = 0, int nVFX2_Elec = 0, int nVFX2_Fire = 0, int nVFX2_Sonic = 0)
|
|
{
|
|
struct energy_adjustments eaRet;
|
|
|
|
if(nSpellID == nSpellID_Cold)
|
|
{
|
|
eaRet.nBonusPerDie = 1;
|
|
eaRet.nSaveType = SAVING_THROW_TYPE_COLD;
|
|
eaRet.nDamageType = DAMAGE_TYPE_COLD;
|
|
eaRet.nDCMod = 0;
|
|
eaRet.nPenMod = 0;
|
|
eaRet.nVFX1 = VFX_IMP_FROST_S;
|
|
eaRet.nVFX2 = nVFX2_Cold;
|
|
}
|
|
else if(nSpellID == nSpellID_Elec)
|
|
{
|
|
eaRet.nBonusPerDie = 0;
|
|
eaRet.nSaveType = SAVING_THROW_TYPE_ELECTRICITY;
|
|
eaRet.nDamageType = DAMAGE_TYPE_ELECTRICAL;
|
|
eaRet.nDCMod = 2;
|
|
eaRet.nPenMod = 2;
|
|
eaRet.nVFX1 = VFX_IMP_LIGHTNING_S;
|
|
eaRet.nVFX2 = nVFX2_Elec;
|
|
}
|
|
else if(nSpellID == nSpellID_Fire)
|
|
{
|
|
eaRet.nBonusPerDie = 1;
|
|
eaRet.nSaveType = SAVING_THROW_TYPE_FIRE;
|
|
eaRet.nDamageType = DAMAGE_TYPE_FIRE;
|
|
eaRet.nDCMod = 0;
|
|
eaRet.nPenMod = 0;
|
|
eaRet.nVFX1 = VFX_IMP_FLAME_S;
|
|
eaRet.nVFX2 = nVFX2_Fire;
|
|
}
|
|
else if(nSpellID == nSpellID_Sonic)
|
|
{
|
|
eaRet.nBonusPerDie = -1;
|
|
eaRet.nSaveType = SAVING_THROW_TYPE_SONIC;
|
|
eaRet.nDamageType = DAMAGE_TYPE_SONIC;
|
|
eaRet.nDCMod = 0;
|
|
eaRet.nPenMod = 0;
|
|
eaRet.nVFX1 = VFX_IMP_SONIC;
|
|
eaRet.nVFX2 = nVFX2_Sonic;
|
|
}
|
|
else
|
|
{
|
|
string sErr = "EvaluateEnergy(): ERROR: SpellID does not match any of the given IDs\n"
|
|
+ "Given ID: " + IntToString(nSpellID) + "\n"
|
|
+ "Cold ID: " + IntToString(nSpellID_Cold) + "\n"
|
|
+ "Electricity ID: " + IntToString(nSpellID_Elec) + "\n"
|
|
+ "Fire ID: " + IntToString(nSpellID_Fire) + "\n"
|
|
+ "Sonic ID: " + IntToString(nSpellID_Sonic) + "\n"
|
|
;
|
|
if(DEBUG) DoDebug(sErr);
|
|
else WriteTimestampedLogEntry(sErr);
|
|
}
|
|
|
|
//Energy Draconic Aura boosts
|
|
if (eaRet.nDamageType == DAMAGE_TYPE_FIRE && (GetLocalInt(OBJECT_SELF, "FireEnergyAura") > 0))
|
|
{
|
|
eaRet.nDCMod += GetLocalInt(OBJECT_SELF, "FireEnergyAura");
|
|
}
|
|
else if (eaRet.nDamageType == DAMAGE_TYPE_COLD && (GetLocalInt(OBJECT_SELF, "ColdEnergyAura") > 0))
|
|
{
|
|
eaRet.nDCMod += GetLocalInt(OBJECT_SELF, "ColdEnergyAura");
|
|
}
|
|
else if (eaRet.nDamageType == DAMAGE_TYPE_ELECTRICAL && (GetLocalInt(OBJECT_SELF, "ElecEnergyAura") > 0))
|
|
{
|
|
eaRet.nDCMod += GetLocalInt(OBJECT_SELF, "ElecEnergyAura");
|
|
}
|
|
else if (eaRet.nDamageType == DAMAGE_TYPE_ACID && (GetLocalInt(OBJECT_SELF, "AcidEnergyAura") > 0))
|
|
{
|
|
eaRet.nDCMod += GetLocalInt(OBJECT_SELF, "AcidEnergyAura");
|
|
}
|
|
|
|
return eaRet;
|
|
}
|
|
|
|
// Test main
|
|
//void main(){}
|