PRC8_fork/trunk/smp/phs_s_modifymemo.nss

84 lines
2.7 KiB
Plaintext
Raw Normal View History

/*:://////////////////////////////////////////////
//:: Spell Name Modify Memory
//:: Spell FileName PHS_S_ModifyMemo
//:://////////////////////////////////////////////
//:: In Game Spell desctiption
//:://////////////////////////////////////////////
Modify Memory
Enchantment (Compulsion) [Mind-Affecting]
Level: Brd 4
Components: V, S
Casting Time: 1 round; see text
Range: Close (8M)
Target: One living creature
Duration: Permanent
Saving Throw: Will negates
Spell Resistance: Yes
DM Spell: Yes
This is a DM spell. The visual effects and saves are present, but nothing
else. You should make sure the target is able to change its memory, such
as another PC, or have a DM present if you are modifying the memory of an NPC.
You reach into the subject<63>s mind and modify as many as 5 minutes of its
memories in one of the following ways.
More description.
//:://////////////////////////////////////////////
//:: Spell Effects Applied / Notes
//:://////////////////////////////////////////////
DM spell only.
Will have the save and SR checks as normal, and relays to DMs and the
caster.
//:://////////////////////////////////////////////
//:: Created By: Jasperre
//::////////////////////////////////////////////*/
#include "PHS_INC_SPELLS"
void main()
{
// Spell Hook Check.
if(!PHS_SpellHookCheck(PHS_SPELL_MODIFY_MEMORY)) return;
//Declare major variables
object oCaster = OBJECT_SELF;
object oTarget = GetSpellTargetObject();
int nSpellSaveDC = PHS_GetSpellSaveDC();
int nCasterLevel = PHS_GetCasterLevel();
// Declare Effects
effect eVis = EffectVisualEffect(PHS_VFX_IMP_MODIFY_MEMORY);
// Always fire spell cast at event
PHS_SignalSpellCastAt(oTarget, PHS_SPELL_MODIFY_MEMORY, FALSE);
// PvP Check
if(!GetIsReactionTypeFriendly(oTarget))
{
// Check spell resistance and immunities.
if(!PHS_SpellResistanceCheck(oCaster, oTarget))
{
// Immunity: Mind spells
if(!PHS_ImmunityCheck(oTarget, IMMUNITY_TYPE_MIND_SPELLS) &&
!PHS_SpellsIsMindless(oTarget))
{
// Make Will Save to negate effect
if(!PHS_SavingThrow(SAVING_THROW_WILL, oTarget, nSpellSaveDC, SAVING_THROW_TYPE_MIND_SPELLS))
{
// Notify DM's:
PHS_AlertDMsOfSpell("Modify Memory (SUCEEDED)", nSpellSaveDC, nCasterLevel);
// Apply VFX Impact and daze effect
PHS_ApplyVFX(oTarget, eVis);
return;
}
}
}
}
// Failed
// Notify DM's:
PHS_AlertDMsOfSpell("Modify Memory (FAILED)", nSpellSaveDC, nCasterLevel);
}