-- ============================================================================ -- Character info used by glue tooltips and class/race descriptions. -- ============================================================================ local Races_Informations = { [1] = { Name = "Человек", Description = "Люди - молодая и потому очень универсальная раса. Они одинаково хорошо владеют боевым искусством, ремеслами и магией. Мужество и оптимизм помогли им возвести одни из величайших королевств мира. В эту беспокойную эпоху, после поколений войн, люди стремятся вернуть былую славу и построить новое светлое будущее.", Spell_1 = {name = "Каждый за себя", icon = "spell_shadow_charm", description = "Снимает все эффекты, затрудняющие передвижение, а также все эффекты потери контроля над персонажем."}, Spell_2 = {name = "Специализация на мечах", icon = "ability_meleedamage", description = "Мастерство владения мечами и двуручными мечами повышается на 3."}, Spell_3 = {name = "Специализация на дробящем оружии", icon = "inv_hammer_05", description = "Мастерство владения булавами и двуручными булавами повышается на 3."}, Spell_4 = {name = "Человеческий дух", icon = "inv_enchant_shardbrilliantsmall", description = "Показатель духа увеличивается на 3%."}, Spell_5 = {name = "Внимательность", icon = "spell_nature_sleep", description = "Повышает вашу способность обнаруживать скрытность."}, Spell_6 = {name = "Дипломатия", icon = "inv_misc_note_02", description = "Получаемая репутация увеличивается на 10%."}, }, [2] = { Name = "Дворф", Description = "Когда-то дворфов интересовали лишь богатства, скрытые в недрах земли. Именно так они нашли следы божественной расы, которая, возможно, и даровала им жизнь. Потрясенные открытием, дворфы посвятили себя поиску утраченных артефактов и древних знаний. Сегодня дворфские археологи встречаются по всему миру.", Spell_1 = {name = "Специализация на дробящем оружии", icon = "inv_hammer_05", description = "Мастерство владения булавами и двуручными булавами повышается на 5."}, Spell_2 = {name = "Каменная форма", icon = "spell_shadow_unholystrength", description = "Снимает все эффекты яда, болезни и кровотечения, а также увеличивает броню на 10% на 0,1 сек."}, Spell_3 = {name = "Специализация на огнестрельном оружии", icon = "inv_musket_03", description = "Вероятность критического удара из огнестрельного оружия повышается на 1%."}, Spell_4 = {name = "Сопротивление магии льда", icon = "spell_frost_wizardmark", description = "Снижает вероятность быть пораженным заклинаниями льда на 2%."}, Spell_5 = {name = "Поиск сокровищ", icon = "racial_dwarf_findtreasure", description = "Позволяет дворфу ощущать близлежащие сокровища и показывает их на миникарте. Действует до отмены."}, }, [3] = { Name = "Ночной эльф", Description = "Десять тысяч лет назад ночные эльфы создали огромную империю, но безрассудное использование первородной магии привело ее к гибели. Потрясенные случившимся, они ушли в леса и скрывались там до возвращения своего древнего врага - Пылающего Легиона. Тогда ночные эльфы были вынуждены покинуть уединение и вновь сразиться за свое место в новом мире.", Spell_1 = {name = "Слиться с тенью", icon = "ability_ambush", description = "Позволяет слиться с тенями, снижая вероятность обнаружения врагами. Действует до отмены или движения. После отмены угроза к противникам в бою восстанавливается."}, Spell_2 = {name = "Неуловимость", icon = "ability_racial_ultravision", description = "Снижает вероятность обнаружения, пока вы находитесь в скрытности или под действием способности \"Слиться с тенью\"."}, Spell_3 = {name = "Сопротивление силам природы", icon = "spell_nature_spiritarmor", description = "Снижает вероятность быть пораженным заклинаниями природы на 2%."}, Spell_4 = {name = "Расторопность", icon = "ability_racial_shadowmeld", description = "Снижает вероятность быть пораженным атаками ближнего и дальнего боя на 2%."}, Spell_5 = {name = "Огонек", icon = "spell_nature_wispsplode", description = "После смерти вы превращаетесь в огонька, а скорость передвижения увеличивается на 75%."}, }, [4] = { Name = "Гном", Description = "Несмотря на малый рост, гномы Хаз Модана сумели вписать себя в историю благодаря выдающемуся уму. Их подземное королевство Гномреган когда-то считалось чудом паровой техники. Но даже это не спасло город от нашествия троггов. Теперь создатели этого чуда странствуют по землям дворфов и помогают союзникам всем, чем могут.", Spell_1 = {name = "Мастер побега", icon = "ability_rogue_trip", description = "Позволяет освободиться от любого эффекта, обездвиживающего вас или замедляющего скорость передвижения."}, Spell_2 = {name = "Сопротивление тайной магии", icon = "spell_nature_wispsplode", description = "Снижает вероятность быть пораженным заклинаниями тайной магии на 2%."}, Spell_3 = {name = "Пытливый ум", icon = "inv_enchant_essenceeternallarge", description = "Показатель интеллекта увеличивается на 5%."}, Spell_4 = {name = "Специализация в инженерном деле", icon = "inv_misc_gear_01", description = "Навык инженерного дела повышается на 15."}, }, [5] = { Name = "Дреней", Description = "Покинув родной Аргус, благородные дренеи долгие эпохи спасались от Пылающего Легиона, пока не нашли далекий мир для нового дома. Там они соседствовали с шаманскими орками и назвали планету Дренором. Со временем Легион развратил орков, и те почти уничтожили мирных дренеев. Немногим счастливцам удалось спастись и добраться до Азерота, где теперь они ищут союзников в борьбе против Легиона.", Spell_1 = {name = "Дар наару", icon = "spell_holy_holyprotection", description = "Исцеляет цель в течение 15 сек. Количество исцеления зависит от вашей силы атаки."}, Spell_2 = {name = "Огранка самоцветов", icon = "spell_misc_conjuremanajewel", description = "Навык ювелирного дела повышается на 5."}, Spell_3 = {name = "Героическое присутствие", icon = "inv_helmet_21", description = "Повышает вероятность попадания всеми атаками и заклинаниями на 1% для вас и членов вашей группы в радиусе 30 м."}, Spell_4 = {name = "Сопротивление темной магии", icon = "spell_shadow_detectinvisibility", description = "Снижает вероятность быть пораженным заклинаниями тьмы на 2%."}, }, [6] = { Name = "Орк", Description = "Орки происходят с планеты Дренор. Этот некогда мирный народ, следовавший шаманским традициям, был порабощен Пылающим Легионом и вынужден вести войну против людей Азерота. Прошли годы, прежде чем орки вырвались из демонической порчи и вновь обрели свободу. Теперь они сражаются за свою честь в мире, который их ненавидит и презирает.", Spell_1 = {name = "Кровавое неистовство", icon = "racial_orc_berserkerstrength", description = "Увеличивает силу атаки на 6%. Длится 15 сек."}, Spell_2 = {name = "Командование", icon = "ability_warrior_warcry", description = "Урон, наносимый вашими питомцами, увеличивается на 5%."}, Spell_3 = {name = "Твердость", icon = "inv_helmet_23", description = "Дополнительно сокращает длительность эффектов оглушения на 15%."}, Spell_4 = {name = "Специализация на топорах", icon = "inv_axe_02", description = "Мастерство владения кистевым оружием, топорами и двуручными топорами повышается на 5."}, }, [7] = { Name = "Нежить", Description = "Вырвавшись из-под власти Короля-лича, Отрекшиеся ищут способ свергнуть его. Сильвана Ветрокрылая ведет их в жажде мести Плети. Люди тоже стали для них врагом, решив во что бы то ни стало очистить мир от нежити. Даже союзники значат для Отрекшихся немногое: Орда для них - лишь средство достижения собственных мрачных целей.", Spell_1 = {name = "Каннибализм", icon = "ability_racial_cannibalize", description = "При активации восстанавливает 7% от максимального здоровья каждые 2 сек. в течение 10 сек. Работает только рядом с трупами гуманоидов или нежити в радиусе 5 м."}, Spell_2 = {name = "Воля Отрекшихся", icon = "spell_shadow_raisedead", description = "Снимает эффекты очарования, страха и сна. Имеет общее время восстановления 45 сек. с аналогичными эффектами."}, Spell_3 = {name = "Сопротивление темной магии", icon = "spell_shadow_detectinvisibility", description = "Снижает вероятность быть пораженным заклинаниями тьмы на 2%."}, Spell_4 = {name = "Подводное дыхание", icon = "spell_shadow_demonbreath", description = "Время задержки дыхания под водой увеличивается на 233%."}, }, [8] = { Name = "Таурен", Description = "Таурены неустанно стремятся сохранять равновесие природы и чтить волю почитаемой ими Матери-Земли. Недавно на них обрушились смертоносные кентавры, и таурены были бы уничтожены, если бы не помощь орков. В память об этом кровном долге таурены присоединились к Орде и скрепили союз двух народов.", Spell_1 = {name = "Громовая поступь", icon = "ability_warstomp", description = "Оглушает до 5 противников в радиусе 8 м на 2 сек."}, Spell_2 = {name = "Закалка", icon = "spell_nature_unyeildingstamina", description = "Базовый запас здоровья увеличивается на 5%."}, Spell_3 = {name = "Сопротивление силам природы", icon = "spell_nature_spiritarmor", description = "Снижает вероятность быть пораженным заклинаниями природы на 2%."}, Spell_4 = {name = "Культивация", icon = "inv_misc_flower_01", description = "Навык травничества повышается на 15."}, }, [9] = { Name = "Тролль", Description = "Свирепые тролли Черного Копья когда-то жили в джунглях Тернистой долины, пока враждебные племена не изгнали их оттуда. Со временем они заключили союз с орками Орды, а молодой вождь Тралл убедил их отправиться вместе с ним в Калимдор. Несмотря на мрачное наследие, тролли Черного Копья заняли почетное место в Орде.", Spell_1 = {name = "Берсерк", icon = "racial_troll_berserk", description = "Увеличивает скорость атаки и произнесения заклинаний на 20% на 10 сек."}, Spell_2 = {name = "Регенерация", icon = "spell_nature_regenerate", description = "Скорость восстановления здоровья увеличивается на 10%. 10% обычной регенерации продолжают действовать в бою."}, Spell_3 = {name = "Убийство животных", icon = "inv_misc_pelt_bear_ruin_02", description = "Урон, наносимый животным, увеличивается на 5%."}, Spell_4 = {name = "Специализация на метательном оружии", icon = "inv_throwingaxe_03", description = "Вероятность критического удара метательным оружием повышается на 1%."}, Spell_5 = {name = "Специализация на луках", icon = "inv_weapon_bow_12", description = "Вероятность критического удара из луков повышается на 1%."}, Spell_6 = {name = "Ловкость вуду", icon = "inv_misc_idol_02", description = "Сокращает длительность всех эффектов, препятствующих движению, на 15%. Тролли всегда выкручиваются, мон!"}, }, [10] = { Name = "Эльф крови", Description = "Давным-давно изгнанные высшие эльфы основали Кель'Талас и создали там магический источник - Солнечный Колодец. Его сила наделила их могуществом, но породила опасную зависимость.\n\nГоды спустя Плеть уничтожила Солнечный Колодец и почти весь народ высших эльфов. Теперь, называя себя эльфами крови, эти рассеянные выжившие пытаются восстановить Кель'Талас и ищут новый источник магии, способный утолить их мучительную жажду.", Spell_1 = {name = "Волшебный поток", icon = "spell_shadow_teleport", description = "Заставляет замолчать всех врагов в радиусе 8 м на 2 сек. и восстанавливает 6% маны. Также прерывает заклинания у целей, не являющихся игроками, на 3 сек."}, Spell_2 = {name = "Магическое сродство", icon = "inv_enchant_shardglimmeringlarge", description = "Навык наложения чар повышается на 10."}, Spell_3 = {name = "Сопротивление магии", icon = "spell_shadow_antimagicshell", description = "Снижает вероятность быть пораженным заклинаниями на 2%."}, }, } local Class_Informations = { [1] = { Name = "Воин", Description = "Воины - мастера ближнего боя, способные использовать огромное количество оружия и доспехов. Их сила и выносливость делают их грозными защитниками, которые могут прикрывать союзников и наносить сокрушительный урон врагам.", Roles = "Ближний бой, Танк.", }, [2] = { Name = "Паладин", Description = "Паладины - священные воины, сочетающие рукопашный бой с божественной магией. Они стоят на страже справедливости, исцеляют союзников, укрепляют их благословениями и карают нечестивых силой Света.", Roles = "Ближний бой, Танк, Лекарь.", }, [3] = { Name = "Охотник", Description = "Охотники превосходно чувствуют себя в дальнем бою и в дикой природе. Вместе с верными питомцами они выслеживают врагов, расставляют ловушки и поражают цель издалека из луков и огнестрельного оружия.", Roles = "Дальний бой.", }, [4] = { Name = "Разбойник", Description = "Разбойники - мастера скрытности и обмана. Они двигаются незаметно, бьют из тени и наносят смертельные критические удары, уходя от ответных атак за счет ловкости и скорости.", Roles = "Ближний бой.", }, [5] = { Name = "Жрец", Description = "Жрецы владеют божественной магией и посвящают себя исцелению и защите союзников. При необходимости они также способны обращаться к темным силам, но главная их сила - в восстановлении жизни и духовной поддержке.", Roles = "Дальний бой, Лекарь.", }, [6] = { Name = "Рыцарь смерти", Description = "Рыцари смерти - бывшие слуги Короля-лича, овладевшие некромантией и мрачной боевой магией. Они сочетают тяжелое оружие, темные руны и нечестивую силу, чтобы сокрушать врагов на передовой.", Roles = "Ближний бой, Танк.", }, [7] = { Name = "Шаман", Description = "Шаманы служат связующим звеном между духами и материальным миром. Они управляют стихиями, призывают тотемы, исцеляют союзников и обрушивают на врагов ярость огня, земли, воды и воздуха.", Roles = "Ближний бой, Дальний бой, Лекарь.", }, [8] = { Name = "Маг", Description = "Маги - повелители тайных искусств, способные направлять разрушительную силу льда, огня и чистой арканы. При своей хрупкости они остаются одной из самых опасных сил на поле боя.", Roles = "Дальний бой.", }, [9] = { Name = "Чернокнижник", Description = "Чернокнижники заключают сделки с демоническими силами ради могущества. Они призывают демонов, высасывают жизнь из врагов и насылают разрушительную скверну, превращая бой в кошмар для своих противников.", Roles = "Дальний бой.", }, [10] = { Name = "Друид", Description = "Друиды - хранители природы, способные принимать разные звериные облики. Их универсальность позволяет им выполнять множество ролей: исцелять, защищать союзников, сражаться в ближнем бою или поражать врагов заклинаниями издали.", Roles = "Ближний бой, Дальний бой, Танк, Лекарь.", }, } local RaceTooltipPositions = { Alliance = { [1] = { high = {point = "TOPLEFT", relPoint = "TOPRIGHT", x = 20, y = 20}, low = {point = "BOTTOMLEFT", relPoint = "TOPRIGHT", x = 20, y = -80}, veryLow = {point = "BOTTOMLEFT", relPoint = "TOPRIGHT", x = 20, y = -180}, default = {point = "LEFT", relPoint = "RIGHT", x = 20, y = 0}, }, [2] = { high = {point = "TOPLEFT", relPoint = "TOPRIGHT", x = 20, y = 40}, low = {point = "BOTTOMLEFT", relPoint = "TOPRIGHT", x = 20, y = -60}, veryLow = {point = "BOTTOMLEFT", relPoint = "TOPRIGHT", x = 20, y = -140}, default = {point = "LEFT", relPoint = "RIGHT", x = 20, y = 20}, }, [3] = { high = {point = "TOPLEFT", relPoint = "TOPRIGHT", x = 20, y = 20}, low = {point = "BOTTOMLEFT", relPoint = "TOPRIGHT", x = 20, y = -80}, veryLow = {point = "BOTTOMLEFT", relPoint = "TOPRIGHT", x = 20, y = -180}, default = {point = "LEFT", relPoint = "RIGHT", x = 20, y = 0}, }, [4] = { high = {point = "TOPLEFT", relPoint = "TOPRIGHT", x = 20, y = 40}, low = {point = "BOTTOMLEFT", relPoint = "TOPRIGHT", x = 20, y = -60}, veryLow = {point = "BOTTOMLEFT", relPoint = "TOPRIGHT", x = 20, y = -140}, default = {point = "LEFT", relPoint = "RIGHT", x = 20, y = 20}, }, [5] = { high = {point = "TOPLEFT", relPoint = "TOPRIGHT", x = 20, y = 20}, low = {point = "BOTTOMLEFT", relPoint = "TOPRIGHT", x = 20, y = -80}, veryLow = {point = "BOTTOMLEFT", relPoint = "TOPRIGHT", x = 20, y = -180}, default = {point = "LEFT", relPoint = "RIGHT", x = 20, y = 0}, }, }, Horde = { [6] = { high = {point = "TOPRIGHT", relPoint = "TOPLEFT", x = -20, y = 20}, veryLow = {point = "BOTTOMRIGHT", relPoint = "TOPLEFT", x = -20, y = -120}, default = {point = "RIGHT", relPoint = "LEFT", x = -20, y = 0}, }, [7] = { high = {point = "TOPRIGHT", relPoint = "TOPLEFT", x = -20, y = 40}, veryLow = {point = "BOTTOMRIGHT", relPoint = "TOPLEFT", x = -20, y = -80}, default = {point = "RIGHT", relPoint = "LEFT", x = -20, y = 20}, }, [8] = { high = {point = "TOPRIGHT", relPoint = "TOPLEFT", x = -20, y = 20}, veryLow = {point = "BOTTOMRIGHT", relPoint = "TOPLEFT", x = -20, y = -120}, default = {point = "RIGHT", relPoint = "LEFT", x = -20, y = 0}, }, [9] = { high = {point = "TOPRIGHT", relPoint = "TOPLEFT", x = -20, y = 40}, veryLow = {point = "BOTTOMRIGHT", relPoint = "TOPLEFT", x = -20, y = -80}, default = {point = "RIGHT", relPoint = "LEFT", x = -20, y = 20}, }, [10] = { high = {point = "TOPRIGHT", relPoint = "TOPLEFT", x = -20, y = 20}, veryLow = {point = "BOTTOMRIGHT", relPoint = "TOPLEFT", x = -20, y = -120}, default = {point = "RIGHT", relPoint = "LEFT", x = -20, y = 0}, }, }, } function GetRaceTooltipPosition(raceID, button) local screenHeight = GetScreenHeight() local buttonTop = button:GetTop() local buttonBottom = button:GetBottom() local faction = raceID <= 5 and "Alliance" or "Horde" local positions = RaceTooltipPositions[faction][raceID] if not positions then return {point = "CENTER", relPoint = "CENTER", x = 0, y = 0} end if buttonTop > screenHeight * 0.66 then return positions.high elseif buttonBottom < screenHeight * 0.44 and positions.low then return positions.low elseif buttonBottom < screenHeight * 0.33 and positions.veryLow then return positions.veryLow else return positions.default end end local RACE_DATA = { [1] = { glueString = "HUMAN", faction = "Alliance" }, [2] = { glueString = "DWARF", faction = "Alliance" }, [3] = { glueString = "NIGHT_ELF", faction = "Alliance" }, [4] = { glueString = "GNOME", faction = "Alliance" }, [5] = { glueString = "DRAENEI", faction = "Alliance" }, [6] = { glueString = "ORC", faction = "Horde" }, [7] = { glueString = "UNDEAD", faction = "Horde" }, [8] = { glueString = "TAUREN", faction = "Horde" }, [9] = { glueString = "TROLL", faction = "Horde" }, [10] = { glueString = "BLOOD_ELF", faction = "Horde" }, } local ALLIANCE_RACES = {1, 2, 3, 4, 5} local HORDE_RACES = {6, 7, 8, 9, 10} local RACE_NAME_TO_FACTION = { ["Человек"] = "Alliance", ["Человечка"] = "Alliance", ["Humano"] = "Alliance", ["Humana"] = "Alliance", ["Human"] = "Alliance", ["Дворф"] = "Alliance", ["Дворфийка"] = "Alliance", ["Enano"] = "Alliance", ["Enana"] = "Alliance", ["Dwarf"] = "Alliance", ["Ночной эльф"] = "Alliance", ["Ночная эльфийка"] = "Alliance", ["Elfo de la noche"] = "Alliance", ["Elfa de la noche"] = "Alliance", ["Night Elf"] = "Alliance", ["Гном"] = "Alliance", ["Гномка"] = "Alliance", ["Gnomo"] = "Alliance", ["Gnoma"] = "Alliance", ["Gnome"] = "Alliance", ["Дреней"] = "Alliance", ["Дренейка"] = "Alliance", ["Draenei"] = "Alliance", ["Орк"] = "Horde", ["Орчиха"] = "Horde", ["Orco"] = "Horde", ["Orca"] = "Horde", ["Orc"] = "Horde", ["Нежить"] = "Horde", ["No-muerto"] = "Horde", ["No Muerto"] = "Horde", ["No-muerta"] = "Horde", ["Undead"] = "Horde", ["Таурен"] = "Horde", ["Тауренка"] = "Horde", ["Tauren"] = "Horde", ["Тролль"] = "Horde", ["Троллиха"] = "Horde", ["Trol"] = "Horde", ["Troll"] = "Horde", ["Эльф крови"] = "Horde", ["Эльфийка крови"] = "Horde", ["Elfo de sangre"] = "Horde", ["Elfa de sangre"] = "Horde", ["Blood Elf"] = "Horde", } local function GetRaceName(raceID) local raceData = RACE_DATA[raceID] if not raceData then return "Человек" end return _G[raceData.glueString] or raceData.glueString end local function GetFactionForRaceID(raceID) local raceData = RACE_DATA[raceID] return raceData and raceData.faction or "Alliance" end local function GetRaceNamesByFaction(faction) local names = {} local raceList = (faction == "Alliance") and ALLIANCE_RACES or HORDE_RACES for _, raceID in ipairs(raceList) do table.insert(names, GetRaceName(raceID)) end return names end local AllianceRaces = GetRaceNamesByFaction("Alliance") local HordeRaces = GetRaceNamesByFaction("Horde") local function GetCurrentRaceName() local raceID = GetSelectedRace() return GetRaceName(raceID) end local function GetRacesByFaction(allowedRaces) local allianceList = {} local hordeList = {} for _, race in ipairs(allowedRaces) do local isAlliance = false for _, allianceRace in ipairs(AllianceRaces) do if race == allianceRace then table.insert(allianceList, race) isAlliance = true break end end if not isAlliance then for _, hordeRace in ipairs(HordeRaces) do if race == hordeRace then table.insert(hordeList, race) break end end end end return allianceList, hordeList end local RACE_NAME_CACHE = {} local function GetFactionForRaceName(raceName) if not raceName then return "Horde" end if RACE_NAME_CACHE[raceName] then return RACE_NAME_CACHE[raceName] end local faction = RACE_NAME_TO_FACTION[raceName] if faction then RACE_NAME_CACHE[raceName] = faction return faction end for _, raceData in pairs(RACE_DATA) do local baseKey = raceData.glueString for _, genderKey in ipairs({"", "_MALE", "_FEMALE"}) do local localizedName = _G[baseKey .. genderKey] if localizedName and localizedName == raceName then faction = raceData.faction break end end if faction then break end end if not faction then faction = "Horde" end RACE_NAME_CACHE[raceName] = faction return faction end _G.RACE_1 = "Человек" _G.RACE_2 = "Дворф" _G.RACE_3 = "Ночной эльф" _G.RACE_4 = "Гном" _G.RACE_5 = "Дреней" _G.RACE_6 = "Орк" _G.RACE_7 = "Нежить" _G.RACE_8 = "Таурен" _G.RACE_9 = "Тролль" _G.RACE_10 = "Эльф крови" _G.Races_Informations = Races_Informations _G.Class_Informations = Class_Informations _G.ClassRaces = ClassRaces or {} _G.GetRaceTooltipPosition = GetRaceTooltipPosition _G.GetRaceName = GetRaceName _G.GetFactionForRaceID = GetFactionForRaceID _G.GetRaceNamesByFaction = GetRaceNamesByFaction _G.GetCurrentRaceName = GetCurrentRaceName _G.GetRacesByFaction = GetRacesByFaction _G.ALLIANCE_RACES = ALLIANCE_RACES _G.HORDE_RACES = HORDE_RACES _G.RACE_DATA = RACE_DATA _G.AllianceRaces = AllianceRaces _G.HordeRaces = HordeRaces _G.GetFactionForRaceName = GetFactionForRaceName