PRC8_fork/trunk/smp/phs_s_gaseousfor.nss

87 lines
3.3 KiB
Plaintext
Raw Normal View History

/*:://////////////////////////////////////////////
//:: Spell Name Gaseous Form
//:: Spell FileName PHS_S_GaseousFor
//:://////////////////////////////////////////////
//:: In Game Spell desctiption
//:://////////////////////////////////////////////
Transmutation
Level: Air 3, Brd 3, Sor/Wiz 3
Components: S, M/DF
Casting Time: 1 standard action
Range: Touch
Target: Willing corporeal creature touched
Duration: 2 min./level (D)
Saving Throw: None
Spell Resistance: No
The subject and all its gear become insubstantial, misty, and translucent.
Its material armor (including natural armor) becomes worthless, though its
size, Dexterity, deflection bonuses, and armor bonuses from force effects
(such as spells) still apply. The subject gains damage reduction 10/+20 and
becomes immune to poison and critical hits. It can<61>t attack or cast spells
while in gaseous form. The subject also loses supernatural abilities while
in gaseous form. If it has a touch spell ready to use, that spell is
discharged harmlessly when the gaseous form spell takes effect.
The creature is subject to the effects of wind, and it can<61>t enter water or
other liquid. It also can<61>t manipulate objects or activate items, even those
carried along with its gaseous form. Continuously active items remain active,
though in some cases their effects may be moot.
Arcane Material Component: A bit of gauze and a wisp of smoke.
//:://////////////////////////////////////////////
//:: Spell Effects Applied / Notes
//:://////////////////////////////////////////////
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.
Items can't be used in polymorph. The good thing aobut this is the Ghost
ability - using EffectCutseenGhost(), and you keep all of your normal things.
Might need to add to the spellhook to stop item useage (any) with this
applied.
Oh, subject to Wind Wall too, as it states in the spell.
//:://////////////////////////////////////////////
//:: Created By: Jasperre
//::////////////////////////////////////////////*/
#include "PHS_INC_SPELLS"
void main()
{
// Spell Hook Check
if(!PHS_SpellHookCheck(PHS_SPELL_GASEOUS_FORM)) return;
// Declare major variables
object oCaster = OBJECT_SELF;
object oTarget = GetSpellTargetObject();
int nCasterLevel = PHS_GetCasterLevel();
int nMetaMagic = PHS_GetMetaMagicFeat();
// Duration - 2 minutes/level
float fDuration = PHS_GetDuration(PHS_MINUTES, nCasterLevel * 2, nMetaMagic);
// Make sure they are not immune to spells
if(PHS_TotalSpellImmunity(oTarget)) return;
// Declare effects
effect ePolymorph = EffectPolymorph(PHS_POLYMORPH_TYPE_GASEOUS_FORM, TRUE);
effect eGhost = EffectCutsceneGhost();
effect eMiss = EffectMissChance(100, MISS_CHANCE_TYPE_NORMAL);
// Link effects
effect eLink = EffectLinkEffects(ePolymorph, eGhost);
eLink = EffectLinkEffects(eLink, eMiss);
// Signal spell cast at event
PHS_SignalSpellCastAt(oTarget, PHS_SPELL_GASEOUS_FORM, FALSE);
// Remove previous castings
PHS_RemoveSpellEffectsFromTarget(PHS_SPELL_GASEOUS_FORM, oTarget);
// Apply new effects
PHS_ApplyPolymorphDuration(oTarget, eLink, fDuration);
}