Further file organization
Further file organization
This commit is contained in:
83
nwn/nwnprc/trunk/smp/phs_s_explorunes.nss
Normal file
83
nwn/nwnprc/trunk/smp/phs_s_explorunes.nss
Normal file
@@ -0,0 +1,83 @@
|
||||
/*:://////////////////////////////////////////////
|
||||
//:: Spell Name Explosive Runes
|
||||
//:: Spell FileName PHS_S_ExploRunes
|
||||
//:://////////////////////////////////////////////
|
||||
//:: In Game Spell desctiption
|
||||
//:://////////////////////////////////////////////
|
||||
SR applies.
|
||||
|
||||
You trace these mystic runes upon a book, map, scroll, or similar object
|
||||
bearing written information. The runes detonate when read, such as when
|
||||
reading the spell on them or reading the book, dealing 6d6 points of force
|
||||
damage. The reader takes the full damage with no saving throw; any other
|
||||
creature within 10 feet of the runes is entitled to a Reflex save for half
|
||||
damage. The object on which the runes were written is instantly destroyed.
|
||||
|
||||
You and any party members can read the protected writing without triggering
|
||||
the runes. Likewise, you can remove the runes whenever desired. Another
|
||||
creature can remove them with a successful dispel magic or erase spell, but
|
||||
attempting to dispel or erase the runes and failing to do so triggers the
|
||||
explosion.
|
||||
|
||||
Note: Magic traps such as explosive runes are hard to detect and disable. A
|
||||
rogue (only) can use the Search skill to find the runes and Disable Device
|
||||
to thwart them, using his Disarm Magical Device tool to try and detect
|
||||
magical runes on an item. The DC in each case is 25 + spell level, or 28
|
||||
for explosive runes.
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Spell Effects Applied / Notes
|
||||
//:://////////////////////////////////////////////
|
||||
Must target a book or a scroll.
|
||||
|
||||
If it hasn't got the property "Cast Spell", it adds "Read" to the items
|
||||
properties.
|
||||
|
||||
It will be stripped each time a client enters a server, too, else it'd
|
||||
bodge because the ID of the caster would always be wrong.
|
||||
|
||||
FAQ: Adding your own Explosive Runes with no caster:
|
||||
|
||||
- Make sure the item has a "Read" cast spell, or, failing that, an actual
|
||||
spell to read. Read doesn't even have to work as long as the explosive
|
||||
runes are set up right.
|
||||
- Put the local integer variable PHS_EXPLOSIVE_RUNES_SET to 1
|
||||
- Set the integer, PHS_EXPLOSIVE_RUNES_DC, to the DC of the save you want
|
||||
(Default might be around DC16, for 10 + 3 + 3, the lowest level caster)
|
||||
|
||||
Thats it! If no caster is found, you see, it is still used, but of course
|
||||
any function it uses just won't take into account alignment ETC.
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: Jasperre
|
||||
//::////////////////////////////////////////////*/
|
||||
|
||||
#include "PHS_INC_SPELLS"
|
||||
|
||||
void main()
|
||||
{
|
||||
// Spell Hook check - special note, it'd be funny if they read a scroll
|
||||
// with the actual spell on and got exploded!
|
||||
if(!PHS_SpellHookCheck(PHS_SPELL_EXPLOSIVE_RUNES)) return;
|
||||
|
||||
// Declare major variables
|
||||
object oCaster = OBJECT_SELF;
|
||||
object oTarget = GetSpellTargetObject();
|
||||
int nSpellSaveDC = PHS_GetSpellSaveDC();
|
||||
|
||||
// Duration is permament - we set local variables to the object to use this
|
||||
// spell, so it will stay, and stay hidden, with the object.
|
||||
|
||||
|
||||
// Check if item is valid
|
||||
if(GetIsObjectValid(oTarget) && GetObjectType(oTarget) == OBJECT_TYPE_ITEM)
|
||||
{
|
||||
// Make sure it doesn't already have the runes (we don't tell the
|
||||
// caster one way or another)
|
||||
if(!GetLocalInt(oTarget, PHS_EXPLOSIVE_RUNES_SET))
|
||||
{
|
||||
// Set the variables
|
||||
SetLocalInt(oTarget, PHS_EXPLOSIVE_RUNES_SET, TRUE);
|
||||
SetLocalInt(oTarget, PHS_EXPLOSIVE_RUNES_DC, nSpellSaveDC);
|
||||
SetLocalObject(oTarget, PHS_EXPLOSIVE_RUNES_OBJECT, oCaster);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user