Updated AMS marker feats. Removed arcane & divine marker feats. Updated Dread Necromancer for epic progression. Updated weapon baseitem models. Updated new weapons for crafting & npc equip. Updated prefix. Updated release archive.
81 lines
3.0 KiB
Plaintext
81 lines
3.0 KiB
Plaintext
/*:://////////////////////////////////////////////
|
|
//:: Spell Name Knock
|
|
//:: Spell FileName PHS_S_Knock
|
|
//:://////////////////////////////////////////////
|
|
//:: In Game Spell desctiption
|
|
//:://////////////////////////////////////////////
|
|
Knock
|
|
Transmutation
|
|
Level: Sor/Wiz 2
|
|
Components: V
|
|
Casting Time: 1 standard action
|
|
Range: Medium (20M)
|
|
Target: One door, box, or chest with an area of up to 3.33 sq. M./level
|
|
Duration: Instantaneous; see text
|
|
Saving Throw: None
|
|
Spell Resistance: No
|
|
|
|
The knock spell opens stuck, barred, locked, held, or arcane locked doors.
|
|
It opens secret doors, as well as locked boxes or chests. It also loosens
|
|
welds, shackles, or chains (provided they serve to hold closures shut). If
|
|
used to open a arcane locked door, the spell does not remove the arcane
|
|
lock but simply suspends its functioning for 10 minutes. In all other cases,
|
|
the door does not relock itself or become stuck again on its own. Knock does
|
|
not raise barred gates or similar impediments (such as a portcullis), nor
|
|
does it affect ropes, vines, and the like. The effect is limited by the area.
|
|
//:://////////////////////////////////////////////
|
|
//:: Spell Effects Applied / Notes
|
|
//:://////////////////////////////////////////////
|
|
As the spell, mainly.
|
|
|
|
I need to sort out doors - maybe add OnUnlocked events to make sure that
|
|
Arcane Locked doors stay shut, for instance.
|
|
|
|
It is easy to get a resref from the target door and check to see if it is
|
|
a proper door.
|
|
|
|
Maybe tag support and changed default blueprints for all placeables and doors
|
|
for "knockable" and so on things...not sure...
|
|
|
|
Anyway, the UMD check and declarations is here...
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Jasperre
|
|
//::////////////////////////////////////////////*/
|
|
|
|
#include "PHS_INC_SPELLS"
|
|
|
|
void main()
|
|
{
|
|
// Spell Hook Check.
|
|
if(!PHS_SpellHookCheck(PHS_SPELL_KNOCK)) return;
|
|
|
|
// Delcare Major Variables
|
|
object oCaster = OBJECT_SELF;
|
|
object oTarget = GetSpellTargetObject();
|
|
// Limit to 10 sq ft of door/level
|
|
int nCasterLevel = PHS_GetCasterLevel();
|
|
float fDelay = GetDistanceToObject(oTarget)/20;
|
|
|
|
// Make sure they are not immune to spells
|
|
if(PHS_TotalSpellImmunity(oTarget)) return;
|
|
|
|
// Declare effects
|
|
effect eVis = EffectVisualEffect(VFX_IMP_KNOCK);
|
|
|
|
// Signal spell cast at event.
|
|
PHS_SignalSpellCastAt(oTarget, PHS_SPELL_KNOCK);
|
|
|
|
// If the target is locked, unlock it
|
|
// - No plot doors/placeables
|
|
// - If it needs a key, and the key needed is "", IE cannot ever be opened, then
|
|
// ignore
|
|
// - Ignore DC's of 100 or over
|
|
if(GetLocked(oTarget) && !GetPlotFlag(oTarget) && GetLockLockDC(oTarget) < 100 &&
|
|
(!GetLockKeyRequired(oTarget) || (GetLockKeyRequired(oTarget) && GetLockKeyTag(oTarget) != "")))
|
|
{
|
|
// Delay unlocking.
|
|
DelayCommand(fDelay, PHS_ApplyVFX(oTarget, eVis));
|
|
DelayCommand(fDelay, SetLocked(oTarget, FALSE));
|
|
}
|
|
}
|