I think that’s what you’ve been looking for, but Kick is usually instantaneous, so there’s very little chance of it being skipped
Code:
local FakeKick = {};
FakeKick.Frame = CreateFrame("Frame");
FakeKick.KickSpell = {SpellID}; -- {123, 332, 1231}
FakeKick.Func = function(_,_,...)
local args = {self, timestamp, ...}
if (args[1] == "CAST_SUCCESS" and -- CAST_START
args[2] ~= UnitGUID("player")) then
if (args[5] == UnitGUID("player") and
UnitCastingInfo("Player")) then
for _, v in pairs (FakeKick.KickSpell) do
if (v == args[8]) then
SpellStopCasting();
return;
end
end
end
end
end
FakeKick.Frame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED");
FakeKick.Frame:SetScript("OnEvent",FakeKick.Func);