Further file organization
Further file organization
This commit is contained in:
136
nwn/nwnprc/trunk/spells/sp_eyebite.nss
Normal file
136
nwn/nwnprc/trunk/spells/sp_eyebite.nss
Normal file
@@ -0,0 +1,136 @@
|
||||
/*:://////////////////////////////////////////////
|
||||
//:: 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user