Some of your if statements are a bit odd to say the least, as they will always be true. The ones I'm talking about are lines 6, 8, and 32 of the first block of code you posted. Try changing it to
Lua Code:
-- Doesn't seem to change the value of my isCaster variable
local spec = GetSpecialization()
local _, playerClass = UnitClass("PLAYER")
local isCaster
local function cbCheck()
if playerClass == 'DRUID' or playerClass == 'MONK' or playerClass == 'PALADIN' or playerClass == 'SHAMAN' then
if playerClass == 'DRUID' then
if spec == 1 or spec == 4 then
isCaster = true
else
isCaster = false
end
elseif playerClass == 'MONK' then
if spec == 2 then
isCaster = true
else
isCaster = false
end
elseif playerClass == 'PALADIN' then
if spec == 1 then
isCaster = true
else
isCaster = false
end
elseif playerClass == 'SHAMAN' then
if spec == 2 then
isCaster = false
else
isCaster = true
end
end
elseif playerClass == 'DEATHKNIGHT' or playerClass == 'HUNTER' or playerClass == 'ROGUE' or playerClass == 'WARRIOR' then
isCaster = false
else
isCaster = true
end
end
local cbCheckFrame = CreateFrame("Frame")
cbCheckFrame:RegisterEvent('PLAYER_SPECIALIZATION_CHANGED')
cbCheckFrame:RegisterEvent('PLAYER_ENTERING_WORLD')
cbCheckFrame:RegisterEvent('PLAYER_LOGIN')
cbCheckFrame:SetScript("OnEvent", function()
cbCheck()
end)