forked from Jaysyn/PRC8
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.
105 lines
3.8 KiB
Plaintext
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);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
}
|