include library.sui; include library.utils; include library.buff; trigger OnInitialize() { detachScript(self, sui.COUNTDOWNTIMER_PLAYER_SCRIPT); return SCRIPT_CONTINUE; } trigger OnDetach() { removeObjVar(self, sui.COUNTDOWNTIMER_SUI_VAR); utils.removeScriptVarTree(self, sui.COUNTDOWNTIMER_VAR); //group 2 in buff.tab, this shuts down all channeled buffs int channelBuff = buff.getBuffOnTargetFromGroup(self, "channeled"); if(channelBuff !=0) buff.removeBuff(self, channelBuff); return SCRIPT_CONTINUE; } trigger OnEnteredCombat() { if(sui.hasEventFlag(self, sui.CD_EVENT_COMBAT)) { sui.cancelCountdownTimer(self, sui.CD_EVENT_COMBAT); } return SCRIPT_CONTINUE; } trigger OnLocomotionChanged(int newLocomotion, int oldLocomotion) { if(newLocomotion != LOCOMOTION_STANDING && newLocomotion != LOCOMOTION_KNEELING && newLocomotion != LOCOMOTION_PRONE) { if(sui.hasEventFlag(self, sui.CD_EVENT_LOCOMOTION)) { sui.cancelCountdownTimer(self, sui.CD_EVENT_LOCOMOTION); } } return SCRIPT_CONTINUE; } trigger OnChangedPosture(int before, int after) { if(sui.hasEventFlag(self, sui.CD_EVENT_POSTURE)) { sui.cancelCountdownTimer(self, sui.CD_EVENT_POSTURE); } return SCRIPT_CONTINUE; } trigger OnIncapacitated(obj_id killer) { if(sui.hasEventFlag(self, sui.CD_EVENT_INCAPACITATE)) { sui.cancelCountdownTimer(self, sui.CD_EVENT_INCAPACITATE); } return SCRIPT_CONTINUE; } trigger OnCreatureDamaged(obj_id attacker, obj_id weapon, int[] damage) { if(sui.hasEventFlag(self, sui.CD_EVENT_DAMAGED)) { sui.cancelCountdownTimer(self, sui.CD_EVENT_DAMAGED); } return SCRIPT_CONTINUE; } messageHandler handleCountdownTimerCleanup() { if(!hasObjVar(self, sui.COUNTDOWNTIMER_SUI_VAR)) { detachScript(self, sui.COUNTDOWNTIMER_PLAYER_SCRIPT); return SCRIPT_CONTINUE; } int pid = params.getInt("id"); int test_pid = getIntObjVar(self, sui.COUNTDOWNTIMER_SUI_VAR); if(pid == test_pid) { detachScript(self, sui.COUNTDOWNTIMER_PLAYER_SCRIPT); forceCloseSUIPage(pid); } return SCRIPT_CONTINUE; }