Further file organization
Further file organization
This commit is contained in:
119
nwn/nwnprc/trunk/smp/phs_s_markofjust.nss
Normal file
119
nwn/nwnprc/trunk/smp/phs_s_markofjust.nss
Normal file
@@ -0,0 +1,119 @@
|
||||
/*:://////////////////////////////////////////////
|
||||
//:: Spell Name Mark of Justice
|
||||
//:: Spell FileName PHS_S_MarkofJust
|
||||
//:://////////////////////////////////////////////
|
||||
//:: In Game Spell desctiption
|
||||
//:://////////////////////////////////////////////
|
||||
Necromancy
|
||||
Level: Clr 5, Pal 4
|
||||
Components: V, S, DF
|
||||
Casting Time: 10 minutes
|
||||
Range: Touch
|
||||
Target: Creature touched
|
||||
Duration: Permanent; see text
|
||||
Saving Throw: None
|
||||
Spell Resistance: Yes
|
||||
|
||||
You draw an indelible mark on the subject and state some behavior on the part
|
||||
of the subject that will activate the mark. When activated, the mark curses
|
||||
the subject. Typically, you designate some sort of criminal behavior that
|
||||
activates the mark, but you can pick any act you please. The effect of the
|
||||
mark is identical with the effect of bestow curse.
|
||||
|
||||
Since this spell takes 10 minutes to cast and involves writing on the target,
|
||||
you can cast it only on a creature that is willing or restrained.
|
||||
|
||||
Like the effect of bestow curse, a mark of justice cannot be dispelled, but
|
||||
it can be removed with a break enchantment, limited wish, miracle, remove
|
||||
curse, or wish spell. Remove curse works only if its caster level is equal
|
||||
to or higher than your mark of justice caster level. These restrictions
|
||||
apply regardless of whether the mark has activated.
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Spell Effects Applied / Notes
|
||||
//:://////////////////////////////////////////////
|
||||
Target must be within 5 meters, as to be restrained or willing, as they
|
||||
can start casting and then the target move out of range in NwN.
|
||||
|
||||
Not sure how to do this really, not fully anyway...
|
||||
|
||||
I will, however, just do the whole casting on them to start with.
|
||||
|
||||
Oh, and if it is cast on the caster itself, then it activates the mark
|
||||
with a local object as the target of the curse (-2 in all stats).
|
||||
|
||||
Effects are supernatural.
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: Jasperre
|
||||
//::////////////////////////////////////////////*/
|
||||
|
||||
#include "PHS_INC_SPELLS"
|
||||
|
||||
void main()
|
||||
{
|
||||
// Declare major variables
|
||||
object oCaster = OBJECT_SELF;
|
||||
object oTarget= GetSpellTargetObject();
|
||||
int nCasterLevel = PHS_GetCasterLevel();
|
||||
effect eVis, eCurse, eDur, eLink;
|
||||
|
||||
// Check if oTarget == oCaster
|
||||
if(oTarget == oCaster)
|
||||
{
|
||||
// Check if we have a valid object
|
||||
object oCurse = GetLocalObject(oCaster, "PHS_MARK_JUSTICE_CURSETARGET");
|
||||
|
||||
if(GetIsObjectValid(oCurse))
|
||||
{
|
||||
// Apply curse to oCurse
|
||||
eVis = EffectVisualEffect(PHS_VFX_IMP_MARK_OF_JUSTICE_CURSE);
|
||||
|
||||
// Apply curse
|
||||
eCurse = EffectCurse(2, 2, 2, 2, 2, 2);
|
||||
eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
||||
|
||||
// Link effects
|
||||
eLink = EffectLinkEffects(eCurse, eDur);
|
||||
eLink = SupernaturalEffect(eLink);
|
||||
|
||||
// Apply it to the target. Can be broken as normal.
|
||||
PHS_ApplyPermanentAndVFX(oTarget, eVis, eDur);
|
||||
|
||||
// Stop rest of the script.
|
||||
return;
|
||||
}
|
||||
// If not valid, we can activate such a mark on ourselves.
|
||||
}
|
||||
|
||||
// Spell Hook Check.
|
||||
if(!PHS_SpellHookCheck(PHS_SPELL_MARK_OF_JUSTICE)) return;
|
||||
|
||||
// Declare effects
|
||||
eVis = EffectVisualEffect(PHS_VFX_IMP_MARK_OF_JUSTICE);
|
||||
eDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_POSITIVE);
|
||||
|
||||
// Make it a supernatural effect
|
||||
// - Cannot be dispelled
|
||||
eDur = SupernaturalEffect(eDur);
|
||||
|
||||
// PvP check
|
||||
if(!GetIsReactionTypeFriendly(oTarget))
|
||||
{
|
||||
// they need to be in range
|
||||
if(GetDistanceToObject(oTarget) < 5.0)
|
||||
{
|
||||
// Fire cast spell at event for the specified target
|
||||
PHS_SignalSpellCastAt(oTarget, PHS_SPELL_MARK_OF_JUSTICE);
|
||||
|
||||
// Check spell reistance and immunity
|
||||
if(!PHS_SpellResistanceCheck(oCaster, oTarget))
|
||||
{
|
||||
// Apply the duration effect
|
||||
PHS_ApplyPermanentAndVFX(oTarget, eVis, eDur);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
FloatingTextStringOnCreature("You must be within range of the target to mark at the end of conjuring Mark of Justice.", oCaster, FALSE);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user