Initial upload.
Adding base PRC 4.19a files to repository.
This commit is contained in:
104
trunk/smp/phs_s_windwalk.nss
Normal file
104
trunk/smp/phs_s_windwalk.nss
Normal file
@@ -0,0 +1,104 @@
|
||||
/*:://////////////////////////////////////////////
|
||||
//:: 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
Reference in New Issue
Block a user