Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
121 lines
4.4 KiB
Plaintext
121 lines
4.4 KiB
Plaintext
/*:://////////////////////////////////////////////
|
||
//:: Spell Name Foresight
|
||
//:: Spell FileName PHS_S_Foresight
|
||
//:://////////////////////////////////////////////
|
||
//:: In Game Spell desctiption
|
||
//:://////////////////////////////////////////////
|
||
Divination
|
||
Level: Drd 9, Knowledge 9, Sor/Wiz 9
|
||
Components: V, S, M/DF
|
||
Casting Time: 1 standard action
|
||
Range: Personal
|
||
Target: See text
|
||
Duration: 10 min./level
|
||
Saving Throw: None or Will negates (harmless)
|
||
Spell Resistance: No or Yes (harmless)
|
||
|
||
This spell grants you a powerful sixth sense in relation to yourself. Once
|
||
foresight is cast, you receive instantaneous warnings of impending danger or
|
||
harm to the yourself.
|
||
|
||
You recieve +4 inititive (Unless you already have improved inititive) and
|
||
become immune to knockdown, and gain the Uncanny Dodge feat, if you do not
|
||
already know it, so you are never caught flat footed.
|
||
|
||
In addition, the spell gives you a general idea of what action you might
|
||
take to best protect yourself and gives you a +2 dodge bonus to AC and
|
||
Reflex saves.
|
||
|
||
Arcane Material Component: A hummingbird’s feather.
|
||
//:://////////////////////////////////////////////
|
||
//:: Spell Effects Applied / Notes
|
||
//:://////////////////////////////////////////////
|
||
Different from 3E. Casts only on self is much easier :-)
|
||
|
||
It'd not grant as many bonuses to an ally anyway.
|
||
|
||
Immunity to knockdown, +4 intitive VIA Improved Inititive, Uncanny dodge
|
||
to retain thier dex bonus to thier AC. Add these feats onto the creature
|
||
hide. +2 AC and +2 reflex saves too.
|
||
|
||
Type of Feat: Class
|
||
Prerequisite: Barbarian level 2, rogue level 3, shadowdancer level 2 or
|
||
assassin level 2.
|
||
Specifics: The character retains his Dex bonus to AC, even if caught
|
||
flat-footed or attacked by a hidden or invisible creature.
|
||
Use: Automatic.
|
||
|
||
|
||
TO DO:
|
||
|
||
- Add correct feats to somewhere
|
||
|
||
The "somewhere" where the feats go is thier current armor. If unequipped,
|
||
the effects are lost.
|
||
//:://////////////////////////////////////////////
|
||
//:: Created By: Jasperre
|
||
//::////////////////////////////////////////////*/
|
||
|
||
#include "PHS_INC_SPELLS"
|
||
|
||
// These hold the all important weapon functions. Will seperate later and modify.
|
||
#include "prc_x2_itemprop"
|
||
|
||
void main()
|
||
{
|
||
// Spell Hook check
|
||
if(!PHS_SpellHookCheck(PHS_SPELL_FORESIGHT)) return;
|
||
|
||
// Declare Major Variables
|
||
object oCaster = OBJECT_SELF;
|
||
object oTarget = GetSpellTargetObject();// Should be OBJECT_SELF
|
||
object oArmor = GetItemInSlot(INVENTORY_SLOT_CHEST, oTarget);
|
||
int nCasterLevel = PHS_GetCasterLevel();
|
||
int nMetaMagic = PHS_GetMetaMagicFeat();
|
||
|
||
// Make sure they are not immune to spells
|
||
if(PHS_TotalSpellImmunity(oTarget)) return;
|
||
|
||
// If oArmor is not valid, we will at least use the creature hide
|
||
if(!GetIsObjectValid(oArmor))
|
||
{
|
||
// If this also is invalid, no feats are put on items.
|
||
oArmor = GetItemInSlot(INVENTORY_SLOT_CARMOUR, oTarget);
|
||
}
|
||
|
||
// Duration is 10 turns/level
|
||
float fDuration = PHS_GetDuration(PHS_MINUTES, nCasterLevel * 10, nMetaMagic);
|
||
|
||
// Declare effects
|
||
effect eDur = EffectVisualEffect(VFX_DUR_MAGICAL_SIGHT);
|
||
effect eAC = EffectACIncrease(2, AC_DODGE_BONUS);
|
||
effect eSave = EffectSavingThrowIncrease(SAVING_THROW_REFLEX, 2);
|
||
effect eImmune = EffectImmunity(IMMUNITY_TYPE_KNOCKDOWN);
|
||
effect eCessate = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
|
||
|
||
// Item properties. Need to update sometime to real ones.
|
||
itemproperty IP_UncannyDodge = ItemPropertyBonusFeat(IP_CONST_FEAT_DODGE);
|
||
itemproperty IP_ImprovedInitiative = ItemPropertyBonusFeat(IP_CONST_FEAT_DODGE);
|
||
|
||
// Link effects
|
||
effect eLink = EffectLinkEffects(eDur, eAC);
|
||
eLink = EffectLinkEffects(eLink, eSave);
|
||
eLink = EffectLinkEffects(eLink, eImmune);
|
||
eLink = EffectLinkEffects(eLink, eCessate);
|
||
|
||
// Signal spell cast at event
|
||
PHS_SignalSpellCastAt(oTarget, PHS_SPELL_FORESIGHT, FALSE);
|
||
|
||
// Remove previous castings
|
||
PHS_RemoveSpellEffectsFromTarget(PHS_SPELL_FORESIGHT, oTarget);
|
||
|
||
// Apply new effects
|
||
PHS_ApplyDuration(oTarget, eLink, fDuration);
|
||
|
||
if(GetIsObjectValid(oArmor))
|
||
{
|
||
IPSafeAddItemProperty(oArmor, IP_UncannyDodge, fDuration, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||
IPSafeAddItemProperty(oArmor, IP_ImprovedInitiative, fDuration, X2_IP_ADDPROP_POLICY_KEEP_EXISTING);
|
||
}
|
||
}
|