forked from Jaysyn/PRC8
137 lines
5.8 KiB
Plaintext
137 lines
5.8 KiB
Plaintext
|
/*:://////////////////////////////////////////////
|
|||
|
//:: Spell Name Eyebite
|
|||
|
//:: Spell FileName PHS_S_Eyebite
|
|||
|
//:://////////////////////////////////////////////
|
|||
|
//:: In Game Spell desctiption
|
|||
|
//:://////////////////////////////////////////////
|
|||
|
Target: One living creature Duration: 1 round per three levels; see text
|
|||
|
Saving Throw: Fortitude negates Spell Resistance: Yes
|
|||
|
|
|||
|
Each round, you may target a single living creature, striking it with waves
|
|||
|
of evil power. Depending on the target<65>s HD, this attack has as many as three
|
|||
|
effects.
|
|||
|
|
|||
|
HD Effect
|
|||
|
10 or more Sickened
|
|||
|
5-9 Panicked, sickened
|
|||
|
4 or less Comatose, panicked, sickened
|
|||
|
|
|||
|
The effects are cumulative and concurrent.
|
|||
|
|
|||
|
Sickened: Sudden pain and fever sweeps over the subject<63>s body. A sickened
|
|||
|
creature takes a -2 penalty on attack rolls, weapon damage rolls, saving
|
|||
|
throws, and skills. A creature affected by this spell remains sickened for
|
|||
|
10 minutes per caster level. The effects cannot be negated by a remove
|
|||
|
disease or heal spell, but a remove curse is effective.
|
|||
|
|
|||
|
Panicked: The subject becomes panicked for for 10 minutes per caster level.
|
|||
|
This is a fear effect.
|
|||
|
|
|||
|
Comatose: The subject falls into a catatonic standing coma for 10 minutes per
|
|||
|
caster level. During this time, it cannot be awakened by any means short of
|
|||
|
dispelling the effect. This is not a sleep effect, and thus elves are not
|
|||
|
immune to it.
|
|||
|
|
|||
|
The spell lasts for 1 round per three caster levels. You can target a new
|
|||
|
target until this duration expires using the Class Item you have.
|
|||
|
//:://////////////////////////////////////////////
|
|||
|
//:: Spell Effects Applied / Notes
|
|||
|
//:://////////////////////////////////////////////
|
|||
|
Should be as spell effect, BUT camatose is a special function with animations
|
|||
|
to make them "sleep"
|
|||
|
//:://////////////////////////////////////////////
|
|||
|
//:: Created By: Jasperre
|
|||
|
//:: Converted to PRC: Stratovarius
|
|||
|
//::////////////////////////////////////////////*/
|
|||
|
|
|||
|
#include "prc_inc_spells"
|
|||
|
#include "prc_add_spell_dc"
|
|||
|
|
|||
|
void main()
|
|||
|
{
|
|||
|
// Spell hook check.
|
|||
|
if(!X2PreSpellCastCode()) return;
|
|||
|
|
|||
|
// Declare Major Variables
|
|||
|
object oCaster = OBJECT_SELF;
|
|||
|
object oTarget = GetSpellTargetObject();
|
|||
|
int nMetaMagic = PRCGetMetaMagicFeat();
|
|||
|
int nCasterLvl = PRCGetCasterLevel(oCaster);
|
|||
|
int nPenetr = nCasterLvl + SPGetPenetr();
|
|||
|
int nDC = PRCGetSaveDC(oTarget, oCaster);
|
|||
|
int nSpellID = PRCGetSpellId();
|
|||
|
int nHD, bCommandable;
|
|||
|
|
|||
|
// Duration is 10 minutes/caster level
|
|||
|
float fDuration = nCasterLvl * 600.0;
|
|||
|
if (nMetaMagic & METAMAGIC_EXTEND)
|
|||
|
{
|
|||
|
fDuration = (fDuration * 2);
|
|||
|
}
|
|||
|
// Panicked: The subject becomes panicked for for 10 minutes per caster level.
|
|||
|
// This is a fear effect.
|
|||
|
effect ePanicked = EffectFrightened();
|
|||
|
effect ePanickedDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR);
|
|||
|
|
|||
|
effect ePanickedLink = EffectLinkEffects(ePanicked, ePanickedDur);
|
|||
|
|
|||
|
// Comatose: The subject falls into a catatonic standing coma for 10 minutes per
|
|||
|
// caster level. During this time, it cannot be awakened by any means short of
|
|||
|
// dispelling the effect. This is not a sleep effect, and thus elves are not
|
|||
|
// immune to it.
|
|||
|
effect eComatosePara = EffectCutsceneParalyze();
|
|||
|
effect eComatoseDur = EffectVisualEffect(VFX_DUR_FREEZE_ANIMATION);
|
|||
|
effect eComatoseVis = EffectVisualEffect(VFX_IMP_SLEEP);
|
|||
|
|
|||
|
effect eComatoseLink = EffectLinkEffects(eComatosePara, eComatoseDur);
|
|||
|
|
|||
|
// Check PvP settings
|
|||
|
if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster) && PRCGetIsAliveCreature(oTarget))
|
|||
|
{
|
|||
|
// Signal event
|
|||
|
PRCSignalSpellEvent(oTarget);
|
|||
|
|
|||
|
// Check spell resistance
|
|||
|
if(!PRCDoResistSpell(oCaster, oTarget, nPenetr))
|
|||
|
{
|
|||
|
// Check fortitude save (Evil save)
|
|||
|
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_EVIL))
|
|||
|
{
|
|||
|
nHD = GetHitDice(oTarget);
|
|||
|
// If they fail, do effects based on hit dice
|
|||
|
|
|||
|
// We always apply the sickening effect
|
|||
|
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectSickened(), oTarget, fDuration, TRUE, nSpellID, nCasterLvl);
|
|||
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DISEASE_S), oTarget);
|
|||
|
|
|||
|
// Anything at 9 or under is feared
|
|||
|
if(nHD <= 9)
|
|||
|
{
|
|||
|
// Apply sickening effect
|
|||
|
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePanickedLink, oTarget, RoundsToSeconds(d4()), TRUE, nSpellID, nCasterLvl);
|
|||
|
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectShaken(), oTarget, fDuration, TRUE, nSpellID, nCasterLvl);
|
|||
|
|
|||
|
// Anything at 4 or under is camatosed.
|
|||
|
if(nHD <= 4)
|
|||
|
{
|
|||
|
// camatosed means, basically, a
|
|||
|
// "PlayAnimation(ANIMATION_LOOPING_DEAD_FRONT, 1.0, 10.0)"
|
|||
|
// and then instantly apply effects to stay looping dead.
|
|||
|
bCommandable = GetCommandable(oTarget);
|
|||
|
if(!bCommandable) SetCommandable(TRUE, oTarget);
|
|||
|
|
|||
|
// Make them go down
|
|||
|
AssignCommand(oTarget, ClearAllActions());
|
|||
|
AssignCommand(oTarget, PlayAnimation(ANIMATION_LOOPING_DEAD_FRONT, 1.0, 10.0));
|
|||
|
// Apply duration after 1 second
|
|||
|
DelayCommand(1.0, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eComatoseLink, oTarget, fDuration, TRUE, nSpellID, nCasterLvl));
|
|||
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eComatoseVis, oTarget);
|
|||
|
// Reset commandable flag
|
|||
|
SetCommandable(bCommandable, oTarget);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|