From 58ae54c9c231fac36516af252c84da0d9bdf8152 Mon Sep 17 00:00:00 2001 From: Darthpred Date: Tue, 19 Mar 2013 13:44:11 +0400 Subject: [PATCH] A little farm addition. No need to mention in changelog imo --- ElvUI_SLE/locales/english.lua | 663 +++++++++++----------- ElvUI_SLE/locales/russian.lua | 629 ++++++++++----------- ElvUI_SLE/modules/farm/farm.lua | 1164 ++++++++++++++++++++------------------- 3 files changed, 1232 insertions(+), 1224 deletions(-) diff --git a/ElvUI_SLE/locales/english.lua b/ElvUI_SLE/locales/english.lua index d7bc5a7..7f5e6e7 100755 --- a/ElvUI_SLE/locales/english.lua +++ b/ElvUI_SLE/locales/english.lua @@ -1,332 +1,333 @@ --- English localization file for enUS and enGB. -local AceLocale = LibStub:GetLibrary("AceLocale-3.0"); -local L = AceLocale:NewLocale("ElvUI", "enUS", true); - -if not L then return; end - ---General-- -L["Shadow & Light"] = true -L["SLE_DESC"] = [=[This is an edit of ElvUI that adds some functionality to the original addon and changes some previously existed options. -The edit doesn't change original files in any respect so you can freely disable it any time from your addon manager without any risk.]=] -L["LFR Lockout"] = true -L["Show/Hide LFR lockout info in the time datatext's tooltip."] = true -L["PvP Auto Release"] = true -L["Automatically release body when killed inside a battleground."] = true -L["Errors in combat"] = true -L["Show/hide error messages in combat."] = true -L["Pet autocast corners"] = true -L["Show/hide triangles in corners of autocastable buttons."] = true -L["Loot History"] = true -L["Auto hide"] = true -L["Automaticaly hide Blizzard loot histroy frame when leaving the instance."] = true -L["Sets alpha of loot histroy frame."] = true -L["SLE_LOGIN_MSG"] = [=[You are using |cff1784d1Shadow & Light Edit|r version |cff1784d1%s%s|r for ElvUI. -If you wish to use the original ElvUI addon, disable this edit's plugin in your Addons manager. -Have a nice day.]=] -L["Your version of ElvUI is older than recommended to use with Shadow & Light Edit. Please, download the latest version from tukui.org."] = true -L["Reset All"] = true -L["Reset all Shadow & Light options and movers to their defaults"] = true -L["Reset these options to defaults"] = true - ---Install-- -L["Shadow & Light Settings"] = true -L["You can now choose if you what to use one of authors' set of options. This will change the positioning of most elements but also change a bunch of other options within ElvUI's config."] = true -L["SLE_Install_Text2"] = [=[This step is optional and only to be used if you are wanting to use one of our configurations. -|cffFF0000Warning:|r Please note that the authors' may or may not use any of the layout/theme you have selected as they may not have utilized the options.]=] -L["Darth's Config"] = true -L["Darth's Defaults Set"] = true -L["Repooc's Config"] = true -L["Repooc's Defaults Set"] = true -L["Affinitii's Config"] = true -L["Affinitii's Defaults Set"] = true - ---Auras-- -L["Options for customizing auras near the minimap."] = true -L["Caster Name"] = true -L["Enabling this will show caster name in the buffs and debuff icons."] = true - ---Backgroungds-- -L["Backgrounds"] = true -L["Additional Background Panels"] = true -L["BG_DESC"] = "Module for creating additional frames that can be used as backgrounds for anything." -L["Bottom BG"] = true -L["Left BG"] = true -L["Right BG"] = true -L["Actionbar BG"] = true -L["Show/Hide this frame."] = true -L["Sets width of the frame"] = true -L["Sets height of the frame"] = true -L["Sets X offset of the frame"] = true -L["Sets Y offset of the frame"] = true -L["Texture"] = true -L["Set the texture to use in this frame. Requirements are the same as the chat textures."] = true -L["Backdrop Template"] = true -L["Change the template used for this backdrop."] = true -L["Default"] = true -L["Hide in Pet Batlle"] = true -L["Show/Hide this frame during Pet Battles."] = true - ---Character Frame Options -L["CFO_DESC"] = "This section will added different options/features to the character sheet. Here you can show item level and durability of your items for a quick glance." -L["Character Frame Options"] = true -L['Font'] = true -L["The font that the item level will use."] = true -L["Set the font size that the item level will use."] = true -L["Set the font outline that the item level will use."] = true -L["The font that the item durability will use."] = true -L["Set the font size that the item durability will use."] = true -L["Set the font outline that the item durability will use."] = true - ---Chat-- -L["Chat Options"] = true -L["Chat Editbox History"] = true -L["Amount of messages to save. Set to 0 to disable."] = true - ---Datatexts-- -L["Bosses killed: "] = true -L["You didn't select any instance to track."] = true -L["This LFR isn't available for your level/gear."] = true -L["SLE_AUTHOR_INFO"] = "Shadow & Light Edit by Darth Predator & Repooc" -L["SLE_CONTACTS"] = [=[Bug reports, suggestions and other stuff accepted via: -- Private Massage on TukUI.org to Darth Predator or Repooc -- AddOn's page/ticket system on curse.com -- Forums on tukui.org, Addons/Help section -- AddOn's repo on github.com]=] -L["DP_1"] = "DT Panel 1" -L["DP_2"] = "DT Panel 2" -L["DP_3"] = "DT Panel 3" -L["DP_4"] = "DT Panel 4" -L["DP_5"] = "DT Panel 5" -L["DP_6"] = "DT Panel 6" -L["Bottom_Panel"] = "Bottom Panel" -L["Top_Center"] = "Top Panel" -L["Left Chat"] = true -L["Right Chat"] = true -L["Datatext Panels"] = true -L["Additional Datatext Panels"] = true -L["DP_DESC"] = [=[Additional Datatext Panels. -8 panels with 20 datatext points total and a dashboard with 4 status bars. -You can't disable chat panels.]=] -L["Dashboard"] = true -L["Show/Hide dashboard."] = true -L["Dashboard Panels Width"] = true -L["Sets size of dashboard panels."] = true -L["Show/Hide this panel."] = true -L["Sets size of this panel"] = true -L['Hide panel background'] = true -L["Don't show this panel, only datatexts assinged to it"] = true -L["Some datatexts that Shadow & Light are supplied with have settings that can be modified to alter the displayed information. Please use the dropdown box to select which datatext you would like to configure."] = true -L["S&L Friends"] = true -L["Show total friends in the datatext."] = true -L["Show total guild members in the datatext."] = true -L["These options are for modifing the Shadow & Light Friends datatext."] = true -L["S&L Guild"] = true -L["Show Totals"] = true -L["Expand RealID"] = true -L["Display realid with two lines to view broadcasts."] = true -L["Hide Hints"] = true -L["Hide the hints in the tooltip."] = true -L["Autohide Delay:"] = true -L["Adjust the tooltip autohide delay when mouse is no longer hovering of the datatext."] = true -L["S&L Datatexts"] = true -L["Datatext Options"] = true -L["These options are for modifing the Shadow & Light Guild datatext."] = true -L["Hide MOTD"] = true -L["Hide the guild's Message of the Day in the tooltip."] = true -L["Hide Guild Name"] = true -L["Hide the guild's name in the tooltip."] = true -L["Hide In Combat"] = true -L["Will not show the tooltip while in combat."] = true - ---Exp/Rep Bar-- -L["Xp-Rep Text"] = true -L["Full value on Exp Bar"] = true -L["Changes the way text is shown on exp bar."] = true -L["Full value on Rep Bar"] = true -L["Changes the way text is shown on rep bar."] = true -L["Auto Track Reputation"] = true -L["Automatically sets reputation tracking to the most recent reputation change."] = true - ---Equip Manager-- -L['Equipment Manager'] = true -L["EM_DESC"] = "This module provides different options to automatically change your equipment sets on spec change or entering certain locations." -L['Spam Throttling'] = true -L["Removes the spam from chat stating what talents were learned or unlearned during spec change."] = true -L["Here you can choose what equipment sets to use in different situations."] = true -L["Equip this set when switching to primary talents."] = true -L["Equip this set when switching to secondary talents."] =true -L["Equip this set after entering dungeons or raids."] = true -L["Equip this set after entering battlegrounds or arens."] = true - - ---Farm-- -L['Farm'] = true -L["FARM_DESC"] = [[Additional actionbars for the Sunsong Ranch containing seeds, tools and portals. -They will appear only if you are on the Ranch or The Halfhill Market.]] -L['Only active buttons'] = true -L['Only show the buttons for the seeds, portals, tools you have in your bags.'] = true -L["Seed Bars"] = true -L["Auto Planting"] = true -L["Automatically plant seeds to the nearest tilled soil if one is not already selected."] = true -L["Drop Seeds"] = true -L["Allow seeds to be destroyed from seed bars."] = true -L["Quest Glow"] = true -L["Show glowing border on seeds needed for any quest in your log."] = true -L["Dock Buttons To"] = true -L["Change the position from where seed bars will grow."] = true -L["Bottom"] = true -L["Top"] = true -L["Farm Seed Bars"] = true -L["Farm Tool Bar"] = true -L["Farm Portal Bar"] = true -L["Tilled Soil"] = true -L['Right-click to drop the item.'] = true - ---Import Section -L["SLE_IMPORTS"] = "|cffFF0000Note:|r Use the filter imports with caution as these will overwrite any custom ones made!\nImporting a class filter will overwrite any modifications you have made to that class filter." -L["Import Options"] = true -L["Author Specific Imports"] = true -L['Select Author'] = true -L["Please be aware that importing any of the filters will require a reload of the UI for the settings to take effect.\nOnce you click a filter button, your screen will reload automatically."] = true -L["Import"] = true -L["This will import non class specific filters from this author."] = true -L["This will import All Class specific filters from this author."] = true -L['Import All'] = true - ---Loot-- -L['Loot Announcer'] = true -L["LOOT_DESC"] = [[This module will announce loot dropped when you open the loot window. -This will work only if you are raid leadedr, assist or master looter or if you hold left control key while looting to manually announce the items in chat.]] -L["Auto Announce"] = true -L["Automatically announce in selected chat channel."] = true -L["Loot Quality"] = true -L["Set the minimum quality of an item to announce."] = true -L["Announce loot to the selected channel."] = true -L["Loot Dropped:"] = true - ---Marks-- -L["Raid Marks"] = true -L["Show/Hide raid marks."] = true -L["Show only in instances"] = true -L["Selecting this option will have the Raid Markers appear only while in a raid or dungeon."] = true -L["Sets size of buttons"] = true --Also used in UI buttons -L["Direction"] = true -L["Change the direction of buttons growth from the skull marker"] = true - ---Minimap-- -L["Minimap Options"] = true -L['MINIMAP_DESC'] = "These options effect various aspects of the minimap. Some options may not work if you disable minimap in the General section of ElvUI config." -L["Minimap Coordinates"] = true -L['Coords Display'] = true -L['Change settings for the display of the coordinates that are on the minimap.'] = true -L["Coords Location"] = true -L['This will determine where the coords are shown on the minimap.'] = true -L['Bottom Corners'] = true -L['Bottom Center'] = true -L["Minimap Buttons"] = true -L['Enable/Disable minimap button skinning.'] = true -L['Anchor Setting'] = true -L['Anchor mode for displaying the minimap buttons are skinned.'] = true -L['Horizontal Bar'] = true -L['Vertical Bar'] = true -L['The size of the minimap buttons when not anchored to the minimap.'] = true -L['Show minimap buttons on mouseover.'] = true - ---Raid Utility-- -L["Raid Utility"] = true - ---Skins-- -L["This options require ElvUI AddOnSkins pack to work."] = true -L["Sets font size on DBM bars"] = true -L["Ground"] = true -L["Flying"] = true -L["Flying & Ground"] = true -L["Swimming"] = true - ---UI buttons-- -L["UI Buttons"] = true -L["Additional menu with useful buttons"] = true -L["Show/Hide UI buttons."] = true -L["Mouse over"] = true -L["Show on mouse over."] = true -L["Buttons position"] = true -L["Layout for UI buttons."] = true -L["Click to reload your interface"] = true -L["Click to toggle config window"] = true -L["Click to toggle the AddOn Manager frame (stAddOnManager, Ampere or ACP) you have enabled."] = true -L["Click to toggle the Configuration/Option Window from the Bossmod (DXE, DBM or Bigwigs) you have enabled."] = true -L["Click to unlock moving ElvUI elements"] = true -L["ElvUI Config"] = true -L["Move UI"] = true -L["Reload UI"] = true -L["AddOns Manager"] = true -L["Boss Mod"] = true -L["Click to toggle iFilger's config UI"] = true - ---Unitframes-- -L["Additional unit frames options"] = true -L["Options for customizing unit frames. Please don't change these setting when ElvUI's testing frames for bosses and arena teams are shown. That will make them invisible until retoggling."] = true -L["Player Frame Indicators"] = true -L["Combat Icon"] = true -L["Show/Hide combat icon on player frame."] = true -L["Combat Position"] = true -L["Set the point to show combat icon"] = true -L["Classbar Energy"] = true -L["Show/hide the text with exact number of energy (Solar/Lunar or Demonic Fury) on your Classbar."] = true -L["Classbar Offset"] = true -L["This options will allow you to detach your classbar from player's frame and move it in other location."] = true -L["Power Text Position"] = true -L["Position power text on this bar of chosen frame"] = true - ---Credits-- -L["ELVUI_SLE_CREDITS"] = "We would like to point out the following people for helping us create this addon with testing, coding, and other stuff." -L["Submodules and Coding:"] = true -L["ELVUI_SLE_CODERS"] = [=[Elv -Tukz -Affinitii -Azilroka -Blazeflack -Boradan -Camealion -Omega1970 -Pvtschlag -Sinaris -Sortokk -Swordyy -]=] -L["Other Support:"] = true -L["ELVUI_SLE_MISC"] = [=[BuG - for being french lol -TheSamaKutra -The rest of TukUI community -]=] - ---Tutorials-- -L["To enable full values of health/power on unitframes in Shadow & Light add \":sl\" to the end of the health/power tag.\nExample: [health:current:sl]."] = true - ---Movers-- -L["Pet Battle AB"] = true - - ---Changelog-- -L["Changelog"] = true -L["CHANGE_LOG"] = [=[|cff1784d1v1.5|r -- Some typos fixed -- Datatext panels can now be transparent -- Background frames no longer have offset options, now they have own movers -- Background frames template doesn't require reload and is a profile based option -- Movers created by S&L now are grouped by own categories just like in ElvUI itself (Note: background frames' movers are available ONLY in those groups) -- Raid Marks now properly update setting on profile change -- Raid Marks module now has an option to hide backdrop for it's main panel -- Added Item Level overlay on item slots -- Added Item Durability overlay on item slots -- Added Equipment Manager per spec/zone -- Added Farm module to make farming easier. -- Added skinning of minimap buttons -- Added coordinates to the minimap -- LFR Lockout tracking in time datatext now has options to choose what daungeons you want to show there -- Top datapanel info can now be changed by user -- You will now receive chat message if someone in your group/raid has newer version of S&L -- Add Affinitii's (Blood Legion) UI Layout -- Darth's Layout Modified -- Added loot announce function +-- English localization file for enUS and enGB. +local AceLocale = LibStub:GetLibrary("AceLocale-3.0"); +local L = AceLocale:NewLocale("ElvUI", "enUS", true); + +if not L then return; end + +--General-- +L["Shadow & Light"] = true +L["SLE_DESC"] = [=[This is an edit of ElvUI that adds some functionality to the original addon and changes some previously existed options. +The edit doesn't change original files in any respect so you can freely disable it any time from your addon manager without any risk.]=] +L["LFR Lockout"] = true +L["Show/Hide LFR lockout info in the time datatext's tooltip."] = true +L["PvP Auto Release"] = true +L["Automatically release body when killed inside a battleground."] = true +L["Errors in combat"] = true +L["Show/hide error messages in combat."] = true +L["Pet autocast corners"] = true +L["Show/hide triangles in corners of autocastable buttons."] = true +L["Loot History"] = true +L["Auto hide"] = true +L["Automaticaly hide Blizzard loot histroy frame when leaving the instance."] = true +L["Sets alpha of loot histroy frame."] = true +L["SLE_LOGIN_MSG"] = [=[You are using |cff1784d1Shadow & Light Edit|r version |cff1784d1%s%s|r for ElvUI. +If you wish to use the original ElvUI addon, disable this edit's plugin in your Addons manager. +Have a nice day.]=] +L["Your version of ElvUI is older than recommended to use with Shadow & Light Edit. Please, download the latest version from tukui.org."] = true +L["Reset All"] = true +L["Reset all Shadow & Light options and movers to their defaults"] = true +L["Reset these options to defaults"] = true + +--Install-- +L["Shadow & Light Settings"] = true +L["You can now choose if you what to use one of authors' set of options. This will change the positioning of most elements but also change a bunch of other options within ElvUI's config."] = true +L["SLE_Install_Text2"] = [=[This step is optional and only to be used if you are wanting to use one of our configurations. +|cffFF0000Warning:|r Please note that the authors' may or may not use any of the layout/theme you have selected as they may not have utilized the options.]=] +L["Darth's Config"] = true +L["Darth's Defaults Set"] = true +L["Repooc's Config"] = true +L["Repooc's Defaults Set"] = true +L["Affinitii's Config"] = true +L["Affinitii's Defaults Set"] = true + +--Auras-- +L["Options for customizing auras near the minimap."] = true +L["Caster Name"] = true +L["Enabling this will show caster name in the buffs and debuff icons."] = true + +--Backgroungds-- +L["Backgrounds"] = true +L["Additional Background Panels"] = true +L["BG_DESC"] = "Module for creating additional frames that can be used as backgrounds for anything." +L["Bottom BG"] = true +L["Left BG"] = true +L["Right BG"] = true +L["Actionbar BG"] = true +L["Show/Hide this frame."] = true +L["Sets width of the frame"] = true +L["Sets height of the frame"] = true +L["Sets X offset of the frame"] = true +L["Sets Y offset of the frame"] = true +L["Texture"] = true +L["Set the texture to use in this frame. Requirements are the same as the chat textures."] = true +L["Backdrop Template"] = true +L["Change the template used for this backdrop."] = true +L["Default"] = true +L["Hide in Pet Batlle"] = true +L["Show/Hide this frame during Pet Battles."] = true + +--Character Frame Options +L["CFO_DESC"] = "This section will added different options/features to the character sheet. Here you can show item level and durability of your items for a quick glance." +L["Character Frame Options"] = true +L['Font'] = true +L["The font that the item level will use."] = true +L["Set the font size that the item level will use."] = true +L["Set the font outline that the item level will use."] = true +L["The font that the item durability will use."] = true +L["Set the font size that the item durability will use."] = true +L["Set the font outline that the item durability will use."] = true + +--Chat-- +L["Chat Options"] = true +L["Chat Editbox History"] = true +L["Amount of messages to save. Set to 0 to disable."] = true + +--Datatexts-- +L["Bosses killed: "] = true +L["You didn't select any instance to track."] = true +L["This LFR isn't available for your level/gear."] = true +L["SLE_AUTHOR_INFO"] = "Shadow & Light Edit by Darth Predator & Repooc" +L["SLE_CONTACTS"] = [=[Bug reports, suggestions and other stuff accepted via: +- Private Massage on TukUI.org to Darth Predator or Repooc +- AddOn's page/ticket system on curse.com +- Forums on tukui.org, Addons/Help section +- AddOn's repo on github.com]=] +L["DP_1"] = "DT Panel 1" +L["DP_2"] = "DT Panel 2" +L["DP_3"] = "DT Panel 3" +L["DP_4"] = "DT Panel 4" +L["DP_5"] = "DT Panel 5" +L["DP_6"] = "DT Panel 6" +L["Bottom_Panel"] = "Bottom Panel" +L["Top_Center"] = "Top Panel" +L["Left Chat"] = true +L["Right Chat"] = true +L["Datatext Panels"] = true +L["Additional Datatext Panels"] = true +L["DP_DESC"] = [=[Additional Datatext Panels. +8 panels with 20 datatext points total and a dashboard with 4 status bars. +You can't disable chat panels.]=] +L["Dashboard"] = true +L["Show/Hide dashboard."] = true +L["Dashboard Panels Width"] = true +L["Sets size of dashboard panels."] = true +L["Show/Hide this panel."] = true +L["Sets size of this panel"] = true +L['Hide panel background'] = true +L["Don't show this panel, only datatexts assinged to it"] = true +L["Some datatexts that Shadow & Light are supplied with have settings that can be modified to alter the displayed information. Please use the dropdown box to select which datatext you would like to configure."] = true +L["S&L Friends"] = true +L["Show total friends in the datatext."] = true +L["Show total guild members in the datatext."] = true +L["These options are for modifing the Shadow & Light Friends datatext."] = true +L["S&L Guild"] = true +L["Show Totals"] = true +L["Expand RealID"] = true +L["Display realid with two lines to view broadcasts."] = true +L["Hide Hints"] = true +L["Hide the hints in the tooltip."] = true +L["Autohide Delay:"] = true +L["Adjust the tooltip autohide delay when mouse is no longer hovering of the datatext."] = true +L["S&L Datatexts"] = true +L["Datatext Options"] = true +L["These options are for modifing the Shadow & Light Guild datatext."] = true +L["Hide MOTD"] = true +L["Hide the guild's Message of the Day in the tooltip."] = true +L["Hide Guild Name"] = true +L["Hide the guild's name in the tooltip."] = true +L["Hide In Combat"] = true +L["Will not show the tooltip while in combat."] = true + +--Exp/Rep Bar-- +L["Xp-Rep Text"] = true +L["Full value on Exp Bar"] = true +L["Changes the way text is shown on exp bar."] = true +L["Full value on Rep Bar"] = true +L["Changes the way text is shown on rep bar."] = true +L["Auto Track Reputation"] = true +L["Automatically sets reputation tracking to the most recent reputation change."] = true + +--Equip Manager-- +L['Equipment Manager'] = true +L["EM_DESC"] = "This module provides different options to automatically change your equipment sets on spec change or entering certain locations." +L['Spam Throttling'] = true +L["Removes the spam from chat stating what talents were learned or unlearned during spec change."] = true +L["Here you can choose what equipment sets to use in different situations."] = true +L["Equip this set when switching to primary talents."] = true +L["Equip this set when switching to secondary talents."] =true +L["Equip this set after entering dungeons or raids."] = true +L["Equip this set after entering battlegrounds or arens."] = true + + +--Farm-- +L['Farm'] = true +L["FARM_DESC"] = [[Additional actionbars for the Sunsong Ranch containing seeds, tools and portals. +They will appear only if you are on the Ranch or The Halfhill Market.]] +L['Only active buttons'] = true +L['Only show the buttons for the seeds, portals, tools you have in your bags.'] = true +L["Seed Bars"] = true +L["Auto Planting"] = true +L["Automatically plant seeds to the nearest tilled soil if one is not already selected."] = true +L["Drop Seeds"] = true +L["Allow seeds to be destroyed from seed bars."] = true +L["Quest Glow"] = true +L["Show glowing border on seeds needed for any quest in your log."] = true +L["Dock Buttons To"] = true +L["Change the position from where seed bars will grow."] = true +L["Bottom"] = true +L["Top"] = true +L["Farm Seed Bars"] = true +L["Farm Tool Bar"] = true +L["Farm Portal Bar"] = true +L["Tilled Soil"] = true +L['Right-click to drop the item.'] = true +L["We are sorry, but you can't do this now. Try again after the end of this combat."] = true + +--Import Section +L["SLE_IMPORTS"] = "|cffFF0000Note:|r Use the filter imports with caution as these will overwrite any custom ones made!\nImporting a class filter will overwrite any modifications you have made to that class filter." +L["Import Options"] = true +L["Author Specific Imports"] = true +L['Select Author'] = true +L["Please be aware that importing any of the filters will require a reload of the UI for the settings to take effect.\nOnce you click a filter button, your screen will reload automatically."] = true +L["Import"] = true +L["This will import non class specific filters from this author."] = true +L["This will import All Class specific filters from this author."] = true +L['Import All'] = true + +--Loot-- +L['Loot Announcer'] = true +L["LOOT_DESC"] = [[This module will announce loot dropped when you open the loot window. +This will work only if you are raid leadedr, assist or master looter or if you hold left control key while looting to manually announce the items in chat.]] +L["Auto Announce"] = true +L["Automatically announce in selected chat channel."] = true +L["Loot Quality"] = true +L["Set the minimum quality of an item to announce."] = true +L["Announce loot to the selected channel."] = true +L["Loot Dropped:"] = true + +--Marks-- +L["Raid Marks"] = true +L["Show/Hide raid marks."] = true +L["Show only in instances"] = true +L["Selecting this option will have the Raid Markers appear only while in a raid or dungeon."] = true +L["Sets size of buttons"] = true --Also used in UI buttons +L["Direction"] = true +L["Change the direction of buttons growth from the skull marker"] = true + +--Minimap-- +L["Minimap Options"] = true +L['MINIMAP_DESC'] = "These options effect various aspects of the minimap. Some options may not work if you disable minimap in the General section of ElvUI config." +L["Minimap Coordinates"] = true +L['Coords Display'] = true +L['Change settings for the display of the coordinates that are on the minimap.'] = true +L["Coords Location"] = true +L['This will determine where the coords are shown on the minimap.'] = true +L['Bottom Corners'] = true +L['Bottom Center'] = true +L["Minimap Buttons"] = true +L['Enable/Disable minimap button skinning.'] = true +L['Anchor Setting'] = true +L['Anchor mode for displaying the minimap buttons are skinned.'] = true +L['Horizontal Bar'] = true +L['Vertical Bar'] = true +L['The size of the minimap buttons when not anchored to the minimap.'] = true +L['Show minimap buttons on mouseover.'] = true + +--Raid Utility-- +L["Raid Utility"] = true + +--Skins-- +L["This options require ElvUI AddOnSkins pack to work."] = true +L["Sets font size on DBM bars"] = true +L["Ground"] = true +L["Flying"] = true +L["Flying & Ground"] = true +L["Swimming"] = true + +--UI buttons-- +L["UI Buttons"] = true +L["Additional menu with useful buttons"] = true +L["Show/Hide UI buttons."] = true +L["Mouse over"] = true +L["Show on mouse over."] = true +L["Buttons position"] = true +L["Layout for UI buttons."] = true +L["Click to reload your interface"] = true +L["Click to toggle config window"] = true +L["Click to toggle the AddOn Manager frame (stAddOnManager, Ampere or ACP) you have enabled."] = true +L["Click to toggle the Configuration/Option Window from the Bossmod (DXE, DBM or Bigwigs) you have enabled."] = true +L["Click to unlock moving ElvUI elements"] = true +L["ElvUI Config"] = true +L["Move UI"] = true +L["Reload UI"] = true +L["AddOns Manager"] = true +L["Boss Mod"] = true +L["Click to toggle iFilger's config UI"] = true + +--Unitframes-- +L["Additional unit frames options"] = true +L["Options for customizing unit frames. Please don't change these setting when ElvUI's testing frames for bosses and arena teams are shown. That will make them invisible until retoggling."] = true +L["Player Frame Indicators"] = true +L["Combat Icon"] = true +L["Show/Hide combat icon on player frame."] = true +L["Combat Position"] = true +L["Set the point to show combat icon"] = true +L["Classbar Energy"] = true +L["Show/hide the text with exact number of energy (Solar/Lunar or Demonic Fury) on your Classbar."] = true +L["Classbar Offset"] = true +L["This options will allow you to detach your classbar from player's frame and move it in other location."] = true +L["Power Text Position"] = true +L["Position power text on this bar of chosen frame"] = true + +--Credits-- +L["ELVUI_SLE_CREDITS"] = "We would like to point out the following people for helping us create this addon with testing, coding, and other stuff." +L["Submodules and Coding:"] = true +L["ELVUI_SLE_CODERS"] = [=[Elv +Tukz +Affinitii +Azilroka +Blazeflack +Boradan +Camealion +Omega1970 +Pvtschlag +Sinaris +Sortokk +Swordyy +]=] +L["Other Support:"] = true +L["ELVUI_SLE_MISC"] = [=[BuG - for being french lol +TheSamaKutra +The rest of TukUI community +]=] + +--Tutorials-- +L["To enable full values of health/power on unitframes in Shadow & Light add \":sl\" to the end of the health/power tag.\nExample: [health:current:sl]."] = true + +--Movers-- +L["Pet Battle AB"] = true + + +--Changelog-- +L["Changelog"] = true +L["CHANGE_LOG"] = [=[|cff1784d1v1.5|r +- Some typos fixed +- Datatext panels can now be transparent +- Background frames no longer have offset options, now they have own movers +- Background frames template doesn't require reload and is a profile based option +- Movers created by S&L now are grouped by own categories just like in ElvUI itself (Note: background frames' movers are available ONLY in those groups) +- Raid Marks now properly update setting on profile change +- Raid Marks module now has an option to hide backdrop for it's main panel +- Added Item Level overlay on item slots +- Added Item Durability overlay on item slots +- Added Equipment Manager per spec/zone +- Added Farm module to make farming easier. +- Added skinning of minimap buttons +- Added coordinates to the minimap +- LFR Lockout tracking in time datatext now has options to choose what daungeons you want to show there +- Top datapanel info can now be changed by user +- You will now receive chat message if someone in your group/raid has newer version of S&L +- Add Affinitii's (Blood Legion) UI Layout +- Darth's Layout Modified +- Added loot announce function ]=] \ No newline at end of file diff --git a/ElvUI_SLE/locales/russian.lua b/ElvUI_SLE/locales/russian.lua index e8d9c48..9a1e510 100755 --- a/ElvUI_SLE/locales/russian.lua +++ b/ElvUI_SLE/locales/russian.lua @@ -1,315 +1,316 @@ ---Russian localization -local AceLocale = LibStub:GetLibrary("AceLocale-3.0") -local L = AceLocale:NewLocale("ElvUI", "ruRU") - -if not L then return; end - ---General-- -L["Shadow & Light"] = "Тень и Свет" -L["SLE_DESC"] = [=[Это редакция ElvUI добавляет некоторые новые функции к оригинальному аддону и изменяет функционал некоторых старых опций. -Эта редакция ни в коем виде не изменяет оригинальные файлы, так что вы можете спокойно отключить ее в вашем менеджере аддонов по желанию.]=] -L["LFR Lockout"] = "Состояние ЛФР" -L["Show/Hide LFR lockout info in the time datatext's tooltip."] = "Отображать/скрывать информацию о сохранении ЛФР" -L["PvP Auto Release"] = "Автоматический выход из тела" -L["Automatically release body when killed inside a battleground."] = "Автоматически выходить из тела на полях боя." -L["Errors in combat"] = "Отображать ошибки в бою" -L["Show/hide error messages in combat."] = "Показать/скрыть сообщения об ошибках в бою" -L["Pet autocast corners"] = "Автокаст питомца" -L["Show/hide triangles in corners of autocastable buttons."] = "Показать/скрыть треугольники в углах кнопок с автоматически применяемыми заклинаниями питомца." -L["Loot History"] = "История добычи" -L["Auto hide"] = "Автоматически скрывать" -L["Automaticaly hide Blizzard loot histroy frame when leaving the instance."] = "Автоматически скрывать окно истории добычи Blizzard при выходе из подземелья." -L["Sets alpha of loot histroy frame."] = "Устанавливает прозрачность окна истории добычи" -L["SLE_LOGIN_MSG"] = [=[Вы используете редакцию ElvUI под названием |cff1784d1"Тень и Свет"|r версия |cff1784d1%s%s|r. -Если вы хотите использовать оригинальный ElvUI, просто отключите плагин этой редакции в вашем менеджере аддонов. -Приятной игры.]=] -L["Your version of ElvUI is older than recommended to use with Shadow & Light Edit. Please, download the latest version from tukui.org."] = "Ваша версия ElvUI старее, чем рекомендованная для использования с редакцией Тень и Свет. Пожалуйста, скачайте последнюю версию с tukui.org." -L["Reset All"] = "Сбросить все" -L["Reset all Shadow & Light options and movers to their defaults"] = "Сбросить все настройки и фиксаторы редакции на умолчания" -L["Reset these options to defaults"] = "Восстановить умолчания для этих опций" - ---Install-- -L["Shadow & Light Settings"] = "Установки Тени и Света" -L["You can now choose if you what to use one of authors' set of options. This will change not only the positioning of some elements but also change a bunch of other options."] = "Вы можете выбрать использование одного из набора конфигурации от авторов. Это изменит не только расположение ваших рамок и панелей, но и некоторого количества других опций." -L["SLE_Install_Text2"] = [=[Этот шаг опционален и должен использоваться только в случае, если Вы хотите использовать одну из наших конфигураций. -|cffFF0000Внимание:|r Пожалуйста помните, что авторы могут не использовать тему/роль, которую вы выбрали, и потому результат не всегда будет хорошим.]=] -L["Darth's Config"] = "Опции Darth'а" -L["Darth's Defaults Set"] = "Установлены настройки Darth'а" -L["Repooc's Config"] = "Опции Repooc'а" -L["Repooc's Defaults Set"] = "Установлены настройки Repooc'а" -L["Affinitii's Config"] = "Опции Affinitii" -L["Affinitii's Defaults Set"] = "Установлены настройки Affinitii" - ---Auras-- -L["Options for customizing auras near the minimap."] = "Опции для настройки аур около миникарты" -L["Caster Name"] = "Имя заклинателя" -L["Enabling this will show caster name in the buffs and debuff icons."] = "При включении будет отображать в подсказке к ауре имя того, кто наложил ее" - ---Backgroungds-- -L["Backgrounds"] = "Фоновые фреймы" -L["Additional Background Panels"] = "Дополнительные фреймы для фонов" -L["BG_DESC"] = "Модуль для создания дополнительных фреймов, которые могут использоваться в качестве фонов для чего-нибудь." -L["Bottom BG"] = "Нижний фон" -L["Left BG"] = "Левый фон" -L["Right BG"] = "Правый фон" -L["Actionbar BG"] = "Верхний фон" -L["Show/Hide this frame."] = "Показать/скрыть этот фрейм." -L["Sets width of the frame"] = "Устанавливает ширину фрейма" -L["Sets height of the frame"] = "Устанавливает высоту фрейма" -L["Sets X offset of the frame"] = "Устанавливает смещение по оси X" -L["Sets Y offset of the frame"] = "Устанавливает смещение по оси Y" -L["Texture"] = "Текстура" -L["Set the texture to use in this frame. Requirements are the same as the chat textures."] = "Устанавливает текстуру этого фрейма. Требования к текстуре такие же, как для текстур чата." -L["Backdrop Template"] = "Тип фона" -L["Change the template used for this backdrop."] = "Измените шаблон, используемый при создании этого фона" -L["Default"] = "Обычный" -L["Hide in Pet Batlle"] = "Прятать в битвах питомцев" -L["Show/Hide this frame during Pet Battles."] = "Показать/скрыть этот фрейм в битвах питомцев" - ---Character Frame Options-- -L["CFO_DESC"] = "Дополнительные опции окна персонажа. Вы можете включить отображение уровня и прочности предметов." -L["Character Frame Options"] = "Настройки окна персонажа" -L['Font'] = "Шрифт" --L['Fonts'] is localized in elvui but not Font -L["The font that the item level will use."] = "Шрифт уровня предметов." -L["Set the font size that the item level will use."] = "Размер шрифта уровня предметов." -L["Set the font outline that the item level will use."] = "Граница шрифта уровня предметов." -L["The font that the item durability will use."] = "Шрифт прочности предметов." -L["Set the font size that the item durability will use."] = "Размер шрифта прочности предметов." -L["Set the font outline that the item durability will use."] = "Граница шрифта прочности предметов." - ---Chat-- -L["Chat Options"] = "Настройки чата" -L["Chat Editbox History"] = "История чата" -L["Amount of messages to save. Set to 0 to disable."] = "Количество сообщений, введенных вами, которое будет сохранено между сеансами" - ---Datatexts-- -L["Bosses killed: "] = "Боссов убито: " -L["You didn't select any instance to track."] = "Вы не выбрали подземелья для отслеживания" -L["This LFR isn't available for your level/gear."] = "Это подземелье не доступно для Вашего уровня или экипировки." -L["SLE_AUTHOR_INFO"] = "Редакция \"Тень и Свет\" от Darth Predator и Repooc" -L["SLE_CONTACTS"] = [=[При возникновении вопросов, предложений и прочего обращаться: -- Личное сообщение на форуме TukUI (tukui.org), ник Darth Predator или Repooc -- Страница/система тикетов на curse.com -- Форумы tukui.org, раздел Addons/Help -- Репозиторий проекта на github.com]=] -L["DP_1"] = "Панель 1" -L["DP_2"] = "Панель 2" -L["DP_3"] = "Панель 3" -L["DP_4"] = "Панель 4" -L["DP_5"] = "Панель 5" -L["DP_6"] = "Панель 6" -L["Bottom_Panel"] = "Нижняя панель" -L["Top_Center"] = "Верхняя панель" -L["Left Chat"] = "Левый чат" -L["Right Chat"] = "Правый чат" -L["Datatext Panels"] = "Панели инфо-текстов" -L["Additional Datatext Panels"] = "Дополнительные панели инфо-текстов" -L["DP_DESC"] = [=[Дополнительные панели под информационные тексты. -Всего здесь 8 дополнительных панелей и 20 дополнительных слотов под инфо-тексты, а также панель состояния с 4мя индикаторами. -Панели на чатах отключить нельзя.]=] -L["Dashboard"] = "Панель состояния" -L["Show/Hide dashboard."] = "Показать/скрыть панель состояния." -L["Dashboard Panels Width"] = "Ширина панелей" -L["Sets size of dashboard panels."] = "Устанавливает размер полос панели состояния." -L["Show/Hide this panel."] = "Показать/скрыть эту панель." -L["Sets size of this panel"] = "Установить ширину панели" -L['Hide panel background'] = "Скрыть фон панели" -L["Don't show this panel, only datatexts assinged to it"] = "Не показывать саму панель, а только назначенные на нее инфо-тексты" - ---Exp/Rep Bar-- -L["Xp-Rep Text"] = "Текст Опыта/Репутации" -L["Full value on Exp Bar"] = "Полное значение опыта" -L["Changes the way text is shown on exp bar."] = "Изменяет отображение значений опыта на полосе." -L["Full value on Rep Bar"] = "Полное значение репутации" -L["Changes the way text is shown on rep bar."] = "Изменяет отображение значений репутации на полосе." -L["Auto Track Reputation"] = "Автоматически отслеживать репутацию" -L["Automatically sets reputation tracking to the most recent reputation change."] = "Автоматически изменять отслеживаемую репутацию на последнюю фракцию, чье отношение к Вам изменилось." - ---Equip Manager-- -L['Equipment Manager'] = "Менеджер экипировки" -L["EM_DESC"] = "Этот модуль предоставляет различные опции для автоматической смены комплектов экипировки при переключении набора талантов или попадании в определенную локацию." -L['Spam Throttling'] = "Подавление спама" -L["Removes the spam from chat stating what talents were learned or unlearned during spec change."] = "Удаляет спам об изученных/забытых заклинаниях при смене талантов." -L["Here you can choose what equipment sets to use in different situations."] = "Здесь Вы можете выбрать какие комплекты экипировки использовать в различных случаях." -L["Equip this set when switching to primary talents."] = "Надеть этот набор при переключении на основной набор талантов." -L["Equip this set when switching to secondary talents."] = "Надеть этот набор при переключении на дополнительный набор талантов." -L["Equip this set after entering dungeons or raids."] = "Надеть этот набор при попадании в подземелье или рейд." -L["Equip this set after entering battlegrounds or arens."] = "Надеть этот набор при попадании на поля боя или арены." - ---Farm-- -L['Farm'] = "Ферма" -L["FARM_DESC"] = [[Дополнительные панели с семенами, инструментами и порталами для Фермы Солнечной Песни. -Они будут отображаться только если Вы находитесь на ферме или рынке Полугорья.]] -L['Only active buttons'] = "Только активные" -L['Only show the buttons for the seeds, portals, tools you have in your bags.'] = "Отображать только кнопки для тех семян/инструментов/порталов, которые есть у Вас в сумках." -L["Seed Bars"] = "Панели семян" -L["Auto Planting"] = "Автоматическая посадка" -L["Automatically plant seeds to the nearest tilled soil if one is not already selected."] = "Автоматически высаживать указанное растение на ближайшую возделанную змелю, если не выбрана другая." -L["Drop Seeds"] = "Удалять семена" -L["Allow seeds to be destroyed from seed bars."] = "Позволить удаление семян при помощи панелей." -L["Quest Glow"] = "Свечение заданий" -L["Show glowing border on seeds needed for any quest in your log."] = "Показывать светящуюся границу на семенах, необходимых на какое-либо из взятых заданий из Вашего журнала." -L["Dock Buttons To"] = "Прикрепить кнопки к" -L["Change the position from where seed bars will grow."] = "Изменить сторону, с которой будут расти панели семян." -L["Bottom"] = "Низ" -L["Top"] = "Верх" -L["Farm Seed Bars"] = "Панели семян" -L["Farm Tool Bar"] = "Панель инструментов" -L["Farm Portal Bar"] = "Панель порталов" -L["Tilled Soil"] = "Возделанная земля" -L['Right-click to drop the item.'] = "ПКМ для уничтожения предмета." - ---Marks-- -L["Raid Marks"] = "Рейдовые Метки" -L["Show/Hide raid marks."] = "Показать/скрыть фрейм рейдовых меток." -L["Show only in instances"] = "Только в подземельях" -L["Selecting this option will have the Raid Markers appear only while in a raid or dungeon."] = "При активации будет отображать полосу меток только в подземельях и рейдах." -L["Sets size of buttons"] = "Устанавливает размер кнопок" --Also used in UI buttons -L["Direction"] = "Направление" -L["Change the direction of buttons growth from the skull marker"] = "Изменяет направление роста кнопок от метки \"череп\"." - ---Import Section -L["SLE_IMPORTS"] = "|cffFF0000Важно:|r Используйте импортирование фильтров осторожно, так как они удалят ваши собсвенные фильтры!\nИмпортирование классового фильтра перезапишет любые изменения, которые Вы в него вносили." -L["Import Options"] = "Импорт Настроек" -L["Author Specific Imports"] = "Импорт специфических настроек авторов" -L['Select Author'] = "Выберите автора" -L["Please be aware that importing any of the filters will require a reload of the UI for the settings to take effect.\nOnce you click a filter button, your screen will reload automatically."] = "Пожалуйста, учтите, что импортирование любого фильтра потребует перезагрузки интерфейса для вступления в силу.\nКак только вы нажмете на кнопку, Ваш интерфейс перезагрузится автоматически." -L["Import"] = "Импорт" -L["This will import non class specific filters from this author."] = "Это импортирует не привязанные к классу фильтры этого автора." -L["This will import All Class specific filters from this author."] = "Это импортирует все классовые фильтры этого автора." -L['Import All'] = "Импорт всего" - ---Loot-- -L['Loot Announcer'] = "Оповещение о добыче" -L["LOOT_DESC"] = [[Этот модуль будет выводить список выпавшей добычи при открытии окна добычи. -Вывод осуществляется только если Вы лидер, помощник или ответственный за добычу или при зажатии левой клавиши control при осмотре трупа для принудительного вывода.]] -L["Auto Announce"] = "Авто оповещение" -L["Automatically announce in selected chat channel."] = "Автоматически выводить список добычи в выбранный канал чата" -L["Loot Quality"] = "Качество добычи" -L["Set the minimum quality of an item to announce."] = "Минимальное качество предмета, для вывода в чате." -L["Announce loot to the selected channel."] = "Канал чата, для вывода сообщений." -L["Loot Dropped:"] = "Список добычи:" - ---Minimap-- -L["Minimap Options"] = "Опции миникарты" -L['MINIMAP_DESC'] = "Эти опции влияют на различные функции миникарты. Некоторые опции погут не работать, если вы отключите миникарты в основных настройках ElvUI." -L["Minimap Coordinates"] = "Координаты на миникарте" -L['Coords Display'] = "Отображение координат" -L['Change settings for the display of the coordinates that are on the minimap.'] = "Укажите условие отображения координат на миникарте." -L["Coords Location"] = "Позиция координат" -L['This will determine where the coords are shown on the minimap.'] = "Определяет место, в котором будут отображаться координаты на миникарте" -L['Bottom Corners'] = "Нижние углы" -L['Bottom Center'] = "Внизу по центру" -L["Minimap Buttons"] = "Иконки у миникарты" -L['Enable/Disable minimap button skinning.'] = "Включить/выключить стилизацию иконок у миникарты." -L['Anchor Setting'] = "Настрокий расположения" -L['Anchor mode for displaying the minimap buttons are skinned.'] = "Место расположения иконок аддонов, когда они стилизованы." -L['Horizontal Bar'] = "Горизонтальная панель" -L['Vertical Bar'] = "Вертикальная панель" -L['The size of the minimap buttons when not anchored to the minimap.'] = "Размер иконок, когда они не прикреплены к миникарте." -L['Show minimap buttons on mouseover.'] = "Отображать иконпри при наведении мыши." - - ---Mover groups -L["S&L: All"] = "S&L: Все" -L["S&L: Datatexts"] = "S&L: Инфо-тексты" -L["S&L: Backgrounds"] = "S&L: Фоновые фреймы" -L["S&L: Misc"] = "S&L: Прочее" - ---Raid Utility-- -L["Raid Utility"] = "Управление рейдом" - ---Skins-- -L["This options require ElvUI AddOnSkins pack to work."] = "Эти опции требуют наличие пака ElvUI AddOnSkins для работы" -L["Sets font size on DBM bars"] = "Устанавливает размер текста на полосах DBM" -L["Ground"] = "Наземные" -L["Flying"] = "Летающие" -L["Flying & Ground"] = "Наземные и Летающие" -L["Swimming"] = "Водные" - ---UI buttons-- -L["UI Buttons"] = "Меню интерфейса" -L["Additional menu with useful buttons"] = "Дополнительное меню с полезными кнопками" -L["Show/Hide UI buttons."] = "Показать/скрыть меню" -L["Mouse over"] = "При наведении" -L["Show on mouse over."] = "Отображать при наведении мыши." -L["Buttons position"] = "Положение кнопок" -L["Layout for UI buttons."] = "Режим положения кнопок" -L["Click to reload your interface"] = "Нажмите для перезагрузки интерфейса" -L["Click to toggle config window"] = "Нажмите для отображения окна настроек" -L["Click to toggle the AddOn Manager frame (stAddOnManager, Ampere or ACP) you have enabled."] = "Нажмите для отображения окна менеджера аддонов. Поддерживаются stAddOnManager, ACP, Ampere" -L["Click to toggle the Configuration/Option Window from the Bossmod (DXE, DBM or Bigwigs) you have enabled."] = "Нажмите для отображения окна настроек включенного босс мода. Поддерживаются DXE, DBM, Bigwigs." -L["Click to unlock moving ElvUI elements"] = "Нажмите для входа в режим перемещения элементов" -L["ElvUI Config"] = "Настройка ElvUI" -L["Move UI"] = "Разблокировать элементы" -L["Reload UI"] = "Перезагрузить интерфейс" -L["AddOns Manager"] = "Менеджер аддонов" -L["Boss Mod"] = "Босс мод" -L["Click to toggle iFilger's config UI"] = "Нажмите для отображения настроек iFilger" - ---Unitframes-- -L["Additional unit frames options"] = "Дополнительные опции рамок юнитов" -L["Options for customizing unit frames. Please don't change these setting when ElvUI's testing frames for bosses and arena teams are shown. That will make them invisible until retoggling."] = "Опции для дополнительной настройки рамок юнитов. Пожалуйста, не изменяйте эти настройки в то же время, кода включен тестовый режим рамок боссов и арены в ElvUI. Это сделает их невидимыми до повторного включения." -L["Player Frame Indicators"] = "Индикаторы игрока" -L["Combat Icon"] = "Иконка боя" -L["Show/Hide combat icon on player frame."] = "Отображать/скрывать иконку в бою." -L["Combat Position"] = "Позиция иконки боя" -L["Set the point to show combat icon"] = "Устанавливает позицию индикатора боя." -L["Classbar Energy"] = "Текст энергии полосы класса" -L["Show/hide the text with exact number of energy (Solar/Lunar or Demonic Fury) on your Classbar."] = "Показать/скрыть текст с точным значением энергии (Лунной/Солнечной или Демонической Ярости) на полосе класса." -L["Classbar Offset"] = "Отступ полосы класса" -L["This options will allow you to detach your classbar from player's frame and move it in other location."] = "Эти опции позволят вам открепить полосу класса от рамки игрока и передвинуть ее в другое место." -L["Power Text Position"] = "Позиция текста ресурса" -L["Position power text on this bar of chosen frame"] = "Позиционировать текст ресурса относительно выбранной полосы на каждой рамке" - ---Credits-- -L["ELVUI_SLE_CREDITS"] = "Мы бы хотели отметить следующих людей, которые помогли нас сделать этот аддон посредством тестирования, кода и прочего." -L["Submodules and Coding:"] = "Субмодули и кодинг:" -L["ELVUI_SLE_CODERS"] = [=[Elv -Tukz -Affinitii -Azilroka -Blazeflack -Boradan -Camealion -Omega1970 -Pvtschlag -Sinaris -Sortokk -Swordyy -]=] -L["Other Support:"] = "Прочая поддержка:" -L["ELVUI_SLE_MISC"] = [=[BuG - за то, что он француз :D -TheSamaKutra -Сообщество TukUI -]=] - ---Tutorials-- -L["To enable full values of health/power on unitframes in Shadow & Light add \":sl\" to the end of the health/power tag.\nExample: [health:current:sl]."] = "Чтобы включить отображение полного значения здоровья/ресурса при использовании Тени и Света, нужно добавить \":sl\" в конец нужного тэга.\nПример: [health:current:sl]." - ---Movers-- -L["Pet Battle AB"] = "Панель боев питомцев" - ---Changelog -L["Changelog"] = "Изменения" -L["CHANGE_LOG"] = [=[|cff1784d1v1.5|r -- Исправлены некоторые опечатки -- Панели инфо-текстов теперь могут быть прозрачными -- У фоновых фреймов больше нет опции смещения, теперь у них есть собственные фиксаторы -- Тип фона для фоновых фреймов теперь опция профиля и не требует перезагрузки интерфейса -- Фиксаторы, создаваемые S&L теперь группируются по собственным категориям аналогично оригинальному ElvUI (фиксаторы фоновых фреймов доступны ТОЛЬКО в этоих группах) -- Рейдовые метки теперь корректно обновляют настройки при смене профиля -- У основной панели рейдовых меток теперь можно скрыть фон -- Добавлен показ уровня на предметах в окне игрока -- Добавлен показ прочности на предметах в окне игрока -- Добавлен менеджер экипировки по специализации/зоне -- Добавлен модуль фермы для улучшения жизни огородников -- Добавлена стилизация иконок у миникарты -- Добавлено отображение текущих координат на миникарте -- Слежение за убитыми боссами в ЛФР теперь позволяет выбрать какие подземелья Вы хотите отслеживать. -- Информация на верхней панели инфо-текстов теперь может быть изменена пользователем -- Вы будете получать текстовое сообщение в чате, если в вашей группе/рейде есть человек с более новой версией -- Добавлены настройки Affinitii (Blood Legion) -- Настройки Дарта обновлены -- Добавлена функция оповещения о добыче +--Russian localization +local AceLocale = LibStub:GetLibrary("AceLocale-3.0") +local L = AceLocale:NewLocale("ElvUI", "ruRU") + +if not L then return; end + +--General-- +L["Shadow & Light"] = "Тень и Свет" +L["SLE_DESC"] = [=[Это редакция ElvUI добавляет некоторые новые функции к оригинальному аддону и изменяет функционал некоторых старых опций. +Эта редакция ни в коем виде не изменяет оригинальные файлы, так что вы можете спокойно отключить ее в вашем менеджере аддонов по желанию.]=] +L["LFR Lockout"] = "Состояние ЛФР" +L["Show/Hide LFR lockout info in the time datatext's tooltip."] = "Отображать/скрывать информацию о сохранении ЛФР" +L["PvP Auto Release"] = "Автоматический выход из тела" +L["Automatically release body when killed inside a battleground."] = "Автоматически выходить из тела на полях боя." +L["Errors in combat"] = "Отображать ошибки в бою" +L["Show/hide error messages in combat."] = "Показать/скрыть сообщения об ошибках в бою" +L["Pet autocast corners"] = "Автокаст питомца" +L["Show/hide triangles in corners of autocastable buttons."] = "Показать/скрыть треугольники в углах кнопок с автоматически применяемыми заклинаниями питомца." +L["Loot History"] = "История добычи" +L["Auto hide"] = "Автоматически скрывать" +L["Automaticaly hide Blizzard loot histroy frame when leaving the instance."] = "Автоматически скрывать окно истории добычи Blizzard при выходе из подземелья." +L["Sets alpha of loot histroy frame."] = "Устанавливает прозрачность окна истории добычи" +L["SLE_LOGIN_MSG"] = [=[Вы используете редакцию ElvUI под названием |cff1784d1"Тень и Свет"|r версия |cff1784d1%s%s|r. +Если вы хотите использовать оригинальный ElvUI, просто отключите плагин этой редакции в вашем менеджере аддонов. +Приятной игры.]=] +L["Your version of ElvUI is older than recommended to use with Shadow & Light Edit. Please, download the latest version from tukui.org."] = "Ваша версия ElvUI старее, чем рекомендованная для использования с редакцией Тень и Свет. Пожалуйста, скачайте последнюю версию с tukui.org." +L["Reset All"] = "Сбросить все" +L["Reset all Shadow & Light options and movers to their defaults"] = "Сбросить все настройки и фиксаторы редакции на умолчания" +L["Reset these options to defaults"] = "Восстановить умолчания для этих опций" + +--Install-- +L["Shadow & Light Settings"] = "Установки Тени и Света" +L["You can now choose if you what to use one of authors' set of options. This will change not only the positioning of some elements but also change a bunch of other options."] = "Вы можете выбрать использование одного из набора конфигурации от авторов. Это изменит не только расположение ваших рамок и панелей, но и некоторого количества других опций." +L["SLE_Install_Text2"] = [=[Этот шаг опционален и должен использоваться только в случае, если Вы хотите использовать одну из наших конфигураций. +|cffFF0000Внимание:|r Пожалуйста помните, что авторы могут не использовать тему/роль, которую вы выбрали, и потому результат не всегда будет хорошим.]=] +L["Darth's Config"] = "Опции Darth'а" +L["Darth's Defaults Set"] = "Установлены настройки Darth'а" +L["Repooc's Config"] = "Опции Repooc'а" +L["Repooc's Defaults Set"] = "Установлены настройки Repooc'а" +L["Affinitii's Config"] = "Опции Affinitii" +L["Affinitii's Defaults Set"] = "Установлены настройки Affinitii" + +--Auras-- +L["Options for customizing auras near the minimap."] = "Опции для настройки аур около миникарты" +L["Caster Name"] = "Имя заклинателя" +L["Enabling this will show caster name in the buffs and debuff icons."] = "При включении будет отображать в подсказке к ауре имя того, кто наложил ее" + +--Backgroungds-- +L["Backgrounds"] = "Фоновые фреймы" +L["Additional Background Panels"] = "Дополнительные фреймы для фонов" +L["BG_DESC"] = "Модуль для создания дополнительных фреймов, которые могут использоваться в качестве фонов для чего-нибудь." +L["Bottom BG"] = "Нижний фон" +L["Left BG"] = "Левый фон" +L["Right BG"] = "Правый фон" +L["Actionbar BG"] = "Верхний фон" +L["Show/Hide this frame."] = "Показать/скрыть этот фрейм." +L["Sets width of the frame"] = "Устанавливает ширину фрейма" +L["Sets height of the frame"] = "Устанавливает высоту фрейма" +L["Sets X offset of the frame"] = "Устанавливает смещение по оси X" +L["Sets Y offset of the frame"] = "Устанавливает смещение по оси Y" +L["Texture"] = "Текстура" +L["Set the texture to use in this frame. Requirements are the same as the chat textures."] = "Устанавливает текстуру этого фрейма. Требования к текстуре такие же, как для текстур чата." +L["Backdrop Template"] = "Тип фона" +L["Change the template used for this backdrop."] = "Измените шаблон, используемый при создании этого фона" +L["Default"] = "Обычный" +L["Hide in Pet Batlle"] = "Прятать в битвах питомцев" +L["Show/Hide this frame during Pet Battles."] = "Показать/скрыть этот фрейм в битвах питомцев" + +--Character Frame Options-- +L["CFO_DESC"] = "Дополнительные опции окна персонажа. Вы можете включить отображение уровня и прочности предметов." +L["Character Frame Options"] = "Настройки окна персонажа" +L['Font'] = "Шрифт" --L['Fonts'] is localized in elvui but not Font +L["The font that the item level will use."] = "Шрифт уровня предметов." +L["Set the font size that the item level will use."] = "Размер шрифта уровня предметов." +L["Set the font outline that the item level will use."] = "Граница шрифта уровня предметов." +L["The font that the item durability will use."] = "Шрифт прочности предметов." +L["Set the font size that the item durability will use."] = "Размер шрифта прочности предметов." +L["Set the font outline that the item durability will use."] = "Граница шрифта прочности предметов." + +--Chat-- +L["Chat Options"] = "Настройки чата" +L["Chat Editbox History"] = "История чата" +L["Amount of messages to save. Set to 0 to disable."] = "Количество сообщений, введенных вами, которое будет сохранено между сеансами" + +--Datatexts-- +L["Bosses killed: "] = "Боссов убито: " +L["You didn't select any instance to track."] = "Вы не выбрали подземелья для отслеживания" +L["This LFR isn't available for your level/gear."] = "Это подземелье не доступно для Вашего уровня или экипировки." +L["SLE_AUTHOR_INFO"] = "Редакция \"Тень и Свет\" от Darth Predator и Repooc" +L["SLE_CONTACTS"] = [=[При возникновении вопросов, предложений и прочего обращаться: +- Личное сообщение на форуме TukUI (tukui.org), ник Darth Predator или Repooc +- Страница/система тикетов на curse.com +- Форумы tukui.org, раздел Addons/Help +- Репозиторий проекта на github.com]=] +L["DP_1"] = "Панель 1" +L["DP_2"] = "Панель 2" +L["DP_3"] = "Панель 3" +L["DP_4"] = "Панель 4" +L["DP_5"] = "Панель 5" +L["DP_6"] = "Панель 6" +L["Bottom_Panel"] = "Нижняя панель" +L["Top_Center"] = "Верхняя панель" +L["Left Chat"] = "Левый чат" +L["Right Chat"] = "Правый чат" +L["Datatext Panels"] = "Панели инфо-текстов" +L["Additional Datatext Panels"] = "Дополнительные панели инфо-текстов" +L["DP_DESC"] = [=[Дополнительные панели под информационные тексты. +Всего здесь 8 дополнительных панелей и 20 дополнительных слотов под инфо-тексты, а также панель состояния с 4мя индикаторами. +Панели на чатах отключить нельзя.]=] +L["Dashboard"] = "Панель состояния" +L["Show/Hide dashboard."] = "Показать/скрыть панель состояния." +L["Dashboard Panels Width"] = "Ширина панелей" +L["Sets size of dashboard panels."] = "Устанавливает размер полос панели состояния." +L["Show/Hide this panel."] = "Показать/скрыть эту панель." +L["Sets size of this panel"] = "Установить ширину панели" +L['Hide panel background'] = "Скрыть фон панели" +L["Don't show this panel, only datatexts assinged to it"] = "Не показывать саму панель, а только назначенные на нее инфо-тексты" + +--Exp/Rep Bar-- +L["Xp-Rep Text"] = "Текст Опыта/Репутации" +L["Full value on Exp Bar"] = "Полное значение опыта" +L["Changes the way text is shown on exp bar."] = "Изменяет отображение значений опыта на полосе." +L["Full value on Rep Bar"] = "Полное значение репутации" +L["Changes the way text is shown on rep bar."] = "Изменяет отображение значений репутации на полосе." +L["Auto Track Reputation"] = "Автоматически отслеживать репутацию" +L["Automatically sets reputation tracking to the most recent reputation change."] = "Автоматически изменять отслеживаемую репутацию на последнюю фракцию, чье отношение к Вам изменилось." + +--Equip Manager-- +L['Equipment Manager'] = "Менеджер экипировки" +L["EM_DESC"] = "Этот модуль предоставляет различные опции для автоматической смены комплектов экипировки при переключении набора талантов или попадании в определенную локацию." +L['Spam Throttling'] = "Подавление спама" +L["Removes the spam from chat stating what talents were learned or unlearned during spec change."] = "Удаляет спам об изученных/забытых заклинаниях при смене талантов." +L["Here you can choose what equipment sets to use in different situations."] = "Здесь Вы можете выбрать какие комплекты экипировки использовать в различных случаях." +L["Equip this set when switching to primary talents."] = "Надеть этот набор при переключении на основной набор талантов." +L["Equip this set when switching to secondary talents."] = "Надеть этот набор при переключении на дополнительный набор талантов." +L["Equip this set after entering dungeons or raids."] = "Надеть этот набор при попадании в подземелье или рейд." +L["Equip this set after entering battlegrounds or arens."] = "Надеть этот набор при попадании на поля боя или арены." + +--Farm-- +L['Farm'] = "Ферма" +L["FARM_DESC"] = [[Дополнительные панели с семенами, инструментами и порталами для Фермы Солнечной Песни. +Они будут отображаться только если Вы находитесь на ферме или рынке Полугорья.]] +L['Only active buttons'] = "Только активные" +L['Only show the buttons for the seeds, portals, tools you have in your bags.'] = "Отображать только кнопки для тех семян/инструментов/порталов, которые есть у Вас в сумках." +L["Seed Bars"] = "Панели семян" +L["Auto Planting"] = "Автоматическая посадка" +L["Automatically plant seeds to the nearest tilled soil if one is not already selected."] = "Автоматически высаживать указанное растение на ближайшую возделанную змелю, если не выбрана другая." +L["Drop Seeds"] = "Удалять семена" +L["Allow seeds to be destroyed from seed bars."] = "Позволить удаление семян при помощи панелей." +L["Quest Glow"] = "Свечение заданий" +L["Show glowing border on seeds needed for any quest in your log."] = "Показывать светящуюся границу на семенах, необходимых на какое-либо из взятых заданий из Вашего журнала." +L["Dock Buttons To"] = "Прикрепить кнопки к" +L["Change the position from where seed bars will grow."] = "Изменить сторону, с которой будут расти панели семян." +L["Bottom"] = "Низ" +L["Top"] = "Верх" +L["Farm Seed Bars"] = "Панели семян" +L["Farm Tool Bar"] = "Панель инструментов" +L["Farm Portal Bar"] = "Панель порталов" +L["Tilled Soil"] = "Возделанная земля" +L['Right-click to drop the item.'] = "ПКМ для уничтожения предмета." +L["We are sorry, but you can't do this now. Try again after the end of this combat."] = "Извините, но Вы не можете этого сделать сейчас. Попробуйте снова после окончания текущего боя." + +--Marks-- +L["Raid Marks"] = "Рейдовые Метки" +L["Show/Hide raid marks."] = "Показать/скрыть фрейм рейдовых меток." +L["Show only in instances"] = "Только в подземельях" +L["Selecting this option will have the Raid Markers appear only while in a raid or dungeon."] = "При активации будет отображать полосу меток только в подземельях и рейдах." +L["Sets size of buttons"] = "Устанавливает размер кнопок" --Also used in UI buttons +L["Direction"] = "Направление" +L["Change the direction of buttons growth from the skull marker"] = "Изменяет направление роста кнопок от метки \"череп\"." + +--Import Section +L["SLE_IMPORTS"] = "|cffFF0000Важно:|r Используйте импортирование фильтров осторожно, так как они удалят ваши собсвенные фильтры!\nИмпортирование классового фильтра перезапишет любые изменения, которые Вы в него вносили." +L["Import Options"] = "Импорт Настроек" +L["Author Specific Imports"] = "Импорт специфических настроек авторов" +L['Select Author'] = "Выберите автора" +L["Please be aware that importing any of the filters will require a reload of the UI for the settings to take effect.\nOnce you click a filter button, your screen will reload automatically."] = "Пожалуйста, учтите, что импортирование любого фильтра потребует перезагрузки интерфейса для вступления в силу.\nКак только вы нажмете на кнопку, Ваш интерфейс перезагрузится автоматически." +L["Import"] = "Импорт" +L["This will import non class specific filters from this author."] = "Это импортирует не привязанные к классу фильтры этого автора." +L["This will import All Class specific filters from this author."] = "Это импортирует все классовые фильтры этого автора." +L['Import All'] = "Импорт всего" + +--Loot-- +L['Loot Announcer'] = "Оповещение о добыче" +L["LOOT_DESC"] = [[Этот модуль будет выводить список выпавшей добычи при открытии окна добычи. +Вывод осуществляется только если Вы лидер, помощник или ответственный за добычу или при зажатии левой клавиши control при осмотре трупа для принудительного вывода.]] +L["Auto Announce"] = "Авто оповещение" +L["Automatically announce in selected chat channel."] = "Автоматически выводить список добычи в выбранный канал чата" +L["Loot Quality"] = "Качество добычи" +L["Set the minimum quality of an item to announce."] = "Минимальное качество предмета, для вывода в чате." +L["Announce loot to the selected channel."] = "Канал чата, для вывода сообщений." +L["Loot Dropped:"] = "Список добычи:" + +--Minimap-- +L["Minimap Options"] = "Опции миникарты" +L['MINIMAP_DESC'] = "Эти опции влияют на различные функции миникарты. Некоторые опции погут не работать, если вы отключите миникарты в основных настройках ElvUI." +L["Minimap Coordinates"] = "Координаты на миникарте" +L['Coords Display'] = "Отображение координат" +L['Change settings for the display of the coordinates that are on the minimap.'] = "Укажите условие отображения координат на миникарте." +L["Coords Location"] = "Позиция координат" +L['This will determine where the coords are shown on the minimap.'] = "Определяет место, в котором будут отображаться координаты на миникарте" +L['Bottom Corners'] = "Нижние углы" +L['Bottom Center'] = "Внизу по центру" +L["Minimap Buttons"] = "Иконки у миникарты" +L['Enable/Disable minimap button skinning.'] = "Включить/выключить стилизацию иконок у миникарты." +L['Anchor Setting'] = "Настрокий расположения" +L['Anchor mode for displaying the minimap buttons are skinned.'] = "Место расположения иконок аддонов, когда они стилизованы." +L['Horizontal Bar'] = "Горизонтальная панель" +L['Vertical Bar'] = "Вертикальная панель" +L['The size of the minimap buttons when not anchored to the minimap.'] = "Размер иконок, когда они не прикреплены к миникарте." +L['Show minimap buttons on mouseover.'] = "Отображать иконпри при наведении мыши." + + +--Mover groups +L["S&L: All"] = "S&L: Все" +L["S&L: Datatexts"] = "S&L: Инфо-тексты" +L["S&L: Backgrounds"] = "S&L: Фоновые фреймы" +L["S&L: Misc"] = "S&L: Прочее" + +--Raid Utility-- +L["Raid Utility"] = "Управление рейдом" + +--Skins-- +L["This options require ElvUI AddOnSkins pack to work."] = "Эти опции требуют наличие пака ElvUI AddOnSkins для работы" +L["Sets font size on DBM bars"] = "Устанавливает размер текста на полосах DBM" +L["Ground"] = "Наземные" +L["Flying"] = "Летающие" +L["Flying & Ground"] = "Наземные и Летающие" +L["Swimming"] = "Водные" + +--UI buttons-- +L["UI Buttons"] = "Меню интерфейса" +L["Additional menu with useful buttons"] = "Дополнительное меню с полезными кнопками" +L["Show/Hide UI buttons."] = "Показать/скрыть меню" +L["Mouse over"] = "При наведении" +L["Show on mouse over."] = "Отображать при наведении мыши." +L["Buttons position"] = "Положение кнопок" +L["Layout for UI buttons."] = "Режим положения кнопок" +L["Click to reload your interface"] = "Нажмите для перезагрузки интерфейса" +L["Click to toggle config window"] = "Нажмите для отображения окна настроек" +L["Click to toggle the AddOn Manager frame (stAddOnManager, Ampere or ACP) you have enabled."] = "Нажмите для отображения окна менеджера аддонов. Поддерживаются stAddOnManager, ACP, Ampere" +L["Click to toggle the Configuration/Option Window from the Bossmod (DXE, DBM or Bigwigs) you have enabled."] = "Нажмите для отображения окна настроек включенного босс мода. Поддерживаются DXE, DBM, Bigwigs." +L["Click to unlock moving ElvUI elements"] = "Нажмите для входа в режим перемещения элементов" +L["ElvUI Config"] = "Настройка ElvUI" +L["Move UI"] = "Разблокировать элементы" +L["Reload UI"] = "Перезагрузить интерфейс" +L["AddOns Manager"] = "Менеджер аддонов" +L["Boss Mod"] = "Босс мод" +L["Click to toggle iFilger's config UI"] = "Нажмите для отображения настроек iFilger" + +--Unitframes-- +L["Additional unit frames options"] = "Дополнительные опции рамок юнитов" +L["Options for customizing unit frames. Please don't change these setting when ElvUI's testing frames for bosses and arena teams are shown. That will make them invisible until retoggling."] = "Опции для дополнительной настройки рамок юнитов. Пожалуйста, не изменяйте эти настройки в то же время, кода включен тестовый режим рамок боссов и арены в ElvUI. Это сделает их невидимыми до повторного включения." +L["Player Frame Indicators"] = "Индикаторы игрока" +L["Combat Icon"] = "Иконка боя" +L["Show/Hide combat icon on player frame."] = "Отображать/скрывать иконку в бою." +L["Combat Position"] = "Позиция иконки боя" +L["Set the point to show combat icon"] = "Устанавливает позицию индикатора боя." +L["Classbar Energy"] = "Текст энергии полосы класса" +L["Show/hide the text with exact number of energy (Solar/Lunar or Demonic Fury) on your Classbar."] = "Показать/скрыть текст с точным значением энергии (Лунной/Солнечной или Демонической Ярости) на полосе класса." +L["Classbar Offset"] = "Отступ полосы класса" +L["This options will allow you to detach your classbar from player's frame and move it in other location."] = "Эти опции позволят вам открепить полосу класса от рамки игрока и передвинуть ее в другое место." +L["Power Text Position"] = "Позиция текста ресурса" +L["Position power text on this bar of chosen frame"] = "Позиционировать текст ресурса относительно выбранной полосы на каждой рамке" + +--Credits-- +L["ELVUI_SLE_CREDITS"] = "Мы бы хотели отметить следующих людей, которые помогли нас сделать этот аддон посредством тестирования, кода и прочего." +L["Submodules and Coding:"] = "Субмодули и кодинг:" +L["ELVUI_SLE_CODERS"] = [=[Elv +Tukz +Affinitii +Azilroka +Blazeflack +Boradan +Camealion +Omega1970 +Pvtschlag +Sinaris +Sortokk +Swordyy +]=] +L["Other Support:"] = "Прочая поддержка:" +L["ELVUI_SLE_MISC"] = [=[BuG - за то, что он француз :D +TheSamaKutra +Сообщество TukUI +]=] + +--Tutorials-- +L["To enable full values of health/power on unitframes in Shadow & Light add \":sl\" to the end of the health/power tag.\nExample: [health:current:sl]."] = "Чтобы включить отображение полного значения здоровья/ресурса при использовании Тени и Света, нужно добавить \":sl\" в конец нужного тэга.\nПример: [health:current:sl]." + +--Movers-- +L["Pet Battle AB"] = "Панель боев питомцев" + +--Changelog +L["Changelog"] = "Изменения" +L["CHANGE_LOG"] = [=[|cff1784d1v1.5|r +- Исправлены некоторые опечатки +- Панели инфо-текстов теперь могут быть прозрачными +- У фоновых фреймов больше нет опции смещения, теперь у них есть собственные фиксаторы +- Тип фона для фоновых фреймов теперь опция профиля и не требует перезагрузки интерфейса +- Фиксаторы, создаваемые S&L теперь группируются по собственным категориям аналогично оригинальному ElvUI (фиксаторы фоновых фреймов доступны ТОЛЬКО в этоих группах) +- Рейдовые метки теперь корректно обновляют настройки при смене профиля +- У основной панели рейдовых меток теперь можно скрыть фон +- Добавлен показ уровня на предметах в окне игрока +- Добавлен показ прочности на предметах в окне игрока +- Добавлен менеджер экипировки по специализации/зоне +- Добавлен модуль фермы для улучшения жизни огородников +- Добавлена стилизация иконок у миникарты +- Добавлено отображение текущих координат на миникарте +- Слежение за убитыми боссами в ЛФР теперь позволяет выбрать какие подземелья Вы хотите отслеживать. +- Информация на верхней панели инфо-текстов теперь может быть изменена пользователем +- Вы будете получать текстовое сообщение в чате, если в вашей группе/рейде есть человек с более новой версией +- Добавлены настройки Affinitii (Blood Legion) +- Настройки Дарта обновлены +- Добавлена функция оповещения о добыче ]=] \ No newline at end of file diff --git a/ElvUI_SLE/modules/farm/farm.lua b/ElvUI_SLE/modules/farm/farm.lua index ee41987..f186a35 100755 --- a/ElvUI_SLE/modules/farm/farm.lua +++ b/ElvUI_SLE/modules/farm/farm.lua @@ -1,580 +1,586 @@ -local E, L, V, P, G, _ = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB -local B = LibStub("LibBabble-SubZone-3.0") -local BL = B:GetLookupTable() -local F = E:NewModule('Farm', 'AceHook-3.0', 'AceEvent-3.0'); -local SLE = E:GetModule('SLE'); - -local SeedAnchor, ToolAnchor, PortalAnchor -local tsort = table.sort -local farmzones = { BL["Sunsong Ranch"], BL["The Halfhill Market"] } -local size -local Zcheck = false - -FseedButtons = {} -FtoolButtons = {} -FportalButtons = {} - -local seeds = { - --Seeds general - [79102] = { 1 }, -- Green Cabbage - [89328] = { 1 }, -- Jade Squash - [80590] = { 1 }, -- Juicycrunch Carrot - [80592] = { 1 }, -- Mogu Pumpkin - [80594] = { 1 }, -- Pink Turnip - [80593] = { 1 }, -- Red Blossom Leek - [80591] = { 1 }, -- Scallion - [89329] = { 1 }, -- Striped Melon - [80595] = { 1 }, -- White Turnip - [89326] = { 1 }, -- Witchberry - --Bags general - [80809] = { 2 }, -- Green Cabbage - [89848] = { 2 }, -- Jade Squash - [84782] = { 2 }, -- Juicycrunch Carrot - [85153] = { 2 }, -- Mogu Pumpkin - [85162] = { 2 }, -- Pink Turnip - [85158] = { 2 }, -- Red Blossom Leek - [84783] = { 2 }, -- Scallion - [89849] = { 2 }, -- Striped Melon - [85163] = { 2 }, -- White Turnip - [89847] = { 2 }, -- Witchberry - --Seeds special - [85216] = { 3 }, -- Enigma - [85217] = { 3 }, -- Magebulb - [85219] = { 3 }, -- Ominous - [89202] = { 3 }, -- Raptorleaf - [85215] = { 3 }, -- Snakeroot - [89233] = { 3 }, -- Songbell - [91806] = { 3 }, -- Unstable Portal - [89197] = { 3 }, -- Windshear Cactus - --Bags special - [95449] = { 4 }, -- Enigma - [95451] = { 4 }, -- Magebulb - [95457] = { 4 }, -- Raptorleaf - [95447] = { 4 }, -- Snakeroot - [95445] = { 4 }, -- Songbell - [95454] = { 4 }, -- Windshear Cactus - --Trees lol - [85267] = { 5 }, -- Autumn Blossom Sapling - [85268] = { 5 }, -- Spring Blossom Sapling - [85269] = { 5 }, -- Winter Blossom Sapling -} - -local addseeds = { - [95434] = { 80809 }, -- Green Cabbage - [95437] = { 89848 }, -- Jade Squash - [95436] = { 84782 }, -- Juicycrunch Carrot - [95438] = { 85153 }, -- Mogu Pumpkin - [95439] = { 85162 }, -- Pink Turnip - [95440] = { 85158 }, -- Red Blossom Leek - [95441] = { 84783 }, -- Scallion - [95442] = { 89849 }, -- Striped Melon - [95443] = { 85163 }, -- White Turnip - [95444] = { 89847 }, -- Witchberry - - [95450] = { 95449 }, -- Enigma - [95452] = { 95451 }, -- Magebulb - [95458] = { 95457 }, -- Raptorleaf - [95448] = { 95447 }, -- Snakeroot - [95446] = { 95445 }, -- Songbell - [95456] = { 95454 }, -- Windshear Cactus -} - -local tools = { - [79104] = { 1 }, -- Rusy Watering Can - [80513] = { 1 }, -- Vintage Bug Sprayer - [89880] = { 1 }, -- Dented Shovel - [89815] = { 1 }, -- Master Plow -} - -local portals = { - [91850] = { "Horde" }, -- Orgrimmar Portal Shard - [91861] = { "Horde" }, -- Thunder Bluff Portal Shard - [91862] = { "Horde" }, -- Undercity Portal Shard - [91863] = { "Horde" }, -- Silvermoon Portal Shard - - [91860] = { "Alliance" }, -- Stormwind Portal Shard - [91864] = { "Alliance" }, -- Ironforge Portal Shard - [91865] = { "Alliance" }, -- Darnassus Portal Shard - [91866] = { "Alliance" }, -- Exodar Portal Shard -} - -local quests = { ---Tillers counsil -[31945] = {80591, 84783}, -- Gina, Scallion -[31946] = {80590, 84782}, -- Mung-Mung, Juicycrunch Carrot -[31947] = {79102, 80809}, -- Farmer Fung, Green Cabbage -[31949] = {89326, 89847}, -- Nana, Witchberry -[30527] = {89329, 89849}, -- Haohan, Striped Melon ---Farmer Yoon -[31943] = {89326, 89847}, -- Witchberry -[31942] = {89329, 89849}, -- Striped Melon -[31941] = {89328, 89848}, -- Jade Squash -[31669] = {79102, 80809}, -- Green Cabbage -[31670] = {80590, 84782}, -- Juicycrunch Carrot -[31672] = {80592, 85153}, -- Mogu Pumpkin -[31673] = {80593, 85158}, -- Red Blossom Leek -[31674] = {80594, 85162}, -- Pink Turnip -[31675] = {80595, 85163}, -- White Turnip -[31671] = {80591, 84783}, -- Scallion ---Work Orders -[32645] = {89326, 89847}, -- Witchberry (Alliance Only) -[32653] = {89329, 89849}, -- Striped Melon ---[31941] = {89328, 89848}, -- Jade Squash -[32649] = {79102, 80809}, -- Green Cabbage ---[31670] = {80590, 84782}, -- Juicycrunch Carrot -[32658] = {80592, 85153}, -- Mogu Pumpkin -[32642] = {80593, 85158}, -- Red Blossom Leek (Horde Only) ---[31674] = {80594, 85162}, -- Pink Turnip -[32647] = {80595, 85163}, -- White Turnip ---[31671] = {80591, 84783}, -- Scallion -} - -local buttoncounts = {} - -function F:CanSeed() - local subzone = GetSubZoneText() - for _, zone in ipairs(farmzones) do - if (zone == subzone) then - return true - end - end - return false -end - -function F:OnFarm() - return GetSubZoneText() == farmzones[1] -end - -function F:InventoryUpdate(event) - if InCombatLockdown() then - F:RegisterEvent("PLAYER_REGEN_ENABLED", "InventoryUpdate") - return - else - F:UnregisterEvent("PLAYER_REGEN_ENABLED") - end - - local SeedChange = false - for i = 1, 5 do - for _, button in ipairs(FseedButtons[i]) do - button.items = GetItemCount(button.itemId, nil, true) - if i == 2 or i == 4 then - for id, v in pairs(addseeds) do - if button.itemId == addseeds[id][1] then - local nCount = GetItemCount(id, nil, true) - button.items = button.items + nCount - end - end - end - if not buttoncounts[button.itemId] then - buttoncounts[button.itemId] = button.items - end - if button.items ~= buttoncounts[button.itemId] then - SeedChange = true - buttoncounts[button.itemId] = button.items - end - button.text:SetText(button.items) - button.icon:SetDesaturated(button.items == 0) - button.icon:SetAlpha(button.items == 0 and .25 or 1) - end - end - - for _, button in ipairs(FtoolButtons) do - button.items = GetItemCount(button.itemId) - if not buttoncounts[button.itemId] then - buttoncounts[button.itemId] = button.items - end - if button.items ~= buttoncounts[button.itemId] then - SeedChange = true - buttoncounts[button.itemId] = button.items - end - button.icon:SetDesaturated(button.items == 0) - button.icon:SetAlpha(button.items == 0 and .25 or 1) - end - - for _, button in ipairs(FportalButtons) do - button.items = GetItemCount(button.itemId) - if not buttoncounts[button.itemId] then - buttoncounts[button.itemId] = button.items - end - if button.items ~= buttoncounts[button.itemId] then - SeedChange = true - buttoncounts[button.itemId] = button.items - end - button.text:SetText(button.items) - button.icon:SetDesaturated(button.items == 0) - button.icon:SetAlpha(button.items == 0 and .25 or 1) - end - - if event and event ~= "BAG_UPDATE_COOLDOWN" and SeedChange == true then - F:UpdateLayout() - end -end - -function F:UpdateBarLayout(bar, anchor, buttons) - local count = 0 - size = E.db.sle.farm.size - bar:ClearAllPoints() - bar:Point("LEFT", anchor, "LEFT", 0, 0) - - for i, button in ipairs(buttons) do - button:ClearAllPoints() - if not button.items then F:InventoryUpdate() end - if not E.db.sle.farm.active or button.items > 0 then - button:Point("TOPLEFT", bar, "TOPLEFT", (count * (size+(E.PixelMode and 2 or 1)))+(E.PixelMode and 1 or 0), -1) - button:Show() - button:Size(size, size) - count = count + 1 - else - button:Hide() - end - end - - bar:Width(1) - bar:Height(size+2) - - return count -end - -function F:QuestItems(itemID) - for i = 1, GetNumQuestLogEntries() do - for qid, sid in pairs(quests) do - if qid == select(9,GetQuestLogTitle(i)) then - if itemID == sid[1] or itemID == sid[2] then - return true - end - end - end - end - - return false -end - -function F:UpdateButtonCooldown(button) - if button.cooldown then - button.cooldown:SetCooldown(GetItemCooldown(button.itemId)) - end -end - -function F:UpdateCooldown() - if not F:CanSeed() then return end - - for i = 1, 5 do - for _, button in ipairs(FseedButtons[i]) do - F:UpdateButtonCooldown(button) - end - end - for _, button in ipairs(FtoolButtons) do - F:UpdateButtonCooldown(button) - end - for _, button in ipairs(FportalButtons) do - F:UpdateButtonCooldown(button) - end -end - -function F:UpdateSeedBarLayout(seedBar, anchor, buttons, category) - local count = 0 - local db = E.db.sle.farm - size = db.size - local seedor = db.seedor - local id - seedBar:ClearAllPoints() - if category == 1 then - if seedor == "TOP" or seedor == "BOTTOM" then - seedBar:Point(seedor.."LEFT", anchor, (E.PixelMode and 0 or -2), seedor == "TOP" and 0 or (E.PixelMode and 2 or 0)) - elseif seedor == "LEFT" or seedor == "RIGHT" then - seedBar:Point("TOP"..seedor, anchor, E.PixelMode and 2 or (seedor == "LEFT" and 0 or 2), (E.PixelMode and -2 or -2)) - end - - else - if _G[("FarmSeedBar%d"):format(category-1)]:IsShown() then - if seedor == "TOP" or seedor == "BOTTOM" then - seedBar:Point("TOPLEFT", _G[("FarmSeedBar%d"):format(category-1)], "TOPRIGHT", (E.PixelMode and 0 or -1), 0) - elseif seedor == "LEFT" or seedor == "RIGHT" then - seedBar:Point("TOPLEFT", _G[("FarmSeedBar%d"):format(category-1)], "BOTTOMLEFT", 0, (E.PixelMode and 0 or 1)) - end - else - F:UpdateSeedBarLayout(seedBar, anchor, buttons, category-1) - end - end - - - for i, button in ipairs(buttons) do - id = button:GetName():gsub("FarmButton", "") - id = tonumber(id) - button:ClearAllPoints() - if not E.db.sle.farm.active or button.items > 0 then - if seedor == "TOP" or seedor == "BOTTOM" then - local mult = seedor == "TOP" and -1 or 1 - button:Point(seedor.."LEFT", seedBar, E.PixelMode and 1 or 2, mult*(count * (size+(E.PixelMode and 2 or 1)))-(E.PixelMode and 1 or 0)) - elseif seedor == "LEFT" or seedor == "RIGHT" then - local mult = seedor == "RIGHT" and -1 or 1 - button:Point("TOPLEFT", seedBar, "TOPLEFT", mult*(count * (size+(E.PixelMode and 2 or 1)))-(E.PixelMode and 1 or 0), E.PixelMode and 1 or 2) - end - button:Show() - button:Size(size, size) - count = count + 1 - else - button:Hide() - end - if E.db.sle.farm.quest then - if F:QuestItems(id) then - ActionButton_ShowOverlayGlow(button) - else - ActionButton_HideOverlayGlow(button) - end - else - ActionButton_HideOverlayGlow(button) - end - end - - seedBar:Width(size+2) - seedBar:Height(size+2) - - return count -end - -function F:UpdateBar(bar, layoutfunc, zonecheck, anchor, buttons, category) - bar:Show() - - local count = layoutfunc(self, bar, anchor, buttons, category) - if (E.private.sle.farm.enable and count > 0 and zonecheck(self) and not InCombatLockdown()) then - bar:Show() - else - bar:Hide() - end -end - -function F:BAG_UPDATE_COOLDOWN() - F:InventoryUpdate() - F:UpdateCooldown() -end - -function F:Zone(event) - if F:CanSeed() then - F:RegisterEvent("BAG_UPDATE", "InventoryUpdate") - F:RegisterEvent("BAG_UPDATE_COOLDOWN") - F:RegisterEvent("UNIT_QUEST_LOG_CHANGED", "UpdateLayout") - - F:InventoryUpdate(event) - F:UpdateLayout() - Zcheck = true - else - F:UnregisterEvent("BAG_UPDATE") - F:UnregisterEvent("BAG_UPDATE_COOLDOWN") - F:UnregisterEvent("UNIT_QUEST_LOG_CHANGED") - if Zcheck then - F:UpdateLayout() - Zcheck = false - end - end -end - -function F:UpdateLayout(event, unit) - if not SeedAnchor then return end - --For updating borders after quest was complited. for some reason events fires before quest disappeares from log - if event == "UNIT_QUEST_LOG_CHANGED" then - if unit == "player" then - E:Delay(1, F.UpdateLayout) - else - return - end - end - F:UpdateBar(_G["FarmToolBar"], F.UpdateBarLayout, F.OnFarm, ToolAnchor, FtoolButtons) - F:UpdateBar(_G["FarmPortalBar"], F.UpdateBarLayout, F.OnFarm, PortalAnchor, FportalButtons) - for i=1, 5 do - F:UpdateBar(_G[("FarmSeedBar%d"):format(i)], F.UpdateSeedBarLayout, F.CanSeed, SeedAnchor, FseedButtons[i], i) - end - F:ResizeFrames() -end - -local function onClick(self, mousebutton) - if mousebutton == "LeftButton" then - self:SetAttribute("type", self.buttonType) - self:SetAttribute(self.buttonType, self.sortname) - if self.id and self.id ~= 2 and self.id ~= 4 and E.db.sle.farm.autotarget and UnitName("target") ~= L["Tilled Soil"] then - F:AutoTarget(self) - end - if self.cooldown then - self.cooldown:SetCooldown(GetItemCooldown(self.itemId)) - end - elseif mousebutton == "RightButton" and self.allowDrop then - self:SetAttribute("type", "click") - local container, slot = SLE:BagSearch(self.itemId) - if container and slot then - PickupContainerItem(container, slot) - DeleteCursorItem() - F:InventoryUpdate() - end - end -end - -local function onEnter(self) - GameTooltip:SetOwner(self, 'ANCHOR_TOPLEFT', 2, 4) - GameTooltip:ClearLines() - GameTooltip:AddDoubleLine(self.sortname) - if self.allowDrop then - GameTooltip:AddLine(L['Right-click to drop the item.']) - end - GameTooltip:Show() -end - -local function onLeave() - GameTooltip:Hide() -end - -function F:AutoTarget(button) - local container, slot = SLE:BagSearch(button.itemId) - if container and slot then - button:SetAttribute("type", "macro") - button:SetAttribute("macrotext", format("/targetexact %s \n/use %s %s", L["Tilled Soil"], container, slot)) - end -end - -function F:CreateFarmButton(index, owner, buttonType, name, texture, allowDrop, id) - size = E.db.sle.farm.size - local button = CreateFrame("Button", ("FarmButton%d"):format(index), owner, "SecureActionButtonTemplate") - button:Size(size, size) - button:SetTemplate('Default', true) - - button.sortname = name - button.itemId = index - button.allowDrop = allowDrop - button.buttonType = buttonType - button.id = id - - button.icon = button:CreateTexture(nil, "OVERLAY") - button.icon:SetTexture(texture) - button.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9) - button.icon:SetInside() - - button.text = button:CreateFontString(nil, "OVERLAY") - button.text:SetFont(E.media.normFont, 12, "OUTLINE") - button.text:SetPoint("BOTTOMRIGHT", button, 1, 2) - - if select(3, GetItemCooldown(button.itemId)) == 1 then - button.cooldown = CreateFrame("Cooldown", ("FarmButton%dCooldown"):format(index), button) - button.cooldown:SetAllPoints(button) - end - - button:SetScript("OnEnter", onEnter) - button:SetScript("OnLeave", onLeave) - button:SetScript("OnMouseDown", onClick) - - return button -end - -function F:ResizeFrames() - local seedor = E.db.sle.farm.seedor - if seedor == "TOP" or seedor == "BOTTOM" then - SeedAnchor:Size((size+(E.PixelMode and 2 or 1))*5-(E.PixelMode and 0 or 1), (size+(E.PixelMode and 2 or 1))*10-(E.PixelMode and 0 or 1)) - elseif seedor == "LEFT" or seedor == "RIGHT" then - SeedAnchor:Size((size+(E.PixelMode and 2 or 1))*10-(E.PixelMode and 0 or 1), (size+(E.PixelMode and 2 or 1))*5-(E.PixelMode and 0 or 1)) - end - ToolAnchor:Size((size+(E.PixelMode and 2 or 1))*5-(E.PixelMode and 0 or 1), size+(E.PixelMode and 2 or 1)-(E.PixelMode and 0 or 1)) - PortalAnchor:Size((size+(E.PixelMode and 2 or 1))*5-(E.PixelMode and 0 or 1), size+(E.PixelMode and 2 or 1)-(E.PixelMode and 0 or 1)) -end - -function F:FramesPosition() - SeedAnchor:Point("LEFT", E.UIParent, "LEFT", 24, -160) - ToolAnchor:Point("BOTTOMLEFT", SeedAnchor, "TOPLEFT", 0, E.PixelMode and 1 or 5) - PortalAnchor:Point("BOTTOMLEFT", ToolAnchor, "TOPLEFT", 0, E.PixelMode and 1 or 5) -end - -function F:CreateFrames() - size = E.db.sle.farm.size - SeedAnchor = CreateFrame("Frame", "SeedAnchor", E.UIParent) - SeedAnchor:SetFrameStrata("BACKGROUND") - - ToolAnchor = CreateFrame("Frame", "ToolAnchor", E.UIParent) - ToolAnchor:SetFrameStrata("BACKGROUND") - - PortalAnchor = CreateFrame("Frame", "PortalAnchor", E.UIParent) - PortalAnchor:SetFrameStrata("BACKGROUND") - - F:ResizeFrames() - F:FramesPosition() - - E:CreateMover(SeedAnchor, "FarmSeedMover", L["Farm Seed Bars"], nil, nil, nil, "ALL,S&L,S&L MISC") - E:CreateMover(ToolAnchor, "FarmToolMover", L["Farm Tool Bar"], nil, nil, nil, "ALL,S&L,S&L MISC") - E:CreateMover(PortalAnchor, "FarmPortalMover", L["Farm Portal Bar"], nil, nil, nil, "ALL,S&L,S&L MISC") - - for id, v in pairs(seeds) do - seeds[id] = { v[1], GetItemInfo(id) } - end - - for id, v in pairs(tools) do - tools[id] = { GetItemInfo(id) } - end - - for id, v in pairs(portals) do - portals[id] = { v[1], GetItemInfo(id) } - end - - for i = 1, 5 do - local seedBar = CreateFrame("Frame", ("FarmSeedBar%d"):format(i), UIParent) - seedBar:SetFrameStrata("BACKGROUND") - - seedBar:SetPoint("CENTER", SeedAnchor, "CENTER", 0, 0) - - FseedButtons[i] = FseedButtons[i] or {} - - for id, v in pairs(seeds) do - if v[1] == i then - tinsert(FseedButtons[i], F:CreateFarmButton(id, seedBar, "item", v[2], v[11], E.private.sle.farm.seedtrash, i)) - end - tsort(FseedButtons[i], function(a, b) return a.sortname < b.sortname end) - end - end - - local toolBar = CreateFrame("Frame", "FarmToolBar", UIParent) - toolBar:SetFrameStrata("BACKGROUND") - toolBar:SetPoint("CENTER", ToolAnchor, "CENTER", 0, 0) - for id, v in pairs(tools) do - tinsert(FtoolButtons, F:CreateFarmButton(id, toolBar, "item", v[1], v[10], true, nil)) - end - - local portalBar = CreateFrame("Frame", "FarmPortalBar", UIParent) - portalBar:SetFrameStrata("BACKGROUND") - portalBar:SetPoint("CENTER", PortalAnchor, "CENTER", 0, 0) - local playerFaction = UnitFactionGroup('player') - for id, v in pairs(portals) do - if v[1] == playerFaction then - tinsert(FportalButtons, F:CreateFarmButton(id, portalBar, "item", v[2], v[11], false, nil)) - end - end - - F:RegisterEvent("ZONE_CHANGED", "Zone") - F:RegisterEvent("ZONE_CHANGED_NEW_AREA", "Zone") - F:RegisterEvent("ZONE_CHANGED_INDOORS", "Zone") - - E:Delay(10, F.Zone) -end - -function F:StartFarmBarLoader() - F:UnregisterEvent("PLAYER_ENTERING_WORLD") - - local noItem = false - -- preload item links to prevent errors - for id, _ in pairs(seeds) do - if select(2, GetItemInfo(id)) == nil then noItem = true end - end - for id, _ in pairs(tools) do - if select(2, GetItemInfo(id)) == nil then noItem = true end - end - for id, _ in pairs(portals) do - if select(2, GetItemInfo(id)) == nil then noItem = true end - end - if noItem then - E:Delay(5, F.StartFarmBarLoader) - else - F.CreateFrames() - end -end - -function F:Initialize() - if not E.private.sle.farm.enable then return end - - self:RegisterEvent("PLAYER_ENTERING_WORLD", "StartFarmBarLoader") -end - +local E, L, V, P, G, _ = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB +local B = LibStub("LibBabble-SubZone-3.0") +local BL = B:GetLookupTable() +local F = E:NewModule('Farm', 'AceHook-3.0', 'AceEvent-3.0'); +local SLE = E:GetModule('SLE'); + +local SeedAnchor, ToolAnchor, PortalAnchor +local tsort = table.sort +local farmzones = { BL["Sunsong Ranch"], BL["The Halfhill Market"] } +local size +local Zcheck = false + +FseedButtons = {} +FtoolButtons = {} +FportalButtons = {} + +local seeds = { + --Seeds general + [79102] = { 1 }, -- Green Cabbage + [89328] = { 1 }, -- Jade Squash + [80590] = { 1 }, -- Juicycrunch Carrot + [80592] = { 1 }, -- Mogu Pumpkin + [80594] = { 1 }, -- Pink Turnip + [80593] = { 1 }, -- Red Blossom Leek + [80591] = { 1 }, -- Scallion + [89329] = { 1 }, -- Striped Melon + [80595] = { 1 }, -- White Turnip + [89326] = { 1 }, -- Witchberry + --Bags general + [80809] = { 2 }, -- Green Cabbage + [89848] = { 2 }, -- Jade Squash + [84782] = { 2 }, -- Juicycrunch Carrot + [85153] = { 2 }, -- Mogu Pumpkin + [85162] = { 2 }, -- Pink Turnip + [85158] = { 2 }, -- Red Blossom Leek + [84783] = { 2 }, -- Scallion + [89849] = { 2 }, -- Striped Melon + [85163] = { 2 }, -- White Turnip + [89847] = { 2 }, -- Witchberry + --Seeds special + [85216] = { 3 }, -- Enigma + [85217] = { 3 }, -- Magebulb + [85219] = { 3 }, -- Ominous + [89202] = { 3 }, -- Raptorleaf + [85215] = { 3 }, -- Snakeroot + [89233] = { 3 }, -- Songbell + [91806] = { 3 }, -- Unstable Portal + [89197] = { 3 }, -- Windshear Cactus + --Bags special + [95449] = { 4 }, -- Enigma + [95451] = { 4 }, -- Magebulb + [95457] = { 4 }, -- Raptorleaf + [95447] = { 4 }, -- Snakeroot + [95445] = { 4 }, -- Songbell + [95454] = { 4 }, -- Windshear Cactus + --Trees lol + [85267] = { 5 }, -- Autumn Blossom Sapling + [85268] = { 5 }, -- Spring Blossom Sapling + [85269] = { 5 }, -- Winter Blossom Sapling +} + +local addseeds = { + [95434] = { 80809 }, -- Green Cabbage + [95437] = { 89848 }, -- Jade Squash + [95436] = { 84782 }, -- Juicycrunch Carrot + [95438] = { 85153 }, -- Mogu Pumpkin + [95439] = { 85162 }, -- Pink Turnip + [95440] = { 85158 }, -- Red Blossom Leek + [95441] = { 84783 }, -- Scallion + [95442] = { 89849 }, -- Striped Melon + [95443] = { 85163 }, -- White Turnip + [95444] = { 89847 }, -- Witchberry + + [95450] = { 95449 }, -- Enigma + [95452] = { 95451 }, -- Magebulb + [95458] = { 95457 }, -- Raptorleaf + [95448] = { 95447 }, -- Snakeroot + [95446] = { 95445 }, -- Songbell + [95456] = { 95454 }, -- Windshear Cactus +} + +local tools = { + [79104] = { 1 }, -- Rusy Watering Can + [80513] = { 1 }, -- Vintage Bug Sprayer + [89880] = { 1 }, -- Dented Shovel + [89815] = { 1 }, -- Master Plow +} + +local portals = { + [91850] = { "Horde" }, -- Orgrimmar Portal Shard + [91861] = { "Horde" }, -- Thunder Bluff Portal Shard + [91862] = { "Horde" }, -- Undercity Portal Shard + [91863] = { "Horde" }, -- Silvermoon Portal Shard + + [91860] = { "Alliance" }, -- Stormwind Portal Shard + [91864] = { "Alliance" }, -- Ironforge Portal Shard + [91865] = { "Alliance" }, -- Darnassus Portal Shard + [91866] = { "Alliance" }, -- Exodar Portal Shard +} + +local quests = { +--Tillers counsil +[31945] = {80591, 84783}, -- Gina, Scallion +[31946] = {80590, 84782}, -- Mung-Mung, Juicycrunch Carrot +[31947] = {79102, 80809}, -- Farmer Fung, Green Cabbage +[31949] = {89326, 89847}, -- Nana, Witchberry +[30527] = {89329, 89849}, -- Haohan, Striped Melon +--Farmer Yoon +[31943] = {89326, 89847}, -- Witchberry +[31942] = {89329, 89849}, -- Striped Melon +[31941] = {89328, 89848}, -- Jade Squash +[31669] = {79102, 80809}, -- Green Cabbage +[31670] = {80590, 84782}, -- Juicycrunch Carrot +[31672] = {80592, 85153}, -- Mogu Pumpkin +[31673] = {80593, 85158}, -- Red Blossom Leek +[31674] = {80594, 85162}, -- Pink Turnip +[31675] = {80595, 85163}, -- White Turnip +[31671] = {80591, 84783}, -- Scallion +--Work Orders +[32645] = {89326, 89847}, -- Witchberry (Alliance Only) +[32653] = {89329, 89849}, -- Striped Melon +--[31941] = {89328, 89848}, -- Jade Squash +[32649] = {79102, 80809}, -- Green Cabbage +--[31670] = {80590, 84782}, -- Juicycrunch Carrot +[32658] = {80592, 85153}, -- Mogu Pumpkin +[32642] = {80593, 85158}, -- Red Blossom Leek (Horde Only) +--[31674] = {80594, 85162}, -- Pink Turnip +[32647] = {80595, 85163}, -- White Turnip +--[31671] = {80591, 84783}, -- Scallion +} + +local buttoncounts = {} + +function F:CanSeed() + local subzone = GetSubZoneText() + for _, zone in ipairs(farmzones) do + if (zone == subzone) then + return true + end + end + return false +end + +function F:OnFarm() + return GetSubZoneText() == farmzones[1] +end + +function F:InventoryUpdate(event) + if InCombatLockdown() then + F:RegisterEvent("PLAYER_REGEN_ENABLED", "InventoryUpdate") + return + else + F:UnregisterEvent("PLAYER_REGEN_ENABLED") + end + + local SeedChange = false + for i = 1, 5 do + for _, button in ipairs(FseedButtons[i]) do + button.items = GetItemCount(button.itemId, nil, true) + if i == 2 or i == 4 then + for id, v in pairs(addseeds) do + if button.itemId == addseeds[id][1] then + local nCount = GetItemCount(id, nil, true) + button.items = button.items + nCount + end + end + end + if not buttoncounts[button.itemId] then + buttoncounts[button.itemId] = button.items + end + if button.items ~= buttoncounts[button.itemId] then + SeedChange = true + buttoncounts[button.itemId] = button.items + end + button.text:SetText(button.items) + button.icon:SetDesaturated(button.items == 0) + button.icon:SetAlpha(button.items == 0 and .25 or 1) + end + end + + for _, button in ipairs(FtoolButtons) do + button.items = GetItemCount(button.itemId) + if not buttoncounts[button.itemId] then + buttoncounts[button.itemId] = button.items + end + if button.items ~= buttoncounts[button.itemId] then + SeedChange = true + buttoncounts[button.itemId] = button.items + end + button.icon:SetDesaturated(button.items == 0) + button.icon:SetAlpha(button.items == 0 and .25 or 1) + end + + for _, button in ipairs(FportalButtons) do + button.items = GetItemCount(button.itemId) + if not buttoncounts[button.itemId] then + buttoncounts[button.itemId] = button.items + end + if button.items ~= buttoncounts[button.itemId] then + SeedChange = true + buttoncounts[button.itemId] = button.items + end + button.text:SetText(button.items) + button.icon:SetDesaturated(button.items == 0) + button.icon:SetAlpha(button.items == 0 and .25 or 1) + end + + if event and event ~= "BAG_UPDATE_COOLDOWN" and SeedChange == true then + F:UpdateLayout() + end +end + +function F:UpdateBarLayout(bar, anchor, buttons) + local count = 0 + size = E.db.sle.farm.size + bar:ClearAllPoints() + bar:Point("LEFT", anchor, "LEFT", 0, 0) + + for i, button in ipairs(buttons) do + button:ClearAllPoints() + if not button.items then F:InventoryUpdate() end + if not E.db.sle.farm.active or button.items > 0 then + button:Point("TOPLEFT", bar, "TOPLEFT", (count * (size+(E.PixelMode and 2 or 1)))+(E.PixelMode and 1 or 0), -1) + button:Show() + button:Size(size, size) + count = count + 1 + else + button:Hide() + end + end + + bar:Width(1) + bar:Height(size+2) + + return count +end + +function F:QuestItems(itemID) + for i = 1, GetNumQuestLogEntries() do + for qid, sid in pairs(quests) do + if qid == select(9,GetQuestLogTitle(i)) then + if itemID == sid[1] or itemID == sid[2] then + return true + end + end + end + end + + return false +end + +function F:UpdateButtonCooldown(button) + if button.cooldown then + button.cooldown:SetCooldown(GetItemCooldown(button.itemId)) + end +end + +function F:UpdateCooldown() + if not F:CanSeed() then return end + + for i = 1, 5 do + for _, button in ipairs(FseedButtons[i]) do + F:UpdateButtonCooldown(button) + end + end + for _, button in ipairs(FtoolButtons) do + F:UpdateButtonCooldown(button) + end + for _, button in ipairs(FportalButtons) do + F:UpdateButtonCooldown(button) + end +end + +function F:UpdateSeedBarLayout(seedBar, anchor, buttons, category) + local count = 0 + local db = E.db.sle.farm + size = db.size + local seedor = db.seedor + local id + seedBar:ClearAllPoints() + if category == 1 then + if seedor == "TOP" or seedor == "BOTTOM" then + seedBar:Point(seedor.."LEFT", anchor, (E.PixelMode and 0 or -2), seedor == "TOP" and 0 or (E.PixelMode and 2 or 0)) + elseif seedor == "LEFT" or seedor == "RIGHT" then + seedBar:Point("TOP"..seedor, anchor, E.PixelMode and 2 or (seedor == "LEFT" and 0 or 2), (E.PixelMode and -2 or -2)) + end + + else + if _G[("FarmSeedBar%d"):format(category-1)]:IsShown() then + if seedor == "TOP" or seedor == "BOTTOM" then + seedBar:Point("TOPLEFT", _G[("FarmSeedBar%d"):format(category-1)], "TOPRIGHT", (E.PixelMode and 0 or -1), 0) + elseif seedor == "LEFT" or seedor == "RIGHT" then + seedBar:Point("TOPLEFT", _G[("FarmSeedBar%d"):format(category-1)], "BOTTOMLEFT", 0, (E.PixelMode and 0 or 1)) + end + else + F:UpdateSeedBarLayout(seedBar, anchor, buttons, category-1) + end + end + + + for i, button in ipairs(buttons) do + id = button:GetName():gsub("FarmButton", "") + id = tonumber(id) + button:ClearAllPoints() + if not E.db.sle.farm.active or button.items > 0 then + if seedor == "TOP" or seedor == "BOTTOM" then + local mult = seedor == "TOP" and -1 or 1 + button:Point(seedor.."LEFT", seedBar, E.PixelMode and 1 or 2, mult*(count * (size+(E.PixelMode and 2 or 1)))-(E.PixelMode and 1 or 0)) + elseif seedor == "LEFT" or seedor == "RIGHT" then + local mult = seedor == "RIGHT" and -1 or 1 + button:Point("TOPLEFT", seedBar, "TOPLEFT", mult*(count * (size+(E.PixelMode and 2 or 1)))-(E.PixelMode and 1 or 0), E.PixelMode and 1 or 2) + end + button:Show() + button:Size(size, size) + count = count + 1 + else + button:Hide() + end + if E.db.sle.farm.quest then + if F:QuestItems(id) then + ActionButton_ShowOverlayGlow(button) + else + ActionButton_HideOverlayGlow(button) + end + else + ActionButton_HideOverlayGlow(button) + end + end + + seedBar:Width(size+2) + seedBar:Height(size+2) + + return count +end + +function F:UpdateBar(bar, layoutfunc, zonecheck, anchor, buttons, category) + bar:Show() + + local count = layoutfunc(self, bar, anchor, buttons, category) + if (E.private.sle.farm.enable and count > 0 and zonecheck(self) and not InCombatLockdown()) then + bar:Show() + else + bar:Hide() + end +end + +function F:BAG_UPDATE_COOLDOWN() + F:InventoryUpdate() + F:UpdateCooldown() +end + +function F:Zone(event) + if F:CanSeed() then + F:RegisterEvent("BAG_UPDATE", "InventoryUpdate") + F:RegisterEvent("BAG_UPDATE_COOLDOWN") + F:RegisterEvent("UNIT_QUEST_LOG_CHANGED", "UpdateLayout") + + F:InventoryUpdate(event) + F:UpdateLayout() + Zcheck = true + else + F:UnregisterEvent("BAG_UPDATE") + F:UnregisterEvent("BAG_UPDATE_COOLDOWN") + F:UnregisterEvent("UNIT_QUEST_LOG_CHANGED") + if Zcheck then + F:UpdateLayout() + Zcheck = false + end + end +end + +function F:UpdateLayout(event, unit) + if not SeedAnchor then return end + --For updating borders after quest was complited. for some reason events fires before quest disappeares from log + if event == "UNIT_QUEST_LOG_CHANGED" then + if unit == "player" then + E:Delay(1, F.UpdateLayout) + else + return + end + end + F:UpdateBar(_G["FarmToolBar"], F.UpdateBarLayout, F.OnFarm, ToolAnchor, FtoolButtons) + F:UpdateBar(_G["FarmPortalBar"], F.UpdateBarLayout, F.OnFarm, PortalAnchor, FportalButtons) + for i=1, 5 do + F:UpdateBar(_G[("FarmSeedBar%d"):format(i)], F.UpdateSeedBarLayout, F.CanSeed, SeedAnchor, FseedButtons[i], i) + end + F:ResizeFrames() +end + +local function onClick(self, mousebutton) + if mousebutton == "LeftButton" then + if InCombatLockdown() and not self.macro then + SLE:Print(L["We are sorry, but you can't do this now. Try again after the end of this combat."]) + return + end + self:SetAttribute("type", self.buttonType) + self:SetAttribute(self.buttonType, self.sortname) + if self.id and self.id ~= 2 and self.id ~= 4 and E.db.sle.farm.autotarget and UnitName("target") ~= L["Tilled Soil"] then + F:AutoTarget(self) + end + if self.cooldown then + self.cooldown:SetCooldown(GetItemCooldown(self.itemId)) + end + if not self.macro then self.macro = true end + elseif mousebutton == "RightButton" and self.allowDrop then + self:SetAttribute("type", "click") + local container, slot = SLE:BagSearch(self.itemId) + if container and slot then + PickupContainerItem(container, slot) + DeleteCursorItem() + F:InventoryUpdate() + end + end +end + +local function onEnter(self) + GameTooltip:SetOwner(self, 'ANCHOR_TOPLEFT', 2, 4) + GameTooltip:ClearLines() + GameTooltip:AddDoubleLine(self.sortname) + if self.allowDrop then + GameTooltip:AddLine(L['Right-click to drop the item.']) + end + GameTooltip:Show() +end + +local function onLeave() + GameTooltip:Hide() +end + +function F:AutoTarget(button) + local container, slot = SLE:BagSearch(button.itemId) + if container and slot then + button:SetAttribute("type", "macro") + button:SetAttribute("macrotext", format("/targetexact %s \n/use %s %s", L["Tilled Soil"], container, slot)) + end +end + +function F:CreateFarmButton(index, owner, buttonType, name, texture, allowDrop, id) + size = E.db.sle.farm.size + local button = CreateFrame("Button", ("FarmButton%d"):format(index), owner, "SecureActionButtonTemplate") + button:Size(size, size) + button:SetTemplate('Default', true) + + button.sortname = name + button.itemId = index + button.allowDrop = allowDrop + button.buttonType = buttonType + button.id = id + button.macro = false + + button.icon = button:CreateTexture(nil, "OVERLAY") + button.icon:SetTexture(texture) + button.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9) + button.icon:SetInside() + + button.text = button:CreateFontString(nil, "OVERLAY") + button.text:SetFont(E.media.normFont, 12, "OUTLINE") + button.text:SetPoint("BOTTOMRIGHT", button, 1, 2) + + if select(3, GetItemCooldown(button.itemId)) == 1 then + button.cooldown = CreateFrame("Cooldown", ("FarmButton%dCooldown"):format(index), button) + button.cooldown:SetAllPoints(button) + end + + button:SetScript("OnEnter", onEnter) + button:SetScript("OnLeave", onLeave) + button:SetScript("OnMouseDown", onClick) + + return button +end + +function F:ResizeFrames() + local seedor = E.db.sle.farm.seedor + if seedor == "TOP" or seedor == "BOTTOM" then + SeedAnchor:Size((size+(E.PixelMode and 2 or 1))*5-(E.PixelMode and 0 or 1), (size+(E.PixelMode and 2 or 1))*10-(E.PixelMode and 0 or 1)) + elseif seedor == "LEFT" or seedor == "RIGHT" then + SeedAnchor:Size((size+(E.PixelMode and 2 or 1))*10-(E.PixelMode and 0 or 1), (size+(E.PixelMode and 2 or 1))*5-(E.PixelMode and 0 or 1)) + end + ToolAnchor:Size((size+(E.PixelMode and 2 or 1))*5-(E.PixelMode and 0 or 1), size+(E.PixelMode and 2 or 1)-(E.PixelMode and 0 or 1)) + PortalAnchor:Size((size+(E.PixelMode and 2 or 1))*5-(E.PixelMode and 0 or 1), size+(E.PixelMode and 2 or 1)-(E.PixelMode and 0 or 1)) +end + +function F:FramesPosition() + SeedAnchor:Point("LEFT", E.UIParent, "LEFT", 24, -160) + ToolAnchor:Point("BOTTOMLEFT", SeedAnchor, "TOPLEFT", 0, E.PixelMode and 1 or 5) + PortalAnchor:Point("BOTTOMLEFT", ToolAnchor, "TOPLEFT", 0, E.PixelMode and 1 or 5) +end + +function F:CreateFrames() + size = E.db.sle.farm.size + SeedAnchor = CreateFrame("Frame", "SeedAnchor", E.UIParent) + SeedAnchor:SetFrameStrata("BACKGROUND") + + ToolAnchor = CreateFrame("Frame", "ToolAnchor", E.UIParent) + ToolAnchor:SetFrameStrata("BACKGROUND") + + PortalAnchor = CreateFrame("Frame", "PortalAnchor", E.UIParent) + PortalAnchor:SetFrameStrata("BACKGROUND") + + F:ResizeFrames() + F:FramesPosition() + + E:CreateMover(SeedAnchor, "FarmSeedMover", L["Farm Seed Bars"], nil, nil, nil, "ALL,S&L,S&L MISC") + E:CreateMover(ToolAnchor, "FarmToolMover", L["Farm Tool Bar"], nil, nil, nil, "ALL,S&L,S&L MISC") + E:CreateMover(PortalAnchor, "FarmPortalMover", L["Farm Portal Bar"], nil, nil, nil, "ALL,S&L,S&L MISC") + + for id, v in pairs(seeds) do + seeds[id] = { v[1], GetItemInfo(id) } + end + + for id, v in pairs(tools) do + tools[id] = { GetItemInfo(id) } + end + + for id, v in pairs(portals) do + portals[id] = { v[1], GetItemInfo(id) } + end + + for i = 1, 5 do + local seedBar = CreateFrame("Frame", ("FarmSeedBar%d"):format(i), UIParent) + seedBar:SetFrameStrata("BACKGROUND") + + seedBar:SetPoint("CENTER", SeedAnchor, "CENTER", 0, 0) + + FseedButtons[i] = FseedButtons[i] or {} + + for id, v in pairs(seeds) do + if v[1] == i then + tinsert(FseedButtons[i], F:CreateFarmButton(id, seedBar, "item", v[2], v[11], E.private.sle.farm.seedtrash, i)) + end + tsort(FseedButtons[i], function(a, b) return a.sortname < b.sortname end) + end + end + + local toolBar = CreateFrame("Frame", "FarmToolBar", UIParent) + toolBar:SetFrameStrata("BACKGROUND") + toolBar:SetPoint("CENTER", ToolAnchor, "CENTER", 0, 0) + for id, v in pairs(tools) do + tinsert(FtoolButtons, F:CreateFarmButton(id, toolBar, "item", v[1], v[10], true, nil)) + end + + local portalBar = CreateFrame("Frame", "FarmPortalBar", UIParent) + portalBar:SetFrameStrata("BACKGROUND") + portalBar:SetPoint("CENTER", PortalAnchor, "CENTER", 0, 0) + local playerFaction = UnitFactionGroup('player') + for id, v in pairs(portals) do + if v[1] == playerFaction then + tinsert(FportalButtons, F:CreateFarmButton(id, portalBar, "item", v[2], v[11], false, nil)) + end + end + + F:RegisterEvent("ZONE_CHANGED", "Zone") + F:RegisterEvent("ZONE_CHANGED_NEW_AREA", "Zone") + F:RegisterEvent("ZONE_CHANGED_INDOORS", "Zone") + + E:Delay(10, F.Zone) +end + +function F:StartFarmBarLoader() + F:UnregisterEvent("PLAYER_ENTERING_WORLD") + + local noItem = false + -- preload item links to prevent errors + for id, _ in pairs(seeds) do + if select(2, GetItemInfo(id)) == nil then noItem = true end + end + for id, _ in pairs(tools) do + if select(2, GetItemInfo(id)) == nil then noItem = true end + end + for id, _ in pairs(portals) do + if select(2, GetItemInfo(id)) == nil then noItem = true end + end + if noItem then + E:Delay(5, F.StartFarmBarLoader) + else + F.CreateFrames() + end +end + +function F:Initialize() + if not E.private.sle.farm.enable then return end + + self:RegisterEvent("PLAYER_ENTERING_WORLD", "StartFarmBarLoader") +end + E:RegisterModule(F:GetName()) \ No newline at end of file -- 1.7.9.5