PRC8_fork/nwn/nwnprc/trunk/scripts/fdisk_onspellc.nss

51 lines
1.5 KiB
Plaintext
Raw Permalink Normal View History

/*
Tenser's Floating Disk script
Disk's OnSpellCastAt script.
Created by: xwarren
Created: August 15, 2009
*/
#include "prc_alterations"
#include "psi_inc_psifunc"
void main()
{
object oMaster = GetMaster();
object oSCaster = GetLastSpellCaster();
int nMasterCLevel = PRCGetCasterLevel(oMaster);
int nSCLevel = PRCGetCasterLevel(oSCaster);
int nSpell = GetLastSpell();
int nTest;
switch(nSpell)
{
case SPELL_LESSER_DISPEL : nTest = d20(1) + PRCMin(5, nSCLevel); break;
case SPELL_DISPEL_MAGIC : nTest = d20(1) + PRCMin(10, nSCLevel); break;
case SPELL_DISPELLING_TOUCH : nTest = d20(1) + PRCMin(10, nSCLevel); break;
case SPELL_SLASHING_DISPEL : nTest = d20(1) + PRCMin(10, nSCLevel); break;
case POWER_DISPELPSIONICS : nTest = d20(1) + PRCMin(15, GetManifesterLevel(oSCaster)); break;
case SPELL_GREATER_DISPELLING : nTest = d20(1) + PRCMin(20, nSCLevel); break;
case SPELL_GREAT_WALL_OF_DISPEL : nTest = d20(1) + PRCMin(20, nSCLevel); break;
case SPELL_MORDENKAINENS_DISJUNCTION: nTest = d20(1) + PRCMin(40, nSCLevel); break;
case 4061 : nTest = d20(1) + PRCMin(40, nSCLevel); break;//Superb Dispelling
default : nTest = 0; break;
}
if (nTest >= 11 + nMasterCLevel)
{
ExecuteScript("fdisk_end", OBJECT_SELF);
}
else
{
if(!GetLocalInt(OBJECT_SELF, "bDiskBussy"))
{
ClearAllActions(TRUE);
ActionMoveToObject(oMaster, TRUE, 2.0);
}
}
}