PRC8/nwn/nwnprc/trunk/smp/phs_s_statue.nss
Jaysyn904 6ec137a24e Updated AMS marker feats
Updated AMS marker feats.  Removed arcane & divine marker feats.  Updated Dread Necromancer for epic progression. Updated weapon baseitem models.  Updated new weapons for crafting & npc equip.
 Updated prefix.  Updated release archive.
2024-02-11 14:01:05 -05:00

125 lines
4.7 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*:://////////////////////////////////////////////
//:: Spell Name Statue
//:: Spell FileName PHS_S_Statue
//:://////////////////////////////////////////////
//:: In Game Spell desctiption
//:://////////////////////////////////////////////
Statue
Transmutation
Level: Sor/Wiz 7
Components: V, S, M
Casting Time: 1 round
Range: Touch
Target: Willing Creature touched
Duration: 1 hour/level (D)
Saving Throw: Will negates (harmless)
Spell Resistance: Yes (harmless)
A statue spell turns the subject to solid stone, along with any garments and
equipment worn or carried. In statue form, the subject gains hardness 8. The
subject retains its own hit points.
The subject can see, hear, and smell normally, but it does not need to eat
or breathe. Feeling is limited to those sensations that can affect the
granite-hard substance of the individuals body. Chipping is equal to a mere
scratch, but breaking off one of the statues arms constitutes serious
damage.
The subject of a statue spell can return to its normal state, act, and then
return instantly to the statue state (a free action) if it so desires, as
long as the spell duration is in effect.
This spell only works on player character allies. It will not operate on
non-players, or non-allies.
Material Component: Lime, sand, and a drop of water stirred by an iron bar,
such as a nail or spike.
//:://////////////////////////////////////////////
//:: Spell Effects Applied / Notes
//:://////////////////////////////////////////////
Applies a magical effect (for dispelling) which is cessate.
Also creates a monster (with a heartbeat) to check for the spell (and remove
the Granite effects if so) and also check if they wish to remove the
spells effects.
It will relay the instructions: "Whisper "move" to move again and "statue" to
turn back into a statue"
The creature will apply the first effects, too. It'll use the effects
creator to determine which are the granite effects.
//:://////////////////////////////////////////////
//:: Created By: Jasperre
//::////////////////////////////////////////////*/
#include "PHS_INC_SPELLS"
void main()
{
// Spell Hook Check.
if(!PHS_SpellHookCheck(PHS_SPELL_STATUE)) return;
// Declare major variables
object oCaster = OBJECT_SELF;
object oTarget = GetSpellTargetObject();
int nCasterLevel = PHS_GetCasterLevel();
int nMetaMagic = PHS_GetMetaMagicFeat();
// Must be a willing, PC character
if(!GetFactionEqual(oCaster, oTarget) || !GetIsPC(oTarget))
{
// Must be a PC, in the party
FloatingTextStringOnCreature("*You must cast Statue on a PC party member*", oCaster, FALSE);
return;
}
// Make sure they are not immune to spells
if(PHS_TotalSpellImmunity(oTarget)) return;
// Duration - 1 hour/level
float fDuration = PHS_GetDuration(PHS_HOURS, nCasterLevel, nMetaMagic);
// Declare effects
effect eCessate = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
// These ones are to be used (not here) to provide the statue effect, and
// will be supernatural
/*
// Hardness 8
effect eHardness1 = EffectDamageResistance(DAMAGE_TYPE_PIERCING, 8);
effect eHardness2 = EffectDamageResistance(DAMAGE_TYPE_SLASHING, 8);
effect eHardness3 = EffectDamageResistance(DAMAGE_TYPE_BLUDGEONING, 8);
// Visual and stopping effect
// * Also adds all the things a statue would be immune to (criticals ETC)
effect eStatue = PHS_CreateProperPetrifyEffectLink();
// Link these effects
effect eLink = EffectLinkEffects(eStatue, eHardness1);
effect eLink = EffectLinkEffects(eLink, eHardness2);
effect eLink = EffectLinkEffects(eLink, eHardness3);
*/
// Remove previous effects
PHS_RemoveSpellEffectsFromTarget(PHS_SPELL_STATUE, oTarget);
// Signal spell cast at
PHS_SignalSpellCastAt(oTarget, PHS_SPELL_STATUE, FALSE);
// Increment how many times this spell has been cast (for the following
// creatures to measure)
int nTimesCast = PHS_IncreaseStoredInteger(oTarget, "PHS_SPELL_STATUE_CAST_TIMES");
// Create the creature to follow them.
object oStatueMaker = CreateObject(OBJECT_TYPE_CREATURE, "phs_statuemaker", GetLocation(oTarget));
// Set the integer of times cast, and the master of the creature
SetLocalObject(oStatueMaker, "PHS_SPELL_STATUE_MASTER", oTarget);
SetLocalInt(oStatueMaker, "PHS_SPELL_STATUE_CAST_TIMES", nTimesCast);
// Tell the PC how to make themselves into a statue ETC.
FloatingTextStringOnCreature("*To let yourself move again, whisper 'move'. Say 'statue' to become granite again*", oTarget, FALSE);
// Apply effects to the target
PHS_ApplyDuration(oTarget, eCessate, fDuration);
}