Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
130 lines
5.8 KiB
Plaintext
130 lines
5.8 KiB
Plaintext
/*:://////////////////////////////////////////////
|
|
//:: 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);
|
|
}
|
|
}
|