PRC8_fork/nwn/nwnprc/trunk/smp/phs_s_windwalk.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

105 lines
3.8 KiB
Plaintext

/*:://////////////////////////////////////////////
//:: Spell Name Wind Walk
//:: Spell FileName PHS_S_WindWalk
//:://////////////////////////////////////////////
//:: In Game Spell desctiption
//:://////////////////////////////////////////////
Transmutation [Air]
Level: Clr 6, Drd 7
Components: V, S, DF
Casting Time: 1 standard action
Range: 3M
Targets: You one allied creature per three levels in a 3M-radius sphere
Duration: 1 hour/level (D)
Saving Throw: No and Will negates (harmless)
Spell Resistance: No and Yes (harmless)
You alter the substance of your body to a cloudlike vapor (as the gaseous
form spell) and so cannot attack, but can move through the air and fly at
speed. In this sense, it acts similar to a Fly spell and while gaseous, you
can fly from a point to another point.
You may also transform other creatures from your party to be clouds with
you, and act independantly of you, as long as they are within 3 meters at
the time of casting.
Wind walkers are not invisible but rather appear misty and translucent, and
they are 80% likely to be mistaken for clouds, fog, vapors, or the like.
As noted above, you can dismiss the spell, and you can even dismiss it for
individual wind walkers and not others.
//:://////////////////////////////////////////////
//:: Spell Effects Applied / Notes
//:://////////////////////////////////////////////
To work:
- Act like Gaseous Form, and cannot use items or anything while as a cloud
Polymorph effect. The hide has 10/+20 DR, Immunity: Poison + critical hits.
It has a Miss chance of 100% put on it so it always misses, and polymorph
naturally stops spells.
- Therefore is a polymorh, with 100% miss chance, and cutseen ghost on them.
- Can also use a polymorph spell power, "Fly", to do the flying.
Affects all allies in 3M of the caster. This is good enough.
NOTE:
- Test to see if cancling still keeps the ghost effect or not. If so, we can
of course workaround it.
//:://////////////////////////////////////////////
//:: Created By: Jasperre
//::////////////////////////////////////////////*/
#include "PHS_INC_SPELLS"
void main()
{
// Spell Hook Check
if(!PHS_SpellHookCheck(PHS_SPELL_WIND_WALK)) return;
// Declare major variables
object oCaster = OBJECT_SELF;
object oTarget;
int nCasterLevel = PHS_GetCasterLevel();
int nMetaMagic = PHS_GetMetaMagicFeat();
// Count and limits
int nCount = -1;// We start at -1, and so the caster = +1, so makes 0 when doing party memebers
int nMaxCreatures = PHS_LimitInteger(nCasterLevel/3);
// Duration - 1 hour/level
float fDuration = PHS_GetDuration(PHS_HOURS, nCasterLevel, nMetaMagic);
// Declare effects
effect ePolymorph = EffectPolymorph(PHS_POLYMORPH_TYPE_WIND_WALK);
effect eGhost = EffectCutsceneGhost();
effect eMiss = EffectMissChance(100, MISS_CHANCE_TYPE_NORMAL);
// Link effects
effect eLink = EffectLinkEffects(ePolymorph, eGhost);
eLink = EffectLinkEffects(eLink, eMiss);
// Loop nearby creatures.
oTarget = oCaster;
while(GetIsObjectValid(oTarget) && nCount < nMaxCreatures)
{
// Check alliance
if(GetFactionEqual(oTarget, oCaster) || oTarget == oCaster)
{
// Make sure they are not immune to spells
if(PHS_TotalSpellImmunity(oTarget))
{
// Signal spell cast at event
PHS_SignalSpellCastAt(oTarget, PHS_SPELL_WIND_WALK, FALSE);
// Remove previous castings
PHS_RemoveSpellEffectsFromTarget(PHS_SPELL_WIND_WALK, oTarget);
// Apply new effects
PHS_ApplyPolymorphDuration(oTarget, eLink, fDuration);
}
}
}
}