Code:
-- >>Defines<<

-- <<NPC's>>

local Littleooze = nil
local Bigooze = nil
local Rotface = nil

-- <<Spells>>

local Oozeflood = nil
local Radiatingooze = nil
local Slimespray = nil
local Mutatedinfection = nil
local Unstableooze = nil

-- <<Bools>>

local heroicmode = false
local merged = false
local merges = 0

local 

-- >>Functions<<

function Rotface_OnCombat(pUnit, Event)
    Rotface = pUnit
    if (heroicmode == false) then
        pUnit:RegisterEvent("ChooseMode", 500, 1)
        else
    end
    pUnit:RegisterEvent("TheFightStarts", 600, 1)
end

function ChooseMode(pUnit, Event)
        if (Heroic[id].RaidType == 1 ) then -- non heroic 10man
        Oozeflood = 69789
        Slimespray = 69508
        Mutatedinfection = 69674
        Radiatingooze = 69760
        Unstableooze = 69839
        elseif (Heroic[id].RaidType == 2) then -- non heroic 25man
        Oozeflood = 71215
        Slimespray = 69508
        Mutatedinfection = 73022
        Radiatingooze = 71212
        Unstableooze = 73029
        elseif (Heroic[id].RaidType == 3) then -- heroic 10man
        Oozeflood = 71215
        Slimespray = 69508
        Mutatedinfection = 71224
        Radiatingooze = 73026
        Unstableooze = 73029
        elseif (Heroic[id].RaidType == 4) then -- heroic 25man
        Oozeflood = 71215
        Slimespray = 69508
        Mutatedinfection = 73023
        Radiatingooze = 73072
        Unstableooze = 73030
        end
end

function TheFightStarts(pUnit, Event)
    pUnit:RegisterEvent("Ooze_Flood", 8000, 1)
    pUnit:RegisterEvent("SlimeSpray", 20000, 1)
    pUnit:RegisterEvent("Mutated_Infection", 3000, 1)
end

function Ooze_Flood(pUnit, Event)
    local ranx = math.random(6, 16)
    local rany = math.random(6, 16)
    local flood = flood + 1
        if (flood == 1) then
            pUnit:CastSpellAoF(ranx, rany, z, Oozeflood)
        end
        if (flood == 2) then
            local x = ranx + 25
            local y = rany + 25
            pUnit:CastSpellAoF(x, y, z, Oozeflood)
        end
        if (flood == 3) then
            local x = ranx - 25
            local y = rany + 25
            pUnit:CastSpellAoF(x, y, z, Oozeflood)
        end
        if (flood == 4) then
            local x = ranx + 25
            local y = rany - 25
            pUnit:CastSpellAoF(x, y, z, Oozeflood)
        end
        if (flood == 5) then
            local x = ranx - 25
            local y = rany - 25
            pUnit:CastSpellAoF(x, y, z, Oozeflood)
            flood = 0
        end
    return TheFightStarts
end

function SlimeSpray(pUnit, Event)
    pUnit:SendChatMessage(41, 0, "Rotface begins to cast Slime Spray!")
    pUnit:FullCastSpellOnTarget(Slimespray, pUnit:GetRandomPlayer(0))
    return TheFightStarts
end

function Mutated_Infection(pUnit, Event)
    local playr = pUnit:GetRandomPlayer(0)
    pUnit:FullCastSpellOnTarget(Mutatedinfection, playr)
    pUnit:RegisterEvent("LittleOoze", 15000, 1)
end

function LittleOoze(pUnit, Event)
    local x = playr:GetX()
    local y = playr:GetY()
    local z = playr:GetZ()
    pUnit:SpawnCreature(36897, x, y, z, 21, 0)
end

function LittleOoze_OnCombat(pUnit, Event)
    pUnit = Littleooze
    if merged == false then
        local npc = pUnit:GetCreatureNearestCoords(x, y, z, 36897)
            if npc == nil then
            else
                if Littleooze:GetDistance(npc) < 5 then
                    npc:FullCastSpell(69889)
                    end
            end
    else
    pUnit:RegisterEvent("Sticky_Ooze", 7000, 0)
    pUnit:RegisterEvent("Radiating_Ooze", 11000, 0)
                end
            end        
     end
end

function Sticky_Ooze(pUnit, Event)
    pUnit:FullCastSpellOnTarget(69774, pUnit:GetRandomPlayer(0))
end

function Radiating_Ooze(pUnit, Event)
    pUnit:FullCastSpell(69750)
end

function BigOoze_OnCombat(pUnit, Event)
    local npc = pUnit:GetCreatureNearestCoords(x, y, z, 36897)
    if npc == nil then
    else
        if pUnit:GetDistance(npc) < 5 then
            merges = merges + 1
            npc:Despawn(1, 0)
            pUnit:FullCastSpell(69558)
        end
        if merges => 4 then
            pUnit:RegisterEvent("BigOoze_ExpoMode", 1000, 0)
        end
    end
end

function BigOoze_ExpoMode(pUnit, Event)
    pUnit:Root()
    pUnit:FullCastSpell(Unstableooze)
    pUnit:FullCastSpell(5)
end

-- >>Registering Events<<

RegisterUnitEvent(36627, 1, "Rotface_OnCombat")
RegisterUnitEvent(36897, 1, "LittleOoze_OnCombat")
RegisterUnitEvent(36899, 1, "BigOoze_OnCombat")