forked from Jaysyn/PRC8
87 lines
2.9 KiB
Plaintext
87 lines
2.9 KiB
Plaintext
|
/*:://////////////////////////////////////////////
|
|||
|
//:: Spell Name Blight
|
|||
|
//:: Spell FileName PHS_S_Blight
|
|||
|
//:://////////////////////////////////////////////
|
|||
|
//:: In Game Spell desctiption
|
|||
|
//:://////////////////////////////////////////////
|
|||
|
Touch Range, Fort half + SR applies.
|
|||
|
|
|||
|
This spell withers a single plant of any size. An affected plant creature
|
|||
|
takes 1d6 points of damage per level (maximum 15d6) and may attempt a
|
|||
|
Fortitude saving throw for half damage. A plant that isn<73>t a creature
|
|||
|
doesn<73>t receive a save and immediately withers and dies.
|
|||
|
|
|||
|
This spell has no effect on the soil or surrounding plant life.
|
|||
|
//:://////////////////////////////////////////////
|
|||
|
//:: Spell Effects Applied / Notes
|
|||
|
//:://////////////////////////////////////////////
|
|||
|
As spell description.
|
|||
|
|
|||
|
Subrace must be equal to Plant, of course, or the plant integer...
|
|||
|
|
|||
|
PHS_PLANT
|
|||
|
|
|||
|
Placeables, if the integer for "plant" is set on them, are also destroyed.
|
|||
|
//:://////////////////////////////////////////////
|
|||
|
//:: Created By: Jasperre
|
|||
|
//::////////////////////////////////////////////*/
|
|||
|
|
|||
|
#include "PHS_INC_SPELLS"
|
|||
|
|
|||
|
void main()
|
|||
|
{
|
|||
|
// Spell hook check.
|
|||
|
if(!PHS_SpellHookCheck()) return;
|
|||
|
|
|||
|
// Declare Major Variables
|
|||
|
object oCaster = OBJECT_SELF;
|
|||
|
object oTarget = GetSpellTargetObject();
|
|||
|
int nTargetType = GetObjectType(oTarget);
|
|||
|
int nSpellSaveDC = PHS_GetSpellSaveDC();
|
|||
|
int nCasterLevel = PHS_GetCasterLevel();
|
|||
|
int nMetaMagic = PHS_GetMetaMagicFeat();
|
|||
|
int nDam;
|
|||
|
// Limit to 15 dice of damage
|
|||
|
int nDice = PHS_LimitInteger(nCasterLevel, 15);
|
|||
|
|
|||
|
// Make sure they are not immune to spells
|
|||
|
if(PHS_TotalSpellImmunity(oTarget)) return;
|
|||
|
|
|||
|
// Declare effects
|
|||
|
effect eVis = EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_NATURE);
|
|||
|
|
|||
|
// Target type can be a placeable, or a creature.
|
|||
|
if(PHS_GetIsPlant(oTarget))
|
|||
|
{
|
|||
|
// Signal spell cast at
|
|||
|
PHS_SignalSpellCastAt(oTarget, PHS_SPELL_BLIGHT);
|
|||
|
|
|||
|
// Spell resistance and immunity
|
|||
|
if(!PHS_SpellResistanceCheck(oCaster, oTarget))
|
|||
|
{
|
|||
|
// Check object type
|
|||
|
if(nTargetType == OBJECT_TYPE_PLACEABLE)
|
|||
|
{
|
|||
|
// Instant destroy - auto wither and die. We do damage to it to
|
|||
|
// get a nice effect from killing it (or none, of course).
|
|||
|
PHS_ApplyDeathByDamage(oTarget);
|
|||
|
}
|
|||
|
else //if(nTargetType == OBJECT_TYPE_CREATURE)
|
|||
|
{
|
|||
|
// 15d6 damage max.
|
|||
|
nDam = PHS_MaximizeOrEmpower(6, nDice, nMetaMagic);
|
|||
|
|
|||
|
// Fortitude save for half
|
|||
|
nDam = PHS_GetAdjustedDamage(SAVING_THROW_FORT, nDam, oTarget, nSpellSaveDC, SAVING_THROW_TYPE_NEGATIVE, oCaster);
|
|||
|
|
|||
|
// If got damage, do it
|
|||
|
if(nDam > 0)
|
|||
|
{
|
|||
|
// Apply effects, and damage
|
|||
|
PHS_ApplyDamageVFXToObject(oTarget, eVis, nDam, DAMAGE_TYPE_NEGATIVE);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|