/* 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) + min(5, nSCLevel); break; case SPELL_DISPEL_MAGIC : nTest = d20(1) + min(10, nSCLevel); break; case SPELL_DISPELLING_TOUCH : nTest = d20(1) + min(10, nSCLevel); break; case SPELL_SLASHING_DISPEL : nTest = d20(1) + min(10, nSCLevel); break; case POWER_DISPELPSIONICS : nTest = d20(1) + min(15, GetManifesterLevel(oSCaster)); break; case SPELL_GREATER_DISPELLING : nTest = d20(1) + min(20, nSCLevel); break; case SPELL_GREAT_WALL_OF_DISPEL : nTest = d20(1) + min(20, nSCLevel); break; case SPELL_MORDENKAINENS_DISJUNCTION: nTest = d20(1) + min(40, nSCLevel); break; case 4061 : nTest = d20(1) + min(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); } } }