vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
--Reputation Mod

Reputations_Version="0.14";

Reputations = { };
--Default Values
Reputations_Enabled = 1; --Enabled
Reputations_Raw = 1;     --Raw Numbers
Reputations_Frame = 2;   --Combat Window
Reputations_Next = 1;    --Display reputation needed until next standing
Reputations_Notify = 1;  --Display reputation notifications
Reputations_Debug = 0;   --Debug Info: Displays Previous, New and Diff and each faction change
Reputations_Load = 1;    --Display reputation loaded message
Reputations_Repeat = 0;  --Display amount of repetitions needed until next standing

REPUTATIONS_CHAT_FRAME = getglobal("ChatFrame"..Reputations_Frame);

-- Maximum units for each standing
Units = { };
Units[1] = 36000; -- Hated
Units[2] = 3000; -- Hostile
Units[3] = 3000; -- Unfriendly
Units[4] = 3000; -- Neutral
Units[5] = 6000; -- Friendly
Units[6] = 12000; -- Honored
Units[7] = 21000; -- Revered
Units[8] = 1000; -- Exalted

-- Function Hooks
local lOriginal_ReputationFrame_Update;

-- Add entry into cosmos configuration
function Reputation_RegisterCosmos()
        if (Cosmos_RegisterConfiguration) then
                Cosmos_RegisterConfiguration(
                        "COS_REPUTATION",
                        "SECTION",
                        REPUTATION_HEADER,
                        REPUTATION_HEADER_INFO);
                Cosmos_RegisterConfiguration(
                        "COS_REPUTATION_SECTION",
                        "SEPERATOR",
                        REPUTATION_HEADER,
                        REPUTATION_HEADER_INFO);
                Cosmos_RegisterConfiguration(
                        "COS_REPUTATION_ENABLE",
                        "CHECKBOX",
                        REPUTATION_ENABLE,
                        REPUTATION_ENABLE_INFO,
                        Reputation_Cosmos_Toggle,
                        1);
                Cosmos_RegisterConfiguration(
                        "COS_REPUTATION_LOADED",
                        "CHECKBOX",
                        REPUTATION_LOADED,
                        REPUTATION_LOADED_INFO,
                        Reputation_Load_Toggle,
                        1);
                Cosmos_RegisterConfiguration(
                        "COS_REPUTATION_RAW",
                        "CHECKBOX",
                        REPUTATION_RAW,
                        REPUTATION_RAW_INFO,
                        Reputation_Raw_Toggle,
                        1);
                Cosmos_RegisterConfiguration(
                        "COS_REPUTATION_CHATFRAME",
                        "SLIDER",
                        REPUTATION_FRAME,
                        REPUTATION_FRAME_INFO,
                        Reputation_ChatFrame_Change,
                        0,
                        2, --default
                        1, --min
                        7, --max
                        "chatframe",
                        1,
                        1,
                        "",
                        1);
                Cosmos_RegisterConfiguration(
                        "COS_REPUTATION_NOTIFY",
                        "CHECKBOX",
                        REPUTATION_NOTIFICATION,
                        REPUTATION_NOTIFICATION_INFO,
                        Reputation_Notify_Toggle,
                        1);
                Cosmos_RegisterConfiguration(
                        "COS_REPUTATION_STANDING",
                        "CHECKBOX",
                        REPUTATION_STANDING,
                        REPUTATION_STANDING_INFO,
                        Reputation_Next_Toggle,
                        1);
                Cosmos_RegisterConfiguration(
                        "COS_REPUTATION_REPEATING",
                        "CHECKBOX",
                        REPUTATION_REPEATING,
                        REPUTATION_REPEATING_INFO,
                        Reputation_Repeat_Toggle,
                        1);
        end
end

-- Round function
function round(x)
        return floor(x+0.5);
end

function ReputationMod_OnLoad()
        --Slash command for Non-Cosmos users    
        SlashCmdList["REPUTATIONCOMMAND"] = Reputation_SlashHandler;
        SLASH_REPUTATIONCOMMAND1 = "/reputation";
        SLASH_REPUTATIONCOMMAND2 = "/rep";

        this:RegisterEvent("UPDATE_FACTION");
        this:RegisterEvent("VARIABLES_LOADED");  --Set hook if needed and check chat frame
        
        Reputation_RegisterCosmos();

        if( DEFAULT_CHAT_FRAME and Reputations_Load==1 ) then
                DEFAULT_CHAT_FRAME:AddMessage(format(REPUTATION_LOADED,Reputations_Version));
        end
end

local function ReputationMod_Update()
        local numFactions = GetNumFactions();
        local factionIndex, factionStanding, factionBar, factionHeader, color;
        local name, standingID, barValue, atWarWith, canToggleAtWar, isHeader, isCollapsed;
        local multiplier=100;
        local RepRemains
        for factionIndex=1, numFactions, 1 do
                name, _, standingID, barValue, atWarWith, canToggleAtWar, isHeader, isCollapsed = GetFactionInfo(factionIndex);
                if (not isHeader) then
                        if (Reputations_Enabled==1) then
                                if (Reputations[name] and Reputations_Notify==1) then
                                        local multiplier = 100;
                                        local RawTotal = 0;
                                        if (Reputations_Raw==1) then
                                                multiplier=Units[standingID];
                                        end
                                        if (Reputations[name].standingID == standingID) then
                                                local difference = (barValue - Reputations[name].Value)*multiplier;
                                                if ( Reputations_Raw == 1 ) then
                                                        difference = round(difference);
                                                end
                                                if (difference > 0) then --Reputation went up
                                                        REPUTATIONS_CHAT_FRAME:AddMessage(format(getglobal("REPUTATION_GAINED"..Reputations_Raw),name,difference), 0.5, 0.5, 1.0);
                                                        if (standingID ~= 8) then
                                                                RepRemains = (1-barValue)*multiplier;
                                                                if (Reputations_Next==1) then
                                                                        if ( Reputations_Raw == 1 ) then
                                                                                RepRemains = round(RepRemains);
                                                                        end
                                                                        REPUTATIONS_CHAT_FRAME:AddMessage(format(getglobal("REPUTATION_NEEDED"..Reputations_Raw),RepRemains,getglobal("FACTION_STANDING_LABEL"..standingID+1),name), 1.0, 1.0, 0.0);
                                                                end
                                                                if (Reputations_Repeat==1) then
                                                                        RepRepeats = RepRemains/difference;
                                                                        if (RepRepeats > floor(RepRepeats)) then
                                                                                RepRepeats = ceil(RepRepeats);
                                                                        end
                                                                        REPUTATIONS_CHAT_FRAME:AddMessage(format(getglobal("REPUTATION_REPEATS"),RepRepeats,getglobal("FACTION_STANDING_LABEL"..standingID+1),name), 1.0, 1.0, 0.0);
                                                                end
                                                        end
                                                elseif (difference < 0) then --Reputation went down
                                                        difference=abs(difference);
                                                        REPUTATIONS_CHAT_FRAME:AddMessage(format(getglobal("REPUTATION_LOST"..Reputations_Raw),name,difference), 0.5, 0.5, 1.0);
                                                        if (standingID ~= 1) then
                                                                RepRemains = barValue*multiplier;
                                                                if (Reputations_Next==1) then
                                                                        if ( Reputations_Raw == 1 ) then
                                                                                RepRemains = round(RepRemains);
                                                                        end
                                                                        REPUTATIONS_CHAT_FRAME:AddMessage(format(getglobal("REPUTATION_LEFT"..Reputations_Raw),RepRemains,getglobal("FACTION_STANDING_LABEL"..standingID-1),name), 1.0, 1.0, 0.0);
                                                                end
                                                                if (Reputations_Repeat==1) then
                                                                        RepRepeats = RepRemains/difference;
                                                                        if (RepRepeats > floor(RepRepeats)) then
                                                                                RepRepeats = ceil(RepRepeats);
                                                                        end
                                                                        REPUTATIONS_CHAT_FRAME:AddMessage(format(getglobal("REPUTATION_REPEATS"),RepRepeats,getglobal("FACTION_STANDING_LABEL"..standingID+1),name), 1.0, 1.0, 0.0);
                                                                end
                                                        end
                                                end
                                        elseif (Reputations[name].standingID < standingID) then --Reputation went up
                                                RepRemains = (1-barValue)*multiplier;
                                                if (Reputations_Raw==1) then
                                                        RepRemains = round(RepRemains);
                                                        for i=Reputations[name].standingID, standingID, 1 do
                                                                if ( i == standingID ) then
                                                                        RawTotal = RawTotal+barValue*multiplier;
                                                                elseif ( i == Reputations[name].standingID ) then
                                                                        RawTotal = RawTotal+(1-Reputations[name].Value)*Units[i];
                                                                else
                                                                        RawTotal = RawTotal+Units[i];
                                                                end
                                                        end
                                                        RawTotal = round(RawTotal);
                                                else
                                                        RawTotal = (standingID-Reputations[name].standingID-Reputations[name].Value+barValue)*multiplier;
                                                end
                                                REPUTATIONS_CHAT_FRAME:AddMessage(format(getglobal("REPUTATION_GAINED"..Reputations_Raw),name,RawTotal), 0.5, 0.5, 1.0);
                                                REPUTATIONS_CHAT_FRAME:AddMessage(format(REPUTATION_REACHED,getglobal("FACTION_STANDING_LABEL"..standingID),name), 1.0, 1.0, 0.0);
                                                if (standingID ~= 8) then
                                                        if (Reputations_Next==1) then
                                                                REPUTATIONS_CHAT_FRAME:AddMessage(format(getglobal("REPUTATION_NEEDED"..Reputations_Raw),RepRemains,getglobal("FACTION_STANDING_LABEL"..standingID+1),name), 1.0, 1.0, 0.0);
                                                        end
                                                        if (Reputations_Repeat==1) then
                                                                RepRepeats = RepRemains/RawTotal;
                                                                if (RepRepeats > floor(RepRepeats)) then
                                                                        RepRepeats = ceil(RepRepeats);
                                                                end
                                                                REPUTATIONS_CHAT_FRAME:AddMessage(format(getglobal("REPUTATION_REPEATS"),RepRepeats,getglobal("FACTION_STANDING_LABEL"..standingID+1),name), 1.0, 1.0, 0.0);
                                                        end
                                                end
                                                color=FACTION_BAR_COLORS[standingID];
                                                ZoneTextString:SetText(getglobal("FACTION_STANDING_LABEL"..standingID).."!");
                                                ZoneTextString:SetTextColor(color.r, color.g, color.b);
                                                SubZoneTextString:SetText(name);
                                                SubZoneTextString:SetTextColor(color.r, color.g, color.b);
                                                ZoneTextFrame.startTime=GetTime();
                                                SubZoneTextFrame.startTime=GetTime();
                                                ZoneTextFrame:Show();
                                                SubZoneTextFrame:Show();
                                                --UIErrorsFrame:AddMessage(getglobal("FACTION_STANDING_LABEL"..standingID).."!", 1.0, 1.0, 1.0, 1.0, UIERRORS_HOLD_TIME);
                                        else --Reputation went down
                                                RepRemains = barValue*multiplier;
                                                if (Reputations_Raw==1) then
                                                        RepRemains = round(RepRemains);
                                                        for i=standingID, Reputations[name].standingID, 1 do
                                                                if ( i == standingID ) then
                                                                        RawTotal = RawTotal+(1-barValue)*multiplier;
                                                                elseif ( i == Reputations[name].standingID ) then
                                                                        RawTotal = RawTotal+Reputations[name].Value*Units[i];
                                                                else
                                                                        RawTotal = RawTotal+Units[i];
                                                                end
                                                        end
                                                        RawTotal = round(RawTotal);
                                                else
                                                        RawTotal = (Reputations[name].standingID-standingID-barValue+Reputations[name].Value)*multiplier;
                                                end
                                                REPUTATIONS_CHAT_FRAME:AddMessage(format(getglobal("REPUTATION_LOST"..Reputations_Raw),name,RawTotal), 0.5, 0.5, 1.0);
                                                REPUTATIONS_CHAT_FRAME:AddMessage(format(REPUTATION_REACHED,getglobal("FACTION_STANDING_LABEL"..standingID),name), 1.0, 1.0, 0.0);
                                                if (standingID ~= 1) then
                                                        if (Reputations_Next==1) then
                                                                REPUTATIONS_CHAT_FRAME:AddMessage(format(getglobal("REPUTATION_LEFT"..Reputations_Raw),RepRemains,getglobal("FACTION_STANDING_LABEL"..standingID-1),name), 1.0, 1.0, 0.0);
                                                        end
                                                        if (Reputations_Repeat==1) then
                                                                RepRepeats = RepRemains/RawTotal;
                                                                if (RepRepeats > floor(RepRepeats)) then
                                                                        RepRepeats = ceil(RepRepeats);
                                                                end
                                                                REPUTATIONS_CHAT_FRAME:AddMessage(format(getglobal("REPUTATION_REPEATS"),RepRepeats,getglobal("FACTION_STANDING_LABEL"..standingID+1),name), 1.0, 1.0, 0.0);
                                                        end
                                                end
                                                color=FACTION_BAR_COLORS[standingID];
                                                ZoneTextString:SetText(getglobal("FACTION_STANDING_LABEL"..standingID).."!");
                                                ZoneTextString:SetTextColor(color.r, color.g, color.b);
                                                SubZoneTextString:SetText(name);
                                                SubZoneTextString:SetTextColor(color.r, color.g, color.b);
                                                ZoneTextFrame.startTime=GetTime();
                                                SubZoneTextFrame.startTime=GetTime();
                                                ZoneTextFrame:Show();
                                                SubZoneTextFrame:Show();
                                        end
                                else
                                        Reputations[name] = { };
                                end
                                if (Reputations_Debug == 1) then
                                        REPUTATIONS_CHAT_FRAME:AddMessage(format("%s-Old:%f New:%f Diff:%f",name,Reputations[name].Value,barValue,barValue-Reputations[name].Value));
                                end
                                Reputations[name].standingID = standingID;
                                Reputations[name].Value = barValue;
                                Reputations[name].atWarWith = atWarWith;
                        end
                end
        end
end

function ReputationMod_OnEvent()
    if(event == "UPDATE_FACTION") then
        ReputationMod_Update();
    end
    if(event == "VARIABLES_LOADED") then
                        if (Reputations_Enabled==1) then
                                --Hook ReputationFrame
                                if (not lOriginal_ReputationFrame_Update) then          
                                        lOriginal_ReputationFrame_Update=ReputationFrame_Update;
                                        ReputationFrame_Update=ReputationFrame_Update_New;
                                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_MOD_ON);
                                end
                        else
                                --Unhook ReputationFrame
                                if (lOriginal_ReputationFrame_Update) then
                                        ReputationFrame_Update=lOriginal_ReputationFrame_Update;
                                        lOriginal_ReputationFrame_Update=nil;
                                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_MOD_OFF);
                                end
                        end
                        if (Reputations_Frame > 0 and Reputations_Frame <= FCF_GetNumActiveChatFrames()) then
                                REPUTATIONS_CHAT_FRAME = getglobal("ChatFrame"..Reputations_Frame);
                        else
                                REPUTATIONS_CHAT_FRAME = DEFAULT_CHAT_FRAME;
                        end
                end
end

function Reputation_Toggle(toggle) --Toggle with notification
        if (toggle) then
                Reputations_Enabled = toggle;
                if (toggle==1) then
                        --Hook ReputationFrame
                        if (not lOriginal_ReputationFrame_Update) then          
                                DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_MOD_ON);
                                lOriginal_ReputationFrame_Update=ReputationFrame_Update;
                                ReputationFrame_Update=ReputationFrame_Update_New;
                        end
                else
                        --Unhook ReputationFrame
                        if (lOriginal_ReputationFrame_Update) then
                                DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_MOD_OFF);
                                ReputationFrame_Update=lOriginal_ReputationFrame_Update;
                                lOriginal_ReputationFrame_Update=nil;
                        end
                end             
        else
                if (Reputations_Enable == 1) then
                        Reputations_Enable = 0;
                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_MOD_OFF);
                        --Unhook ReputationFrame
                        if (lOriginal_ReputationFrame_Update) then
                                ReputationFrame_Update=lOriginal_ReputationFrame_Update;
                                lOriginal_ReputationFrame_Update=nil;
                        end
                else
                        Reputations_Enable = 1;
                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_MOD_ON);
                        --Hook ReputationFrame
                        if (not lOriginal_ReputationFrame_Update) then
                                lOriginal_ReputationFrame_Update=ReputationFrame_Update;
                                ReputationFrame_Update=ReputationFrame_Update_New;
                        end
                end
        end
        if (Cosmos_UpdateValue) then
                Cosmos_UpdateValue("COS_REPUTATION_ENABLE_X",CSM_CHECKONOFF,Reputations_Enable);
        end

end

function Reputation_Cosmos_Toggle(toggle) --Toggle without notification
                Reputations_Enabled = toggle;
                if (toggle==1) then
                        --Hook ReputationFrame
                        if (not lOriginal_ReputationFrame_Update) then          
                                lOriginal_ReputationFrame_Update=ReputationFrame_Update;
                                ReputationFrame_Update=ReputationFrame_Update_New;
                        end
                else
                        --Unhook ReputationFrame
                        if (lOriginal_ReputationFrame_Update) then
                                ReputationFrame_Update=lOriginal_ReputationFrame_Update;
                                lOriginal_ReputationFrame_Update=nil;
                        end
                end             
end

function Reputation_Load_Toggle(toggle)
        if (toggle) then
                Reputations_Load = toggle;
                if (toggle==1) then
                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_LOAD_ON);
                else
                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_LOAD_OFF);
                end
        else
                if (Reputations_Raw == 1) then
                        Reputations_Load = 0;
                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_LOAD_OFF);
                else
                        Reputations_Load = 1;
                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_LOAD_ON);
                end
        end
        if (Cosmos_UpdateValue) then
                Cosmos_UpdateValue("COS_REPUTATION_LOADED_X",CSM_CHECKONOFF,Reputations_Load);
        end
end

function Reputation_Raw_Toggle(toggle)
        if (toggle) then
                Reputations_Raw = toggle;
                if (toggle==1) then
                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_RAW_NUMS);
                else
                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_PCT_NUMS);
                end
        else
                if (Reputations_Raw == 1) then
                        Reputations_Raw = 0;
                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_PCT_NUMS);
                else
                        Reputations_Raw = 1;
                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_RAW_NUMS);
                end
        end
        if (Cosmos_UpdateValue) then
                Cosmos_UpdateValue("COS_REPUTATION_RAW_X",CSM_CHECKONOFF,Reputations_Raw);
        end
end

function Reputation_Debug_Toggle(toggle)
        if (toggle) then
                Reputations_Debug = toggle;
                if (toggle==1) then
                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_DEBUG_ON);
                end
        else
                if (Reputations_Debug == 1) then
                        Reputations_Debug = 0;
                else
                        Reputations_Debug = 1;
                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_DEBUG_ON);
                end
        end
end

function Reputation_ChatFrame_Change(checked,value)  --Checked will always be 0
        if (value) then
                if (value > 0 and value <= FCF_GetNumActiveChatFrames()) then
                        Reputations_Frame = value;
                        REPUTATIONS_CHAT_FRAME = getglobal("ChatFrame"..Reputations_Frame);
                        REPUTATIONS_CHAT_FRAME:AddMessage(REPUTATION_MOD_FRAME,1.0,1.0,0.0);
                else
                        DEFAULT_CHAT_FRAME:AddMessage(format(REPUTATION_INVALID_FRAME,value));
                        DEFAULT_CHAT_FRAME:AddMessage(format(REPUTATION_VALID_FRAMES,FCF_GetNumActiveChatFrames()));
                end     
        end
end

function Reputation_Notify_Toggle(toggle)
        if (toggle) then
                Reputations_Notify = toggle;
                if (toggle==1) then
                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_NOTIFY_ON);
                else
                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_NOTIFY_OFF);
                end
        else
                if (Reputations_Notify == 1) then
                        Reputations_Notify = 0;
                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_NOTIFY_OFF);
                else
                        Reputations_Notify = 1;
                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_NOTIFY_ON);
                end
        end
        if (Cosmos_UpdateValue) then
                Cosmos_UpdateValue("COS_REPUTATION_NOTIFY_X",CSM_CHECKONOFF,Reputations_Notify);
        end
end

function Reputation_Next_Toggle(toggle)
        if (toggle) then
                Reputations_Next = toggle;
                if (toggle==1) then
                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_NEXT_ON);
                else
                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_NEXT_OFF);
                end
        else
                if (Reputations_Next == 1) then
                        Reputations_Next = 0;
                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_NEXT_OFF);
                else
                        Reputations_Next = 1;
                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_NEXT_ON);
                end
        end
        if (Cosmos_UpdateValue) then
                Cosmos_UpdateValue("COS_REPUTATION_STANDING_X",CSM_CHECKONOFF,Reputations_Next);
        end
end

function Reputation_Repeat_Toggle(toggle)
        if (toggle) then
                Reputations_Repeat = toggle;
                if (toggle==1) then
                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_REPEAT_ON);
                else
                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_REPEAT_OFF);
                end
        else
                if (Reputations_Repeat == 1) then
                        Reputations_Repeat = 0;
                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_REPEAT_OFF);
                else
                        Reputations_Repeat = 1;
                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_REPEAT_ON);
                end
        end
        if (Cosmos_UpdateValue) then
                Cosmos_UpdateValue("COS_REPUTATION_REPEATING_X",CSM_CHECKONOFF,Reputations_Repeat);
        end
end

function Reputation_SlashHandler(msg)
        local index, value;
        if (not msg or msg == "") then --Show Help
                for index, value in REPUTATION_HELP_TEXT do
                        DEFAULT_CHAT_FRAME:AddMessage(value);
                end
        else
                local command=strlower(msg);
                if (command == REPUTATION_LIST) then
                        local numFactions = GetNumFactions();
                        local factionIndex, factionStanding, factionBar, factionHeader, color;
                        local name, standingID, barValue, atWarWith, canToggleAtWar, isHeader, isCollapsed;
                        for factionIndex=1, numFactions, 1 do
                                name, _, standingID, barValue, atWarWith, canToggleAtWar, isHeader, isCollapsed = GetFactionInfo(factionIndex);
                                if (not isHeader) then
                                        if (Reputations_Raw==1) then
                                                REPUTATIONS_CHAT_FRAME:AddMessage(format(name..":%d/%d",barValue*Units[standingID],Units[standingID]));
                                        else
                                                REPUTATIONS_CHAT_FRAME:AddMessage(format(name..":%.5f%%",barValue*100));
                                        end
                                end
                        end
                elseif (command == REPUTATION_ON) then
                        Reputation_Toggle(1);
                elseif (command == REPUTATION_OFF) then
                        Reputation_Toggle(0);
                elseif (command == REPUTATION_LOAD) then
                        Reputation_Load_Toggle();
                elseif (command == REPUTATION_STATUS) then
                        DEFAULT_CHAT_FRAME:AddMessage(format(REPUTATION_VERSION..".",Reputations_Version));
                        if (Reputations_Enabled==1) then
                                DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_MOD_ON);
                                if (Reputations_Load==1) then
                                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_LOAD_ON);
                                else
                                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_LOAD_OFF);
                                end
                                if (Reputations_Raw==1) then
                                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_RAW_NUMS);
                                else
                                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_PCT_NUMS);
                                end
                                DEFAULT_CHAT_FRAME:AddMessage(format(REPUTATION_SEL_FRAME,Reputations_Frame));
                                if (Reputations_Notify==1) then
                                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_NOTIFY_ON);
                                else
                                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_NOTIFY_OFF);
                                end
                                if (Reputations_Next==1) then
                                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_NEXT_ON);
                                else
                                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_NEXT_OFF);
                                end
                                if (Reputations_Repeat==1) then
                                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_REPEAT_ON);
                                else
                                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_REPEAT_OFF);
                                end
                                if (Reputations_Debug==1) then
                                        DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_DEBUG_ON);
                                end
                        else
                                DEFAULT_CHAT_FRAME:AddMessage(REPUTATION_MOD_OFF);
                        end
                elseif (command == REPUTATION_PCT_RAW) then
                        Reputation_Raw_Toggle();
                elseif (command == REPUTATION_DEBUG) then
                        Reputation_Debug_Toggle();
                elseif (strfind(command,"^"..REPUTATION_FRAME.." ")) then
                        local repchannel;
                        _,_,repchannel = strfind(command,"^"..REPUTATION_FRAME.."%s+(%d+)%s*$");
                        if (repchannel) then
                                repchannel = tonumber(repchannel);
                                Reputation_ChatFrame_Change(0,repchannel);                              
                        else
                                DEFAULT_CHAT_FRAME:AddMessage(format(REPUTATION_INVALID_FRAME,value));
                                DEFAULT_CHAT_FRAME:AddMessage(format(REPUTATION_VALID_FRAMES,FCF_GetNumActiveChatFrames()));
                        end
                elseif (command == REPUTATION_NOTIFY) then
                        Reputation_Notify_Toggle();
                elseif (command == REPUTATION_NEXT) then
                        Reputation_Next_Toggle();
                elseif (command == REPUTATION_REPEAT) then
                        Reputation_Repeat_Toggle();
                else --Help
                        for index, value in REPUTATION_HELP_TEXT do
                                DEFAULT_CHAT_FRAME:AddMessage(value);
                        end
                end
        end
end

function ReputationFrame_Update_New()
        lOriginal_ReputationFrame_Update();
        local numFactions = GetNumFactions();
        local factionOffset = FauxScrollFrame_GetOffset(ReputationListScrollFrame);
        local factionIndex, factionStanding, standingID, barValue, isHeader;

        for i=1, NUM_FACTIONS_DISPLAYED, 1 do
                factionIndex = factionOffset + i;
                if ( factionIndex <= numFactions ) then
                        _, _, standingID, barValue, _, _, isHeader = GetFactionInfo(factionIndex);
                        if ( not isHeader ) then
                                factionStanding = getglobal("FACTION_STANDING_LABEL"..standingID);
                                if (Reputations_Raw==1) then
                                        getglobal("ReputationBar"..i.."FactionStanding"):SetText( factionStanding.." - "..round(barValue*Units[standingID]).."/"..Units[standingID]);
                                else
                                        getglobal("ReputationBar"..i.."FactionStanding"):SetText( format(factionStanding.."  %.2f%%", barValue*100));
                                end
                        end
                end
        end
end