forked from Jaysyn/PRC8
141 lines
6.4 KiB
Plaintext
141 lines
6.4 KiB
Plaintext
|
/*:://////////////////////////////////////////////
|
|||
|
//:: Spell Name Teleport
|
|||
|
//:: Spell FileName PHS_S_Teleport
|
|||
|
//:://////////////////////////////////////////////
|
|||
|
//:: In Game Spell desctiption
|
|||
|
//:://////////////////////////////////////////////
|
|||
|
Conjuration (Teleportation)
|
|||
|
Level: Sor/Wiz 5, Travel 5
|
|||
|
Components: V
|
|||
|
Casting Time: 1 standard action
|
|||
|
Range: Personal and touch
|
|||
|
Target: You and allied creatures within a 5M-radius sphere; see text
|
|||
|
Duration: Instantaneous
|
|||
|
Saving Throw: None
|
|||
|
Spell Resistance: No
|
|||
|
|
|||
|
This spell instantly transports you to a designated destination. Interplanar
|
|||
|
travel is not possible. You can bring along objects as long as their weight
|
|||
|
doesn<73>t exceed your maximum load. You may also bring one additional willing
|
|||
|
Medium or smaller creature (carrying gear or objects up to its maximum load)
|
|||
|
or its equivalent (see below) per three caster levels. A Large creature
|
|||
|
counts as two Medium creatures, a Huge creature counts as two Large
|
|||
|
creatures, and so forth. All creatures to be transported must be within 5M
|
|||
|
of you at the time of casting, and must be in your party to suceed. As with
|
|||
|
all spells where the range is personal and the target is you, you need not
|
|||
|
make a saving throw, nor is spell resistance applicable to you.
|
|||
|
|
|||
|
You must have some clear idea of the location and layout of the destination.
|
|||
|
The clearer your mental image, the more likely the teleportation works.
|
|||
|
Areas of strong physical or magical energy may make teleportation more
|
|||
|
hazardous or even impossible.
|
|||
|
|
|||
|
To see how well the teleportation works, roll d% and consult the Teleport
|
|||
|
table. Refer to the following information for definitions of the terms on
|
|||
|
the table.
|
|||
|
|
|||
|
Familiarity: <20>Very familiar<61> is a place where you have been very often and
|
|||
|
where you feel at home. <20>Studied carefully<6C> is a place you know well, either
|
|||
|
because you can currently see it, you<6F>ve been there often, or you have used
|
|||
|
other means (such as scrying) to study the place for at least one hour.
|
|||
|
<20>Seen casually<6C> is a place that you have seen more than once but with which
|
|||
|
you are not very familiar. <20>Viewed once<63> is a place that you have seen once,
|
|||
|
possibly using magic.
|
|||
|
|
|||
|
<20>False destination<6F> is a place that does not truly exist or if you are
|
|||
|
teleporting to an otherwise familiar location that no longer exists as such
|
|||
|
or has been so completely altered as to no longer be familiar to you. When
|
|||
|
traveling to a false destination, roll 1d20+80 to obtain results on the
|
|||
|
table, rather than rolling d%, since there is no real destination for you
|
|||
|
to hope to arrive at or even be off target from.
|
|||
|
|
|||
|
On Target: You appear where you want to be.
|
|||
|
|
|||
|
Off Target: You appear safely a random distance away from the destination
|
|||
|
in a random direction. Distance off target can be anywhere in the target
|
|||
|
area. The direction off target is determined randomly.
|
|||
|
|
|||
|
Similar Area: You wind up in an area that<61>s visually or thematically similar
|
|||
|
to the target area. Generally, you appear in the closest similar place
|
|||
|
within range. If no such area exists within the spell<6C>s range, the spell
|
|||
|
simply fails instead.
|
|||
|
|
|||
|
Mishap: You and anyone else teleporting with you have gotten <20>scrambled.<2E>
|
|||
|
You each take 1d10 points of damage, and you reroll on the chart to see
|
|||
|
where you wind up. For these rerolls, roll 1d20+80. Each time <20>Mishap<61> comes
|
|||
|
up, the characters take more damage and must reroll.
|
|||
|
|
|||
|
Familiarity On Target Off Target Similar Area Mishap
|
|||
|
Very familiar 01-97 98-99 100 -
|
|||
|
Studied carefully 01-94 95-97 98-99 100
|
|||
|
Seen casually 01-88 89-94 95-98 99-100
|
|||
|
Viewed once 01-76 77-88 89-96 97-100
|
|||
|
False destination (1d20+80) - - 81-92 93-100
|
|||
|
//:://////////////////////////////////////////////
|
|||
|
//:: Spell Effects Applied / Notes
|
|||
|
//:://////////////////////////////////////////////
|
|||
|
Trying to make it as accurate as possible to the spell, and should maybe
|
|||
|
work as intended to (with mishaps and whatever).
|
|||
|
|
|||
|
Need to have a local integer on an area for it to ever be considered
|
|||
|
"Very familiar", and you must still study it as below.
|
|||
|
|
|||
|
You have to study an area for it to be "studied carefully" which is done
|
|||
|
in a cutscene, so the caster can only cancle it. Note: Any hostile creatures
|
|||
|
who come during the time auto-cancle it, of course! :-)
|
|||
|
|
|||
|
These are set on the caster item under the tags of the area. Locations
|
|||
|
must be set up each time they enter the area, but might not require any
|
|||
|
studying.
|
|||
|
|
|||
|
There can be up to 5 locations "pre-stored" on the caster item to teleport
|
|||
|
too.
|
|||
|
|
|||
|
Areas can also be named maybe? Maybe that is how to get a false destination...
|
|||
|
|
|||
|
Seen once can be included as, perhaps, using On Enter events...
|
|||
|
|
|||
|
God, this might turn out to be complicated! Very much so!
|
|||
|
//:://////////////////////////////////////////////
|
|||
|
//:: Created By: Jasperre
|
|||
|
//::////////////////////////////////////////////*/
|
|||
|
|
|||
|
#include "PHS_INC_SPELLS"
|
|||
|
|
|||
|
// After the people to teleport have been got (and stored in PHS_TELEPORT_ARRAY)
|
|||
|
// then the familiarity is put in, and it will roll to see what result is put
|
|||
|
// out (and doing damage, as it will loop on a mishap).
|
|||
|
int GetRandomResult(int nFamiliarity, object oCaster);
|
|||
|
|
|||
|
void main()
|
|||
|
{
|
|||
|
// Spell hook check.
|
|||
|
if(!PHS_SpellHookCheck(PHS_SPELL_TELEPORT)) return;
|
|||
|
|
|||
|
// Delcare Major Variables
|
|||
|
object oCaster = OBJECT_SELF;
|
|||
|
location lSelf = GetLocation(OBJECT_SELF);
|
|||
|
int nCasterLevel = PHS_GetCasterLevel();
|
|||
|
int nSpellID = GetSpellId();
|
|||
|
// Get the spell target location
|
|||
|
location lTarget = GetLocalLocation(OBJECT_SELF, "TELEPORT_STORED_LOCATION");
|
|||
|
|
|||
|
// Define location and effect to use.
|
|||
|
effect eGo = EffectVisualEffect(VFX_FNF_TELEPORT_IN);
|
|||
|
effect eAppear = EffectVisualEffect(VFX_FNF_TELEPORT_OUT);
|
|||
|
|
|||
|
// Can we teleport there?
|
|||
|
if(!PHS_CannotTeleport(oCaster, lTarget)) return;
|
|||
|
|
|||
|
// Fire cast spell at event for the specified target
|
|||
|
PHS_SignalSpellCastAt(oCaster, PHS_SPELL_TELEPORT, FALSE);
|
|||
|
|
|||
|
// Apply AOE go visual
|
|||
|
PHS_ApplyLocationVFX(lSelf, eGo);
|
|||
|
|
|||
|
// Move the caster to that location
|
|||
|
ClearAllActions();
|
|||
|
DelayCommand(0.1, ActionJumpToLocation(lTarget));
|
|||
|
DelayCommand(0.2, PHS_ApplyLocationVFX(lTarget, eAppear));
|
|||
|
}
|