Further file organization
Further file organization
This commit is contained in:
129
nwn/nwnprc/trunk/smp/phs_ot_posiplmaj.nss
Normal file
129
nwn/nwnprc/trunk/smp/phs_ot_posiplmaj.nss
Normal file
@@ -0,0 +1,129 @@
|
||||
/*:://////////////////////////////////////////////
|
||||
//:: Script Name Positive Energy Plane - Major - Heartbeat
|
||||
//:: Script FileName PHS_OT_PosiPlMaj
|
||||
//:://////////////////////////////////////////////
|
||||
//:: File Notes
|
||||
//:://////////////////////////////////////////////
|
||||
Major Positive Energy Plane heartbeat. For those unlucky enough to get here...
|
||||
|
||||
Description:
|
||||
|
||||
Positive-Dominant: An abundance of life characterizes planes with this trait.
|
||||
The two kinds of positive-dominant traits are minor positive-dominant and
|
||||
major positive-dominant.
|
||||
|
||||
A minor positive-dominant plane is a riotous explosion of life in all its
|
||||
forms. Colors are brighter, fires are hotter, noises are louder, and
|
||||
sensations are more intense as a result of the positive energy swirling
|
||||
through the plane. All individuals in a positive-dominant plane gain fast
|
||||
healing 2 as an extraordinary ability.
|
||||
|
||||
Major positive-dominant planes go even further. A creature on a major
|
||||
positive-dominant plane must make a DC 15 Fortitude save to avoid being
|
||||
blinded for 10 rounds by the brilliance of the surroundings. Simply being
|
||||
on the plane grants fast healing 5 as an extraordinary ability. In addition,
|
||||
those at full hit points gain 5 additional temporary hit points per round.
|
||||
These temporary hit points fade 1d20 rounds after the creature leaves the
|
||||
major positive- dominant plane. However, a creature must make a DC 20
|
||||
Fortitude save each round that its temporary hit points exceed its normal
|
||||
hit point total. Failing the saving throw results in the creature exploding
|
||||
in a riot of energy, killing it.
|
||||
|
||||
Despite the beneficial effects of the plane, it is one of the most hostile
|
||||
of the Inner Planes. An unprotected character on this plane swells with
|
||||
power as positive energy is force-fed into her. Then, her mortal frame
|
||||
unable to contain that power, she immolates as if she were a small planet
|
||||
caught at the edge of a supernova. Visits to the Positive Energy Plane
|
||||
are brief, and even then travelers must be heavily protected.
|
||||
|
||||
Basically:
|
||||
- Heals 5HP per round.
|
||||
- If at full health, provides 5HP bonus in temp HP.
|
||||
- Saving throw based on how many temp HP bonuses are applied from this
|
||||
area object.
|
||||
- Temp HP is only added for 1d20 rounds, as per the description (Yes, it is
|
||||
permanent in this realm, but it is hard to remove it otherwise!)
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: Jasperre
|
||||
//::////////////////////////////////////////////*/
|
||||
|
||||
#include "PHS_INC_SPELLS"
|
||||
|
||||
void main()
|
||||
{
|
||||
// Loop all objects in the area. DMs excepted.
|
||||
object oTarget = GetFirstObjectInArea(OBJECT_SELF);
|
||||
|
||||
if(!GetIsObjectValid(oTarget)) return;
|
||||
|
||||
// Healing and Temp HP effect. Same VFX for each.
|
||||
effect eVis = EffectVisualEffect(VFX_IMP_HEALING_G);
|
||||
effect eHeal = EffectHeal(5);
|
||||
effect eHP = EffectTemporaryHitpoints(5);
|
||||
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
|
||||
effect eLink = SupernaturalEffect(EffectLinkEffects(eHP, eDur));
|
||||
effect eBlind = SupernaturalEffect(EffectBlindness());
|
||||
float fDuration;
|
||||
|
||||
// Loop all objects in the area. DMs excepted.
|
||||
while(GetIsObjectValid(oTarget))
|
||||
{
|
||||
// Is it a creature? (Not a DM)
|
||||
if(GetObjectType(oTarget) == OBJECT_TYPE_CREATURE &&
|
||||
PHS_CanCreatureBeDestroyed(oTarget))
|
||||
{
|
||||
// Are they dead? If yes, ignore.
|
||||
if(!GetIsDead(oTarget))
|
||||
{
|
||||
// DC 15 fortitude save for blindness for 10 rounds, if not
|
||||
// already blinded or otherwise.
|
||||
if(PHS_GetCanSee(oTarget))
|
||||
{
|
||||
// Temp HP, and save for death.
|
||||
// Save first:
|
||||
if(!PHS_NotSpellSavingThrow(SAVING_THROW_FORT, oTarget, 15, SAVING_THROW_TYPE_POSITIVE))
|
||||
{
|
||||
// Fortitude save: Death
|
||||
SendMessageToPC(oTarget, "You are blinded for 10 rounds due to the brilliance of the positive plane.");
|
||||
|
||||
// Duration of 10 rounds
|
||||
fDuration = PHS_GetDuration(PHS_ROUNDS, 10, FALSE);
|
||||
PHS_ApplyDurationAndVFX(oTarget, eVis, eBlind, fDuration);
|
||||
}
|
||||
}
|
||||
|
||||
// Heal if below max HP
|
||||
if(GetCurrentHitPoints(oTarget) < GetMaxHitPoints(oTarget))
|
||||
{
|
||||
// Tell them
|
||||
SendMessageToPC(oTarget, "You are healed with massive positive energy flowing through your body.");
|
||||
|
||||
// Apply healing effect
|
||||
PHS_ApplyInstantAndVFX(oTarget, eVis, eHeal);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Temp HP, and save for death.
|
||||
// Save first:
|
||||
if(!PHS_NotSpellSavingThrow(SAVING_THROW_FORT, oTarget, 20, SAVING_THROW_TYPE_POSITIVE))
|
||||
{
|
||||
// Fortitude save: Death
|
||||
SendMessageToPC(oTarget, "Your body explodes in a massive burst of positive energy.");
|
||||
PHS_ApplyDeathByDamageAndVFX(oTarget, eVis, DAMAGE_TYPE_POSITIVE);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Temp HP addition
|
||||
SendMessageToPC(oTarget, "You gain temporary hit points with massive positive energy flowing through your body.");
|
||||
|
||||
// Duration of 1d20 rounds
|
||||
fDuration = PHS_GetRandomDuration(PHS_ROUNDS, 20, 1, FALSE);
|
||||
PHS_ApplyDurationAndVFX(oTarget, eVis, eLink, fDuration);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Get next object
|
||||
oTarget = GetNextObjectInArea(OBJECT_SELF);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user