Merge branch 'master' into renovate/axios-1.x-lockfile
All checks were successful
forgejo/Czech Quests/addon/pipeline/head This commit looks good

This commit is contained in:
Roman Jaroš 2025-04-01 17:12:14 +02:00
commit 86df5a085f
18 changed files with 9826 additions and 304 deletions

View file

@ -13,6 +13,11 @@ const normalizeTranslation = (translation: string | null | undefined) => {
return translation.replace(/\n/g, '\\n').replace(/"/g, "'");
};
function getSplitByIndexes(input: string, indexes: number[]): string[] {
const parts = input.split('_');
return indexes.map((index) => parts[index]).filter((item) => item !== undefined);
}
const prepareLuaWithFemaleVersion = (quest: Quest, type: keyof Quest, key: string) => {
let text = '';
const value = quest[type] as string;
@ -70,6 +75,16 @@ const splitFirst = (text: string, delimiter: string) => {
return text.slice(index + delimiter.length);
};
const generateRoleTactic = (role: (string | null)[]) => {
let luaQuestRecord = '';
for (const ability of role) {
if (ability == null) continue;
const information = ability.split('\n');
luaQuestRecord += `\t\t{"${information[0].trim()}","${information[1].trim()}","${information[2].trim()}","${information[3].trim()}"},\n`;
}
return luaQuestRecord;
};
(async () => {
const args = process.argv.slice(2);
const addonDir = path.join(process.cwd(), `../Addon/Data/${args[0]}`);
@ -92,7 +107,15 @@ const splitFirst = (text: string, delimiter: string) => {
// for each page from tolgee
for (const tolgeeKey of translations) {
addonData[tolgeeKey.keyName] = {
let key = tolgeeKey.keyName;
if (tolgeeKey.keyNamespace === 'tactic') {
key = key.split('_')[0];
}
const instanceName = getSplitByIndexes(tolgeeKey.keyName, [1, 2]).join('_');
addonData[key] = {
...addonData[tolgeeKey.keyName],
...(tolgeeKey.keyNamespace === 'name' && {
names: [
@ -144,6 +167,25 @@ const splitFirst = (text: string, delimiter: string) => {
tolgeeKey.translations.en.text,
],
}),
...(tolgeeKey.keyNamespace === 'tactic' && {
tactics: {
[instanceName]: {
...(addonData[key]?.tactics?.[instanceName] ?? {}),
...(tolgeeKey.keyName.endsWith('_summary') && {
summary: tolgeeKey.translations.cs.text,
}),
...(tolgeeKey.keyName.includes('_tank_') && {
tank: [...(addonData[key].tactics?.[instanceName]?.tank ?? []), tolgeeKey.translations.cs.text],
}),
...(tolgeeKey.keyName.includes('_healer_') && {
healer: [...(addonData[key].tactics?.[instanceName]?.healer ?? []), tolgeeKey.translations.cs.text],
}),
...(tolgeeKey.keyName.includes('_dps_') && {
dps: [...(addonData[key].tactics?.[instanceName]?.dps ?? []), tolgeeKey.translations.cs.text],
}),
},
},
}),
name: tolgeeKey.keyDescription,
id: tolgeeKey.keyName.replace('q', '').replace('i', ''),
isQuest: tolgeeKey.keyName.startsWith('q'),
@ -192,12 +234,35 @@ const splitFirst = (text: string, delimiter: string) => {
if (czechQuest.speeches) {
let luaQuestRecord = '';
const key = splitFirst(normalizeTranslation(czechQuest.speeches?.[2]) ?? '', ':').trim();
luaQuestRecord += `addon.data.speech["${key}"] = {\n`;
const key = splitFirst(normalizeTranslation(czechQuest.speeches?.[2]) ?? '', ': ').trim();
const npcNameKey = normalizeTranslation(czechQuest.name).trim();
luaQuestRecord += `addon.data.speech["${npcNameKey}_${key}"] = {\n`;
luaQuestRecord += '\ttext = "' + normalizeTranslation(czechQuest.speeches?.[0]).trim() + '", \n';
luaQuestRecord += `}\n`;
fs.appendFileSync(fileName, luaQuestRecord, 'utf8');
}
if (czechQuest.tactics) {
let luaQuestRecord = '';
const npcNameKey = normalizeTranslation(czechQuest.name).trim();
luaQuestRecord += `addon.data.tactic["${npcNameKey}"] = {\n`;
for (const [instance, roles] of Object.entries(czechQuest.tactics)) {
luaQuestRecord += `\t${instance} = {\n`;
luaQuestRecord += `\t\tsummary = "${roles.summary}",\n`;
luaQuestRecord += `\t\ttank = {\n`;
if (roles.tank) luaQuestRecord += generateRoleTactic(roles.tank);
luaQuestRecord += `\t\t},\n`;
luaQuestRecord += `\t\theal = {\n`;
if (roles.healer) luaQuestRecord += generateRoleTactic(roles.healer);
luaQuestRecord += `\t\t},\n`;
luaQuestRecord += `\t\tdps = {\n`;
if (roles.dps) luaQuestRecord += generateRoleTactic(roles.dps);
luaQuestRecord += `\t\t},\n`;
luaQuestRecord += `\t},\n`;
}
luaQuestRecord += `}\n`;
fs.appendFileSync(fileName, luaQuestRecord, 'utf8');
}
}
});
} catch (e) {
@ -207,6 +272,17 @@ const splitFirst = (text: string, delimiter: string) => {
type AddonData = Record<string, Quest>;
type Tactic = {
summary?: string | null;
tank?: (string | null)[];
healer?: (string | null)[];
dps?: (string | null)[];
};
type InstanceTactic = {
[key: string]: Tactic;
};
type Quest = {
id: string;
name: string;
@ -216,6 +292,7 @@ type Quest = {
completions?: (string | null)[];
objectives?: (string | null)[];
speeches?: (string | null)[];
tactics?: InstanceTactic;
isQuest: boolean;
isQuestItem: boolean;
};

View file

@ -1,21 +1,30 @@
#!/bin/bash
#wow_source_folder="retail"
#wow_destiny_folder="retail"
wow_source_folder="retail"
wow_destiny_folder="retail"
#wow_source_folder="beta"
#wow_destiny_folder="retail"
# wow_source_folder="beta"
# wow_destiny_folder="retail"
wow_source_folder="classic_era"
wow_destiny_folder="classic_era"
# wow_source_folder="classic_era"
# wow_destiny_folder="classic_era"
src_folder="."
src_folder="$(pwd)/./"
dest_folder="/Applications/World of Warcraft/_${wow_destiny_folder}_/Interface/AddOns/CzechQuests"
fswatch -o "$src_folder" | while read -r change; do
rsync -avu --delete "$src_folder" "$dest_folder" --exclude={'.*','*.png','*.sh','*.md','Addon/Data/**',"lib/**","Jenkinsfile"}
rsync -au --delete "$src_folder/Addon/Data/$wow_source_folder/" "$dest_folder/Addon/Data/"
echo "Dest: $dest_folder"
cp "$src_folder/Addon/Data/other.lua" "$dest_folder/Addon/Data/"
done
mkdir -p "$dest_folder/Addon/Data/"
fswatch -o "$src_folder" | while read -r change; do
rsync -auv --delete \
"$src_folder/Addon/Data/$wow_source_folder/" \
"$dest_folder/Addon/Data/"
cp "$src_folder/Addon/Data/other.lua" "$dest_folder/Addon/Data/"
rsync -auv --delete \
--exclude '.*' \
--exclude 'Addon/Data/**' \
--exclude 'lib/**' \
--exclude 'Jenkinsfile' \
"$src_folder" "$dest_folder"
done

View file

@ -7,6 +7,7 @@
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true
},
"exclude": ["node_modules"]
}

View file

@ -10,14 +10,18 @@ local function CreateCzechFont(frame, name, size, flags)
font:SetTextColor(0, 0, 0, 1)
font:SetJustifyH("LEFT")
font:SetWidth(frame:GetWidth())
font:SetWordWrap(true)
font:SetFont(FontPath ..name, size, flags or "")
return font
end
addon.API.CreateCzechFont = CreateCzechFont
local function UpdateCzechFont(FontString, name, size)
local _, _, flags = FontString:GetFont()
FontString:SetFont(FontPath .. name, size, flags)
if not FontString then
return
end
local _, currentSize, flags = FontString:GetFont()
FontString:SetFont(FontPath .. name, size or currentSize, flags)
end
addon.API.UpdateCzechFont = UpdateCzechFont

View file

@ -116,6 +116,22 @@ local function InitSpeeches()
end
local function InitTactics()
local function Update(name, value)
CzechQuestsAddon_Store.config[name] = value
addon.TacticFrame:UpdateSettings()
end
local layout = Options.layout
layout:AddInitializer(CreateSettingsListSectionHeaderInitializer("Taktiky"))
CreateCheckbox("TACTIC_ENABLED", "Zapnout *", Update)
CreateDropdown("TACTIC_TEXT_FONT_NAME", "Pismo *", addon.API.GetFontContainer, Update)
CreateSlider("TACTIC_TEXT_FONT_SIZE", "Velikost pisma *", 10, 30, 1, Update)
end
local function InitOthers()
local layout = Options.layout
layout:AddInitializer(CreateSettingsListSectionHeaderInitializer("Ostatni"))
@ -125,12 +141,15 @@ local function InitOthers()
end
local function InitOptions()
local category, layout = Settings.RegisterVerticalLayoutCategory("CzechQuests")
local category, layout = Settings.RegisterVerticalLayoutCategory("Czech Quests")
Options.category = category
Options.layout = layout
InitQuests()
InitSpeeches()
if (WOW_PROJECT_ID ~= WOW_PROJECT_CLASSIC) then
InitTactics()
end
InitOthers()
Settings.RegisterAddOnCategory(category)

View file

@ -76,7 +76,7 @@ end
addon.API.AddSpeechMessage = AddMessage
local function ShowSpeechTranslation(sender, message)
local text = CzechQuestsAddon:GetData("speech", message)
local text = CzechQuestsAddon:GetData("speech", sender .. "_" .. message)
if text == nil and CzechQuestsAddon_Store.config.SPEECH_ORIGINAL_WHEN_MISSING then
text = message
end

View file

@ -1,5 +1,28 @@
local _, addon = ...
local function BuildIndex(text)
local numberMarks = text:gsub("%d+%.?%d*", "#?")
local normalized = numberMarks:gsub('"', "'")
return normalized
end
local function FillNumbers(text, sourceText)
local numbers = {}
local currentIndex = 1
for num in sourceText:gmatch("%d+%.?%d*") do
table.insert(numbers, num)
end
local replacedText = text:gsub("#%?", function()
local n = numbers[currentIndex]
currentIndex = currentIndex + 1
return n or "?"
end)
return replacedText
end
local function FillPlaceholders(text)
if text == nil then
return text
@ -9,15 +32,18 @@ local function FillPlaceholders(text)
local formatted = text;
formatted = string.gsub(formatted, '<name>', playerName);
formatted = string.gsub(formatted, 'Champions', playerName);
formatted = string.gsub(formatted, 'champions', playerName);
return formatted
end
local function GetSpeech(message)
local speech = addon.data.speech[message];
local index = BuildIndex(message)
local speech = addon.data.speech[index];
local text = speech and speech.text or nil
return FillPlaceholders(text)
if text then
return FillPlaceholders(FillNumbers(text, message))
else
return nil
end
end
addon.API.GetSpeech = GetSpeech

223
Addon/Code/Tactic.lua Executable file
View file

@ -0,0 +1,223 @@
local _, addon = ...
local TACTIC_TAB_ID = 9
local CURRENT_TAB_ID = 0
local PREVIOUS_TAB_ID = 0
local ENCOUNTER_ID = 0
local DIFFICULTY = 0
local function HideOtherContent()
local frames = { "overviewScroll", "LootContainer", 'detailsScroll', 'model', 'encounterTitle' }
for _, frame in ipairs(frames) do
EncounterJournal.encounter.info[frame]:Hide();
end
local tabs = { "overviewTab", "lootTab", "bossTab", "modelTab" }
for _, tab in ipairs(tabs) do
EncounterJournal.encounter.info[tab].selected:Hide();
EncounterJournal.encounter.info[tab].unselected:Show();
EncounterJournal.encounter.info[tab]:UnlockHighlight();
end
if EncounterJournal.encounter.info.creatureButtons then
for _, button in pairs(EncounterJournal.encounter.info.creatureButtons) do
button:Hide()
end
end
addon.TacticFrame:ClearHeaders()
end
local function RenderBossTactics(frame, bossName)
HideOtherContent()
local instanceType = 'raidu'
local difficulty = 'lfg_raid' -- 17
if DIFFICULTY == 14 then
difficulty = 'normal_raid'
elseif DIFFICULTY == 15 then
difficulty = 'heroic_raid'
elseif DIFFICULTY == 16 then
difficulty = 'mythic_raid'
elseif DIFFICULTY == 1 then
difficulty = 'normal_dungeon'
instanceType = 'dungeonu'
elseif DIFFICULTY == 2 then
difficulty = 'heroic_dungeon'
instanceType = 'dungeonu'
elseif DIFFICULTY == 23 then
difficulty = 'mythic_dungeon'
instanceType = 'dungeonu'
elseif DIFFICULTY == 8 then
difficulty = 'mythicplus_dungeon'
instanceType = 'dungeonu'
end
local bossData = CzechQuestsAddon:GetData('tactic', bossName)
local tactic = bossData and bossData[difficulty] or nil
if not tactic then
frame.summary:SetText("Boss " .. bossName .. " nemá pro tuto obtížnost přeloženou taktiku.")
frame.inform:Hide()
frame:GetParent():Show()
return
end
local function CreateHeaderDescription(data)
local description = ""
for _, item in ipairs(data) do
description = description
.. "|cff003366" .. item[1] .. "|r\n"
.. "" .. item[3] .. " "
.. "|cff004400" .. item[4] .. "|r"
.. "\n\n"
end
return description
end
frame.summary:SetText(tactic.summary)
frame.inform:SetText("|cffffffffVždy dodržuj pokyny leadera " .. instanceType .. ".|r")
local tankHeader = frame:CreateHeader()
tankHeader.button.title:SetText("Tank")
tankHeader.description:SetText(CreateHeaderDescription(tactic.tank))
local healHeader = frame:CreateHeader()
healHeader.button.title:SetText("Healer")
healHeader.description:SetText(CreateHeaderDescription(tactic.heal))
local dpsHeader = frame:CreateHeader()
dpsHeader.button.title:SetText("DPS")
dpsHeader.description:SetText(CreateHeaderDescription(tactic.dps))
frame:GetParent():Show()
frame:UpdateHeaderPositions()
end
local function CreateCreaturesDropdown()
local frame = addon.TacticFrame
local encounterName = EJ_GetEncounterInfo(ENCOUNTER_ID)
local options = {}
local selectedValue = nil
for i = 1, 10 do
local id, name = EJ_GetCreatureInfo(i);
if id then
if addon.data.tactic[name] then
table.insert(options, { name, name })
end
end
end
if #options > 0 then
selectedValue = options[1][2]
end
local function IsSelected(value)
return value == selectedValue
end
local function SetSelected(value)
if value then
RenderBossTactics(addon.TacticFrame, value)
end
selectedValue = value
end
MenuUtil.CreateRadioMenu(frame.dropdown, IsSelected, SetSelected, unpack(options))
if #options > 0 then
SetSelected(selectedValue)
end
if #options == 0 then
frame.summary:SetText("V souboji " .. encounterName .. " není boss, který má přeloženou taktikou.")
frame:GetParent():Show()
frame.dropdown:Hide()
frame.inform:Hide()
end
end
local function HideTacticNpcs()
addon.TacticFrame:GetParent():Hide()
addon.TacticFrame.dropdown:Hide()
end
local function ShowTacticNpcs()
CURRENT_TAB_ID = TACTIC_TAB_ID
HideOtherContent()
local frame = addon.TacticFrame
frame.tab:SetHighlight(true);
frame.dropdown:Show()
EncounterJournal.encounter.info.rightShadow:Show()
EncounterJournal.encounter.info.difficulty:Show()
CreateCreaturesDropdown()
end
local function SetupCustomTab()
addon.TacticFrame.tab:SetScript("OnClick", function()
ShowTacticNpcs()
end)
hooksecurefunc("EncounterJournal_DisplayEncounter", function(encounterID)
ENCOUNTER_ID = encounterID
addon.TacticFrame.tab:SetActive(true);
if CURRENT_TAB_ID == TACTIC_TAB_ID then
ShowTacticNpcs()
end
end)
hooksecurefunc("EncounterJournal_DisplayInstance", function()
addon.TacticFrame.tab:SetActive(false);
end)
hooksecurefunc("EncounterJournal_SetTab", function(tabId)
if CURRENT_TAB_ID ~= tabId then
addon.TacticFrame.tab:SetHighlight(false);
end
PREVIOUS_TAB_ID = CURRENT_TAB_ID
CURRENT_TAB_ID = tabId
HideTacticNpcs()
end)
hooksecurefunc("EncounterJournalBossButton_OnClick", function(encounterID)
if PREVIOUS_TAB_ID == TACTIC_TAB_ID then
ShowTacticNpcs()
end
end)
hooksecurefunc("EncounterJournal_UpdateDifficulty", function(difficulty)
DIFFICULTY = difficulty
if PREVIOUS_TAB_ID == TACTIC_TAB_ID and ENCOUNTER_ID then
ShowTacticNpcs()
end
end)
end
local function InitTactics()
local frame = addon.TacticFrame
-- Register EncounterJournal events
frame:RegisterEvent("ADDON_LOADED")
frame:SetScript("OnEvent", function(self, event, addonName)
if not CzechQuestsAddon_Store.config.TACTIC_ENABLED then
return
end
if addonName == 'Blizzard_EncounterJournal' then
addon.TacticFrame:Init()
SetupCustomTab()
end
end)
end
addon.API.InitTactics = InitTactics

216
Addon/Code/TacticFrame.lua Executable file
View file

@ -0,0 +1,216 @@
local _, addon = ...
local TacticFrame = CreateFrame("Frame", nil)
TacticFrame:Hide()
addon.TacticFrame = TacticFrame
TacticFrame.headers = {}
local NEXT_HEADER_ID = 0
function TacticFrame:Init()
local frame = self
if not EncounterJournal or not EncounterJournal.encounter or not EncounterJournal.encounter.info then
return
end
local scrollFrame = CreateFrame("ScrollFrame", "$parentOverviewScrollFrame", EncounterJournal.encounter.info, "ScrollFrameTemplate")
scrollFrame:SetSize(330, 370)
scrollFrame:SetPoint("TOPLEFT", EncounterJournal.encounter.info.overviewScroll, "TOPLEFT", 0, -7)
scrollFrame.scrollBarX = -25
scrollFrame.scrollBarTopY = -6
scrollFrame.scrollBarBottomY = 6
frame:SetParent(scrollFrame)
frame:SetSize(scrollFrame:GetWidth() - 10, 1)
frame:Show()
scrollFrame:SetScrollChild(frame)
frame.summary = addon.API.CreateCzechFont(
frame,
CzechQuestsAddon_Store.config.TACTIC_TEXT_FONT_NAME,
CzechQuestsAddon_Store.config.TACTIC_TEXT_FONT_SIZE
)
frame.summary:SetTextColor(0.251, 0.145, 0.012)
frame.summary:SetPoint("TOPLEFT", frame, "TOPLEFT", 2, 0)
frame.summary:SetWidth(scrollFrame:GetWidth() - 10)
frame.inform = addon.API.CreateCzechFont(
frame,
CzechQuestsAddon_Store.config.TACTIC_TEXT_FONT_NAME,
CzechQuestsAddon_Store.config.TACTIC_TEXT_FONT_SIZE
)
frame.inform:SetTextColor(0.251, 0.145, 0.012)
frame.inform:SetPoint("BOTTOMLEFT", frame.summary, "BOTTOMLEFT", 2, -20)
frame.inform:SetWidth(scrollFrame:GetWidth() - 10)
local dropdown = CreateFrame("DropdownButton", nil, EncounterJournal.encounter.info, "WowStyle1DropdownTemplate")
dropdown:SetPoint("BOTTOMRIGHT", EncounterJournal.encounter.info.encounterTitle, "BOTTOMRIGHT", 2, -2)
dropdown:SetWidth(200)
dropdown:Hide()
frame.dropdown = dropdown
frame:UpdateSettings()
frame:InitTab()
end
function TacticFrame:UpdateSettings()
local frame = self
addon.API.UpdateCzechFont(
frame.summary,
CzechQuestsAddon_Store.config.TACTIC_TEXT_FONT_NAME,
CzechQuestsAddon_Store.config.TACTIC_TEXT_FONT_SIZE
)
addon.API.UpdateCzechFont(
frame.inform,
CzechQuestsAddon_Store.config.TACTIC_TEXT_FONT_NAME,
CzechQuestsAddon_Store.config.TACTIC_TEXT_FONT_SIZE
)
for _, header in ipairs(self.headers) do
addon.API.UpdateCzechFont(
header.description,
CzechQuestsAddon_Store.config.TACTIC_TEXT_FONT_NAME,
CzechQuestsAddon_Store.config.TACTIC_TEXT_FONT_SIZE
)
end
end
function TacticFrame:InitTab()
local frame = self
local tab = CreateFrame("Button", "EncounterJournalCustomTab", EncounterJournal.encounter.info, "EncounterTabTemplate")
tab:SetPoint("TOP", EncounterJournal.encounter.info.modelTab, "BOTTOM", -3, -12)
tab:SetSize(50, 40)
tab.tooltip = "Taktika"
local selected = tab:CreateTexture(nil, "BACKGROUND")
selected:SetTexture("Interface\\EncounterJournal\\UI-EncounterJournalTextures")
selected:SetAllPoints(tab)
selected:SetBlendMode("ADD")
selected:SetDrawLayer("OVERLAY")
selected:SetTexCoord(0, 0.126953125, 0.90234375, 0.9599609375)
selected:Hide()
tab.selected = selected
function tab:SetActive(enable)
self:SetEnabled(enable);
self:GetDisabledTexture():SetDesaturated(not enable);
end
function tab:SetHighlight(enable)
if not enable then
self.selected:Hide();
else
self.selected:Show();
end
end
frame.tab = tab
end
function TacticFrame:CreateHeader()
local frame = self
local id = NEXT_HEADER_ID + 1
NEXT_HEADER_ID = id
local HeaderFrame = CreateFrame("FRAME", "CzechQuestsTacticHeader" .. id, frame, "EncounterInfoTemplate")
HeaderFrame:SetSize(self:GetParent():GetWidth() - 10, 30)
addon.API.UpdateCzechFont(
HeaderFrame.description,
CzechQuestsAddon_Store.config.TACTIC_TEXT_FONT_NAME,
CzechQuestsAddon_Store.config.TACTIC_TEXT_FONT_SIZE
)
HeaderFrame.button.abilityIcon:Hide()
HeaderFrame.button.portrait:Hide()
HeaderFrame.button.icon2:Hide()
HeaderFrame.button.icon3:Hide()
HeaderFrame.button.icon4:Hide()
HeaderFrame.button.expandedIcon:SetPoint("TOPLEFT", HeaderFrame.button, "TOPLEFT", 10, -6);
HeaderFrame.button.expandedIcon:SetText("+")
HeaderFrame.expanded = false
HeaderFrame.button.title:SetPoint("TOPLEFT", HeaderFrame, "TOPLEFT", 40, -7);
HeaderFrame.button.title:SetWidth(self:GetParent():GetWidth() - 110)
for i = 1, #HeaderFrame.Bullets do
HeaderFrame.Bullets[i]:Hide()
end
wipe(HeaderFrame.Bullets)
for _, icon in ipairs(HeaderFrame.button.icons) do
icon:Hide();
end
HeaderFrame.description:SetWidth(HeaderFrame:GetWidth() - 20)
HeaderFrame.description:Hide()
HeaderFrame.overviewDescription:Hide()
HeaderFrame.descriptionBG:Hide()
HeaderFrame.descriptionBGBottom:Hide()
function HeaderFrame:Open()
local parent = self
parent.button.expandedIcon:SetText("-")
parent.button.expandedIcon:SetPoint("TOPLEFT", HeaderFrame.button, "TOPLEFT", 10, -5);
parent.description:Show()
parent.descriptionBG:Show()
parent.descriptionBGBottom:Show()
end
function HeaderFrame:Close()
local parent = self
parent.button.expandedIcon:SetText("+")
parent.button.expandedIcon:SetPoint("TOPLEFT", HeaderFrame.button, "TOPLEFT", 10, -6);
parent.description:Hide()
parent.descriptionBG:Hide()
parent.descriptionBGBottom:Hide()
end
HeaderFrame.button:SetScript("OnClick", function(self)
local parent = self:GetParent()
parent.expanded = not parent.expanded
if parent.expanded then
parent:Open()
else
parent:Close()
end
frame:UpdateHeaderPositions()
end)
table.insert(self.headers, HeaderFrame)
return HeaderFrame
end
function TacticFrame:UpdateHeaderPositions()
local yOffset = -40
for _, header in ipairs(self.headers) do
header:SetPoint("BOTTOMLEFT", self.inform, "BOTTOMLEFT", 0, yOffset)
if header.expanded then
yOffset = yOffset - header.description:GetHeight() - 50
else
yOffset = yOffset - 30
end
end
end
function TacticFrame:ClearHeaders()
for _, header in ipairs(self.headers) do
header:Hide()
header:SetParent(nil)
header = nil
end
wipe(self.headers)
end

View file

@ -3004,10 +3004,12 @@ addon.data.quest[8770] = {
}
addon.data.quest[8787] = {
titleMale = "Soupravy výzbroje do terénu",
objectiveMale = "Přineste 8 sad odolné zbroje a 8 sad těžké zbroje do Merok Longstride poblíž Hive'Regal. Pro splnění tohoto úkolu musíte také přinést Logistický úkolový briefing VII.",
descriptionMale = "Stateční dobrovolníci z Orgrimmarské legie dorazili na Silithus, aby nám pomohli v naší věci. Jejich zásoby zbrojních souprav se během cesty nějak ztratily. Získejte dávku souprav zbroje a doručte je Merokovi Longstridovi do místa, kde se nachází tábor Orgrimmarské legie.",
objectiveMale = "Přines 8 Rugged Armor Kits a 8 Heavy Armor Kits k Merokovi Longstridovi poblíž Hive'Regal. Musíš také přinést Logistics Task Briefing VII, abys tento úkol splnil.",
objectiveFemale = "Přines 8 Rugged Armor Kits a 8 Heavy Armor Kits k Merokovi Longstridovi poblíž Hive'Regal. Musíš také přinést Logistics Task Briefing VII, abys tento úkol splnila.",
descriptionMale = "Stateční dobrovolníci z Orgrimmar Legion dorazili na Silithus, aby nám pomohli v naší věci. Jejich zásoby zbrojních souprav se během cesty nějak ztratily. Získej dávku souprav zbroje a doruč je Merokovi Longstride na místo, kde se nachází tábor Orgrimmar Legionu.",
descriptionFemale = "Stateční dobrovolníci z Orgrimmar Legion dorazili na Silithus, aby nám pomohli v naší věci. Jejich zásoby zbrojních souprav se během cesty nějak ztratily. Získej dávku souprav zbroje a doruč je Merokovi Longstride na místo, kde se nachází tábor Orgrimmar Legion.",
progressMale = "Máš pro mě něco, <name>?",
completionMale = "Ach, ano... Rozdám je vojákům, <name>. Orgrimmarská legie ti děkuje!",
completionMale = "Ach, ano... Rozdám je vojákům, <name>. Orgrimmar Legion ti děkuje!",
}
addon.data.quest[8772] = {
titleMale = "Cíl: Hive'Zora Waywatchers",
@ -7224,10 +7226,13 @@ addon.data.quest[2857] = {
}
addon.data.quest[2855] = {
titleMale = "Divoká kožená ramena",
objectiveMale = "Přineste Jangdorovi Swiftstriderovi do tábora Mojache 6 sad silného brnění a divokého psa.",
descriptionMale = "Ramena z divoké kůže velmi dobře podpírají postavu nositele a poskytují vynikající ochranu horních částí paží i ramen. Stejně jako u všech brnění z divoké kůže je do předmětu vloženo náhodné, ale velmi účinné vylepšení, které je do něj všíváno.\n\nPro tento vzor budu potřebovat šest silných souprav zbroje a divokou kůži. To by pro vás neměla být příliš vysoká zakázka.",
progressMale = "Máte k dispozici šest sad tlustého brnění a divokou révu, které potřebuji?\n\nPovažujte výrobu souprav zbrojí za lekci stabilního a spolehlivého řemesla; důsledná metoda výroby, kterou si osvojíte při práci na těchto soupravách, vám pomůže rozvinout vaše dovednosti pro složitou práci potřebnou k výrobě divokých kožených zbrojí.\n\nKaždá lekce má svůj účel, <name>. Je důležité, abys každou z nich náležitě pojal.",
completionMale = "Tyto soupravy brnění jsou kvalitní, <name>. Jestli je něco, co požaduji nejen u své práce, ale i u práce těch, které učím, je to kvalita.\n\nUdělal jsi dobře, že sis tento vzor zasloužil; doufám, že ti přinese stejnou odměnu jako mně.",
objectiveMale = "Přines 6 Thick Armor Kits a Wildvine Jangdorovi Swiftstriderovi do Camp Mojache.",
descriptionMale = "Ramena Wild Leather velmi dobře podpírají postavu nositele a poskytují vynikající ochranu horním částem paží i ramen. Stejně jako u všech Wild Leather je do předmětu vloženo náhodné, ale velmi účinné vylepšení, které se do něj všívá.\n\nPro tento vzor budu potřebovat šest silných sad zbroje a wildvine. To by pro tebe neměl být příliš velký požadavek.",
descriptionFemale = "Ramena Wild Leather podpírají postavu nositele velmi dobře a poskytují vynikající ochranu horních částí paží i ramen. Stejně jako u všech zbrojí Wild Leather je do předmětu vloženo náhodné, ale velmi účinné vylepšení, které je do něj všíváno.\n\nPro tento vzor budu potřebovat šest silných zbrojových sad a wildvine. To by pro tebe neměl být příliš vysoký požadavek.",
progressMale = "Máš k dispozici šest sad tlustého brnění a divokou révu, které potřebuji?\n\nPovažuj výrobu souprav zbrojí za lekci stabilního a spolehlivého řemesla; důsledná metoda výroby, kterou si osvojíš při práci na těchto soupravách, ti pomůže rozvinout tvé dovednosti pro složitou práci potřebnou k výrobě Wild Leather armors.\n\nKaždá lekce má svůj účel, <name>. Je důležité, abys každou z nich náležitě pojal.",
progressFemale = "Máš k dispozici šest sad tlustého brnění a divokou révu, které potřebuji?\n\nPovažuj výrobu souprav zbrojí za lekci stabilního a spolehlivého řemesla; důsledná metoda výroby, kterou si osvojíš při práci na těchto soupravách, ti pomůže rozvinout tvoje dovednosti pro složitou práci potřebnou k výrobě Wild Leather armors.\n\nKaždá lekce má svůj účel, <name>. Je důležité, abys každou z nich náležitě pojal.",
completionMale = "Tyto soupravy brnění jsou kvalitní, <name>. Jestli je něco, co požaduji nejen u své práce, ale i u práce těch, které učím, je to kvalita.\n\nUdělal jsi dobře, že sis tento vzor zasloužil; doufám, že ti přinese stejné odměny, jaké přinesl mně.",
completionFemale = "Tyto soupravy brnění jsou kvalitní, <name>. Jestli je něco, co požaduji nejen u své práce, ale i u práce těch, které učím, je to kvalita.\n\nUdělal jsi dobře, že sis tento vzor zasloužila; doufám, že ti přinese stejné odměny, jaké přinesl mně.",
}
addon.data.quest[2849] = {
titleMale = "Kožená vesta Wild",

View file

@ -358,8 +358,8 @@ addon.data.quest[83181] = {
addon.data.quest[78462] = {
titleMale = "Ozvěny soucitu",
objectiveMale = "Uzdrav 5 zemských obyvatel ve vesnici Freywold.",
descriptionMale = "To poslední, co ona dnes očekávala, bylo, že uvidí Baelgrima - natož že mu pomůže. Ale vzhledem k tomu, že Coreway byla poškozena, asi nemá na výběr. Ona... neví, jak si to spočítat. Je jen logické to přijmout. <Adelgonn začne ve svých kamenných rukou hrubě drtit houbařovo maso. Znepokojivě rychle se z něj stane rozmělněná kaše.> Tady. Smíchej to s bahnem a nanes na zraněného.",
descriptionFemale = "To poslední, co ona dnes očekávala, bylo, že uvidí Baelgrima - natož že jí pomůže. Ale vzhledem k tomu, že Coreway byla poškozena, asi nemá na výběr. Ona... neví, jak si to spočítat. Je jen logické to přijmout. <Adelgonn začne ve svých kamenných rukou hrubě drtit houbařovo maso. Znepokojivě rychle se z něj stane rozmělněná kaše.> Tady. Smíchej to s bahnem a nanes na zraněného.",
descriptionMale = "To poslední, co jsem dnes očekávala, bylo, že uvidím Baelgrim - natož že mi pomůže. Ale vzhledem k tomu, že Coreway byla poškozena, asi nemá na výběr. Já... nevím, jak si to spočítat. Je jen logické to přijmout. <Adelgonn začne ve svých kamenných rukou hrubě drtit houbařovo maso. Znepokojivě rychle se z něj stane rozmělněná kaše.> Tady. Smíchej to s bahnem a nanes na zraněného.",
descriptionFemale = "To poslední, co jsem dnes očekávala, bylo, že uvidím Baelgrima - natož že mi pomůže. Ale vzhledem k tomu, že Coreway byla poškozena, asi nemá na výběr. Já... nevím, jak si to spočítat. Je jen logické to přijmout. <Adelgonn začne ve svých kamenných rukou hrubě drtit houbařovo maso. Znepokojivě rychle se z něj stane rozmělněná kaše.> Tady. Smíchej to s bahnem a nanes na zraněného.",
progressMale = "Se zvířaty a elementály jsem už bojovala, ale s nerubiány? Můj lid jsou řemeslníci a horníci - ne válečníci.",
completionMale = "<Adelgon hodnotí Moiru, Baelgrima a nakonec i tebe.>\n\nJá... děkuji. Už dlouho se mi nedostalo pomoci od cizinců - nebo od Přísežníků.",
completionFemale = "<Adelgonn hodnotí Moiru, Baelgrima a nakonec i tebe.>\n\nJá... děkuji. Už dlouho se mi nedostalo pomoci od cizinců - nebo od Přísežníků.",
@ -423,8 +423,8 @@ addon.data.quest[78573] = {
addon.data.quest[79553] = {
titleMale = "Přírodní lék",
objectiveMale = "Nasbírej 10 houbařských kusů v Orecregu.",
descriptionMale = "Většinu zraněných jsme stabilizovaly. Ale mnozí z těch, které jste zachránili, potřebují další pomoc. Nerubiáni často bojují žíravými jedy, které rozežírají i naši kamennou kůži. Houbařské maso naši léčitelé již dlouho využívají pro jeho léčivou sílu. Houbařské převzetí lomu je jednou ze světlých stránek naší situace. <Na okamžik z Adelgonnova výrazu zmizí obavy.> My Nespoutaní si takových okolností vážíme. Přizpůsobit se je krásná věc. Nemohu opustit Ebonin bok. Pomůžeš mi?",
descriptionFemale = "Většinu zraněných jsme stabilizovaly. Ale mnozí z těch, které jste zachránily, potřebují další pomoc. Nerubiáni často bojují žíravými jedy, které rozežírají i naši kamennou kůži. Houbařské maso naši léčitelé již dlouho využívají pro jeho léčivou sílu. Houbařské převzetí lomu je jednou ze světlých stránek naší situace. <Na okamžik z Adelgonnina výrazu zmizí obavy.> My Nespoutané si takových okolností vážíme. Přizpůsobit se je krásná věc. Nemohu opustit Ebonin bok. Pomůžeš mi?",
descriptionMale = "Většinu zraněných jsme stabilizovaly. Ale mnozí z těch, které jsi zachránil, potřebují další pomoc. Nerubians často bojují s žíravými jedy, které rozežírají i naše kamenné tělo. Fungarian flesh naši léčitelé již dlouho využívají pro jeho léčivou sílu. Převzetí lomu Fungarians je jednou z nečekaných výhod naší situace. <Adelgonn vypadá vážně pyšně.> Přizpůsobit se je krásná věc. Nemohu opustit Ebona bok. Pomůžeš mi?",
descriptionFemale = "Většinu zraněných jsme stabilizovaly. Ale mnozí z těch, které jsi zachránila, potřebují další pomoc. Nerubians často bojují s žíravými jedy, které rozežírají i naše kamenné tělo. Fungarian flesh naši léčitelé již dlouho využívají pro jeho léčivou sílu. Převzetí lomu Fungarians je jednou z nečekaných výhod naší situace, na kterou se přizpůsobíme. <Adelgonn vypadá vážně pyšně.> Přizpůsobíme se, jak to Unbound vždy dělají. Nemohu opustit Ebona bok. Pomůžeš mi?",
progressMale = "Prosím, pospěšte si. Někteří zranění potřebují okamžitou péči.",
progressFemale = "Prosím, pospěš si. Některé zraněné potřebují okamžitou péči.",
completionMale = "Nyní si můžeme vyrobit léčivé obklady...",
@ -519,7 +519,8 @@ addon.data.quest[83084] = {
addon.data.quest[78463] = {
titleMale = "Stavební bloky",
objectiveMale = "Nasbírej 20 třpytivých rud v Orecregu.",
descriptionMale = "Lom je zaplaven fungariány a přilehlé těžební tunely jsou zavalené. Na jeho renovaci teď nemáme čas. Během průzkumu jsem na poli viděl poměrně velké množství opuštěné rudy. To by byl začátek pro kritickou opravu Corewaye... <Baelgrim si povzdechne a zachmuřeně se podívá na zraněné Nesvázané zemáky všude kolem nás.> Jsem tu potřeba. S Adelgonnovými lidmi. S mými lidmi. Nasbíráš rudu místo mě?",
descriptionMale = "Lom je zaplaven fungariány a přilehlé těžební tunely jsou zavalené. Na jeho renovaci teď nemáme čas. Během průzkumu jsem na poli viděl poměrně velké množství opuštěné rudy. To by byl začátek pro kritickou opravu Coreway, ale... <Baelgrim si povzdechne a zachmuřeně se podívá na zraněné Unbound zemáky všude kolem nás.> Jsem tu potřeba. S lidmi Adelgonna. S mými lidmi. Nasbíráš rudu místo mě?",
descriptionFemale = "Lom je zaplaven fungariány a přilehlé těžební tunely jsou zavalené. Na jeho renovaci teď nemáme čas. Během průzkumu jsem na poli viděla poměrně velké množství opuštěné rudy. To by byl začátek pro kritickou opravu Coreway, ale... <Baelgrim si povzdechne a zachmuřeně se podívá na zraněné Unbound zemáky všude kolem nás.> Jsem tu potřebná. S lidmi Adelgonna. S mými lidmi. Nasbíráš rudu místo mě?",
progressMale = "Nasbírej co nejvíce rudy. Naši lidé jsou naší prioritou, ale Coreway musí být stále opravena.",
completionMale = "Dobrý. Nevrátíme se tedy s prázdnýma rukama.",
}
@ -540,7 +541,8 @@ addon.data.quest[82792] = {
}
addon.data.quest[83500] = {
titleMale = "Zekvir, pobočník zvěstovatele",
objectiveMale = "Porazte Zekvira, pobočníka Posla, v jeho vlastním dómu.",
objectiveMale = "Poraz Zekvira, Hand of the Harbinger, v jeho vlastním doupěti.",
objectiveFemale = "Poraz Zekvira, Ruku Harbinger, ve jeho vlastním doupěti.",
descriptionMale = "Budeme si muset dávat pozor na Zekvira, až se vydáme na průzkum do delv. Myslím, že ještě nejsme dost silní na to, abychom se mu postavili, ale budeme! Budeme pokračovat v průzkumu a získávání pokladů, dokud nebudeme dost silní na to, abychom vypátrali jeho doupě a porazili ho.",
descriptionFemale = "Budeme si muset dávat pozor na Zekvira, až se vydáme na průzkum do delv. Myslím, že ještě nejsme dost silné na to, abychom se mu postavily, ale budeme! Budeme pokračovat v průzkumu a získávání pokladů, dokud nebudeme dost silné na to, abychom vypátraly jeho doupě a porazily ho.",
completionMale = "Dokázali jsme to! Udělali jsme toto místo bezpečné pro všechny dobrodruhy.\n\nTo by mělo Xal'atath dostat do těžké situace, když jí teď chybí jeden z jejích nejmocnějších přisluhovačů.",
@ -639,8 +641,8 @@ addon.data.quest[83082] = {
addon.data.quest[79526] = {
titleMale = "Sedition",
objectiveMale = "Promluv si s Merrixem ve Vzestupu radních v Dornogalu.",
descriptionMale = "<Plakát zní:> MERRIX je KORUPT! STEELVEIN je SLABÝ! Nedokážou ochránit zemské! Nezajímají se o ně! Plivou na edikty! Merrix byl PODPLACEN, aby znovu otevřel Steelveinovu pašeráckou operaci! Steelvein se schovává za Merrixovu autoritu! Berou si z tvých kapes, aby si nacpali ty své! NEVĚŘTE JEJICH LŽÍM!",
descriptionFemale = "<Plakát zní:> MERRIX je KORUPT! STEELVEIN je SLABÝ! Nedokážou ochránit zemské! Nezajímají se o ně! Plivou na edikty! Merrix byl PODPLACEN, aby znovu otevřel Steelveinovu pašeráckou operaci! Steelvein se schovává za Merrixovu autoritu! Berou si z tvých kapes, aby si nacpali ty své! NEVĚŘ SVÝM LŽÍM!",
descriptionMale = "<Plakát zní:> MERRIX je CORRUPT! STEELVEIN je SLABÝ! Nedokážou ochránit zemáka! Nezajímají se o něj! Plivou na Edikty! MERRIX byl UPLATNĚN, aby znovu otevřel Steelveinovu pašeráckou operaci! STEELVEIN se schovává za MERRIXovu autoritu! Berou si z tvých kapes, aby si nacpali ty své! NEVĚŘUJTE JEJICH LŽÍM!",
descriptionFemale = "<Plakát zní:> MERRIX je ZKAŽENÝ! STEELVEIN je SLABÝ! Nedokážou ochránit země! Nezajímají se o ně! Plivou na Edikty! MERRIX byl PODPLACEN, aby znovu otevřel Steelveinovu pašeráckou operaci! STEELVEIN se schovává za MERRIXovu autoritu! Berou si z tvých kapes, aby si nacpali ty své! NEVĚŘTE JEJICH LŽÍM!",
completionMale = "Ano, jsem si vědom situace.\n\nPoněkud mi to narušilo ráno.",
}
addon.data.quest[81661] = {
@ -704,7 +706,7 @@ addon.data.quest[79523] = {
addon.data.quest[79724] = {
titleMale = "Expedice na Titanic!",
objectiveMale = "Setkej se s Rannanem u Tří štítů.",
descriptionMale = "Náš přítel obchodník nám vyprávěl o malých ostrůvcích u severovýchodního pobřeží, kterým se říká 'Tři štíty'. Kdysi dávno tam prý byla velká aktivita titánů. Mně ta 'aktivita' připadala jako titanský výzkum a vývoj. Vzrušující věc! S Tuberrosem se tam chystáme, abychom to prozkoumali. Tharessa, moje nová učednice z Dračí šupiny, jde s námi, aby viděla opravdové profesionály při práci. Nechceš se k nám přidat?",
descriptionMale = "Náš přítel obchodník nám vyprávěl o malých ostrůvcích u severovýchodního pobřeží, kterým se říká 'The Three Shields'. Kdysi dávno tam prý byla velká aktivita titánů. Mně ta 'aktivita' připadala jako titanský výzkum a vývoj. Vzrušující věc! S Tuberrosem se tam chystáme, abychom to prozkoumali. Tharessa, moje nová učednice z Algari Expedition, jde s námi, aby viděla opravdové profesionály při práci. Nechceš se k nám přidat?",
completionMale = "Dobře, jsem v pořádku. Je to jen škrábnutí.\n\nAle na sundání jednoho malého gorloka jsme museli být tři, takže je dobře, že jsi se rozhodl přidat se k nám.",
completionFemale = "Dobře, jsem v pořádku. Je to jen škrábnutí.\n\nAle na sundání jednoho malého gorloka jsme museli být tři, takže je dobře, že ses rozhodla přidat se k nám.",
}
@ -712,6 +714,7 @@ addon.data.quest[78759] = {
titleMale = "Probudit obra",
objectiveMale = "Aplikuj elementární mast na horského obra pro Harmota.",
descriptionMale = "U Corewaye, tahle věc má náboj! Spojením léčivého bahna s tavicími vlastnostmi ohnivého medu jsme získali mast, která by dokázala probudit celou horu! Což je přesně to, co uděláš. Vezmi směs k našemu zraněnému příteli ve Farneeho rybníku a naplácej mu ji na kůži! Mělo by to stačit, aby se probral a zmírnila se bolestivost. Doufejme, že tak či onak.",
descriptionFemale = "U Corewaye, tahle věc má náboj! Spojením léčivého bahna s tavicími vlastnostmi ohnivého medu jsme získali mast, která by dokázala probudit celou horu! Což je přesně to, co uděláš. Vezmi směs k naší zraněné přítelkyni ve Farneeho rybníku a naplácej ji na kůži! Mělo by to stačit, aby se probrala a zmírnila se bolestivost. Doufejme, že tak či onak.",
progressMale = "To buď obra probudí a dá ho do pořádku, nebo...\n\nNo, o té druhé možnosti raději nemluvme. Měj trochu víry v tento proces!",
completionMale = "No, podívej se na to!\n\nTisíce let dřímá na úpatí vodopádu a probudí se bez jediného zařvání nebo dupnutí nohou.\n\nHah! A Farnee si dělala starosti!\n\nS výrobou té masti jsi si vedl skvěle, <name>. Farnee i já ti patříme velký dík.\n\nNáš nový přítel vypadá taky vděčně!",
completionFemale = "No, podívej se na to!\n\nTisíce let dřímá na úpatí vodopádu a probudí se bez jediného zařvání nebo dupnutí nohou.\n\nHah! A Farnee si dělala starosti!\n\nS výrobou té masti jsi si vedla skvěle, <name>. Farnee i já ti patříme velký dík.\n\nNáš nový přítel vypadá taky vděčně!",
@ -810,8 +813,8 @@ addon.data.quest[79544] = {
addon.data.quest[79543] = {
titleMale = "Dornogalův dobrodinec",
objectiveMale = "Rozděl pašované zboží v okolí Dornogalu.",
descriptionMale = "Jsi v jedinečném postavení, <name>. V pozici, ve které se můžeš učit. Setkal ses s těmi, kteří by mohli tohoto 'ohýbače ediktů' postavit před soud, ale co lidé Dornogalu? Co si o tomhle Steelveinovi myslí zemáci? Dělej si ze mě legraci. Vezmi pašované zboží, které jsi zachytil, a odnes je adresátům. Řekni jim, že jde o dar od 'společného přítele'. Možná budeš překvapen, když zjistíš, kdo má z těchto... nezákonných činů prospěch.",
descriptionFemale = "Jsi v jedinečném postavení, <name>. V pozici, ve které se můžeš učit. Setkal jsi se s těmi, kteří by mohli tohoto 'ohýbače ediktů' postavit před soud, ale co lidé Dornogalu? Co si o tomhle Steelveinovi myslí zemáci? Dělej si ze mě legraci. Vezmi pašované zboží, které jsi zachytila, a odnes je adresátům. Řekni jim, že jde o dar od 'společného přítele'. Možná budeš překvapen, když zjistíš, kdo má z těchto... nezákonných činů prospěch.",
descriptionMale = "Jsi v jedinečném postavení, <name>. V pozici, ve které se můžeš učit. Setkal ses s těmi, kteří by mohli tohoto 'Bender of Edicts' postavit před soud, ale co lidé Dornogalu? Co si o tomhle Steelveinovi myslí zemáci? Dělej si ze mě legraci. Vezmi pašované zboží, které jsi zachytil, a odnes je adresátům. Řekni jim, že jde o dar od 'společného přítele'. Možná budeš překvapen, když zjistíš, kdo má z těchto... nezákonných činů prospěch.",
descriptionFemale = "Jsi v jedinečném postavení, <name>. V pozici, ve které se můžeš učit. Setkala jsi se s těmi, kteří by mohli tohoto 'Bender of Edicts' postavit před soud, ale co lidé Dornogalu? Co si o tomhle Steelveinovi myslí zemáci? Dělej si ze mě legraci. Vezmi pašované zboží, které jsi zachytila, a odnes je adresátům. Řekni jim, že jde o dar od 'společného přítele'. Možná budeš překvapená, když zjistíš, kdo má z těchto... nezákonných činů prospěch.",
completionMale = "Harthan se zmínil o Ardgrinovi, říkáš?\n\nJe to obchodní dozorce ze Zvonících hlubin. Pokud se pohádal se Steelveinem, rozhodně mě to znepokojuje.",
}
addon.data.quest[78747] = {
@ -855,8 +858,8 @@ addon.data.quest[78754] = {
addon.data.quest[78749] = {
titleMale = "Kdo řídí tento skvělý podnik?",
objectiveMale = "Zabij Grand-Heisterku Bokk.",
descriptionMale = "Zatímco ses zabýval tunely a dělostřelci, viděla jsem zvláštního kobolda, jak jde do jeskyně na severozápadě. Zdělo se, že si ho koboldi váží víc než ostatních, říkali mu velmistr Bokk a nabízeli mu jídlo, kterému říkáš 'sýr'. To ve mně vyvolává dojem, že je to skutečný vládce. Pokud je ten kobold ve skutečnosti skutečným Wardem této operace, pak bychom měli využít příležitosti a srazit ho k zemi. Setkáme se v této jeskyni.",
descriptionFemale = "Zatímco jsem se zabývala tunely a dělostřelci, viděla jsem zvláštního kobolda, jak jde do jeskyně na severozápadě. Zdělo se, že si ho koboldi váží víc než ostatních, říkali mu velmistr Bokk a nabízeli mu jídlo, kterému říkáš 'sýr'. To ve mně vyvolává dojem, že je to skutečný vládce. Pokud je ten kobold ve skutečnosti skutečným Wardem této operace, pak bychom měly využít příležitosti a srazit ho k zemi. Setkáme se v této jeskyni.",
descriptionMale = "Zatímco ses zabýval tunely a dělostřelci, viděla jsem zvláštního kobolda, jak jde do jeskyně na severozápadě. Zdělo se, že si ho koboldi váží víc než ostatních, říkali mu Grand-Heister Bokk a nabízeli mu jídlo, kterému říkáš 'sýr'. To ve mně vyvolává dojem, že je to skutečný vládce. Pokud je ten kobold ve skutečnosti skutečným Wardem této operace, pak bychom měli využít příležitosti a srazit ho k zemi. Setkáme se v této jeskyni.",
descriptionFemale = "Zatímco jsem se zabývala tunely a dělostřelci, viděla jsem zvláštního kobolda, jak jde do jeskyně na severozápadě. Zdělo se, že si ho koboldi váží víc než ostatních, říkali mu Grand-Heister Bokk a nabízeli mu jídlo, kterému říkáš 'sýr'. To ve mně vyvolává dojem, že je to skutečný vládce. Pokud je ten kobold ve skutečnosti skutečným Wardem této operace, pak bychom měly využít příležitosti a srazit ho k zemi. Setkáme se v této jeskyni.",
completionMale = "Ráda tě vidím, <name>. \n\nCítím, jak mi drtí žaludek - to je známka úzkosti. Korgran se každým okamžikem blíží ke svému uzavření a pak bude toto místo v mé péči. \n\nJe to velká zodpovědnost. Ale věřím, že jsem na to připravena.",
completionFemale = "Ráda tě vidím, <name>.\n\nCítím, jak mi drtí žaludek - to je známka úzkosti. Korgran se každým okamžikem blíží ke svému uzavření a pak bude toto místo v mé péči.\n\nJe to velká zodpovědnost. Ale věřím, že jsem na to připravena.",
}
@ -1029,7 +1032,7 @@ addon.data.quest[80214] = {
}
addon.data.quest[81595] = {
titleMale = "Sezónní začátek",
objectiveMale = "Projděte si odměny, které nabízí Reno Jackson, Sir Finley Mrrgglton a Delverův průvodce.",
objectiveMale = "Projděte si odměny, které nabízí Reno Jackson, Sir Finley Mrrgglton a Delver's Guide.",
descriptionMale = "Odhalil jsem spoustu nových pokladů, které můžeš najít v delvách! Není čas čekat. Připravím tě na základy, abys mohl vyrazit!",
descriptionFemale = "Odhalil jsem spoustu nových pokladů, které můžeš najít v delvách! Není čas čekat. Připravím tě na základy, abys mohla vyrazit!",
completionMale = "Není nic lepšího než hledání pokladů! Budeme to potřebovat.\n\nCo? Vypadá to, že někdo spěchá.",
@ -1316,8 +1319,7 @@ addon.data.quest[81639] = {
addon.data.quest[79147] = {
titleMale = "Letecký výcvik 101",
objectiveMale = "Pomoz Kurdranovi vycvičit rekruty ve vzdušném manévrování.",
descriptionMale = "Nyní, když jsou přítomní všichni naši rekruti, je nejvyšší čas vzlétnout do vzduchu. Vidíte, co jsem udělal? Nejvyšší čas? Ne? Tak to je správně. Budeme tyhle nováčky zkoušet. Začneme se základy vzdušného manévrování v rychlosti a budeme se snažit simulovat přesné létání, které můžeme očekávat pod zemí. Potom se podíváme, co tihle havrani opravdu umí - Thrall a Lufsela mají něco speciálního.",
descriptionFemale = "Nyní, když jsou přítomní všichni naši rekruti, je nejvyšší čas vzlétnout do vzduchu. Vidíš, co jsem udělal? Nejvyšší čas? Ne? Tak to je správně. Budeme tyhle nováčky zkoušet. Začneme se základy vzdušného manévrování v rychlosti a budeme se snažit simulovat přesné létání, které můžeme očekávat pod zemí. Potom se podíváme, co tihle havrani opravdu umí - Thrall a Lufsela mají něco speciálního.",
descriptionMale = "Nyní, když jsou přítomní všichni naši rekruti, je nejvyšší čas vzlétnout do vzduchu. Vidíš, co jsem udělal? Nejvyšší čas? Ne? Tak to je správně. Budeme tyhle nováčky zkoušet. Začneme se základy vzdušného manévrování v rychlosti a budeme se snažit simulovat přesné létání, které můžeme očekávat pod zemí. Potom se podíváme, co tihle havrani opravdu umí - Thrall a Lufsela mají něco speciálního.",
progressMale = "Dejme těmto novým jezdcům dobrý příklad. Veďte je po trati co nejrychleji.",
completionMale = "Tady to máte! Suroví rekruti z kamene, kteří se vznášejí na hřbetech ptáků z blesků. Důkaz, že Kurdran může naučit létat cokoli!\n\nAle ještě jsme neskončili.",
completionFemale = "Tady to máte! Suroví rekruti z kamene, kteří se vznášejí na hřbetech ptáků z blesků. Důkaz, že Kurdran dokáže naučit létat cokoli!\n\nAle ještě jsem neskončil.",
@ -1892,7 +1894,7 @@ addon.data.quest[83721] = {
titleMale = "Malý oceán krve",
objectiveMale = "Nasbírej dostatek nerubijské krve pro Shalbův experiment.",
objectiveFemale = "Nasbírej dostatek nerubijské krve pro Shalbaův experiment.",
descriptionMale = "Výborně! Konec se blíží! Ale i když se blížíme k dokončení, nemůžeme se obejít bez nejdůležitější části této genetické rovnice - bez krve. Potřebujeme malý oceán nerubijské krve. Aby však byla tato evoluční forma blbuvzdorná, musí krev pocházet od nejsilnějších nerubiánů, kteří existují. Ať už skyrazorských, nebo povznesených, na tom nezáleží. To nám zaručí, že budeme mít nejlepší dostupný genetický materiál. Takový materiál, jaký si Siesbarg zaslouží!",
descriptionMale = "Výborně! Konec se blíží! Ale i když se blížíme k dokončení, nemůžeme se obejít bez nejdůležitější části této genetické rovnice - bez krve. Potřebujeme malý oceán nerubijské krve. Aby však byla tato evoluční forma blbuvzdorná, musí krev pocházet od nejsilnějších nerubianů, kteří existují. Ať už skyrazor, nebo Ascended, na tom nezáleží. To nám zaručí, že budeme mít nejlepší dostupný genetický materiál. Takový materiál, jaký si Siesbarg zaslouží!",
progressMale = "Můj experiment se blíží ke konci, overcrawlere.",
completionMale = "Připravte se jste právě svědky dokonalosti!",
}
@ -3581,8 +3583,8 @@ addon.data.quest[82916] = {
}
addon.data.quest[83275] = {
titleMale = "Okouzlování výstroje",
objectiveMale = "Dokončete výukový kurz očarování předmětů pomocí předmětů získaných od Ellerdin nebo pomocí vlastních předmětů.",
objectiveFemale = "Dokonči výukový kurz očarování předmětů pomocí předmětů získaných od Ellerdin nebo pomocí vlastních předmětů.",
objectiveMale = "Dokonči výukový kurz očarování předmětů očarováním jakéhokoliv prstenu pomocí očarování získaného od Ellerdin, Enchant Ring - Glimmering Haste.",
objectiveFemale = "Dokonči výukový kurz očarování předmětů tím, že očaruješ jakýkoliv prsten pomocí očarování daného od Ellerdin, Enchant Ring - Glimmering Haste.",
descriptionMale = "Ahoj, Outlandere! Od tvého dramatického příchodu k našim břehům jsem slyšela o tvých hrdinských činech. My pozemšťané vítáme tvoji pomoc. Mohu tě naučit, jak očarovat tvoji výbavu pomocí surovin z mé země. K poražení našich nepřátel pomůže každý kousek síly.",
descriptionFemale = "Ahoj, Outlandere! Od tvého dramatického příchodu k našim břehům jsem slyšela o tvých hrdinských činech. My zemáci vítáme tvou pomoc. Mohu tě naučit, jak očarovat tvou výbavu pomocí surovin z mé země. K poražení našich nepřátel pomůže každý kousek síly.",
progressMale = "Kouzlo a prsten, které ti dala, se k sobě hodí. Můžeš také použít svůj vlastní.",
@ -3633,6 +3635,7 @@ addon.data.quest[82486] = {
addon.data.quest[83489] = {
titleMale = "Shromáždění všech gladiátorů!",
objectiveMale = "Doruč inzerát Hotharnovi k Contender's Gate v Dornogolu.",
objectiveFemale = "Doruč inzerát Hotharnovi k Contender's Gate v Dornogalu.",
descriptionMale = "Přijď jeden, přijď všichni, rovnou do Dornogal! Kromě obvyklého výběru mocného vybavení nabízeného v Contender's Gate si mohou začínající bojovníci a osvědčení gladiátoři zakoupit heraldické žetony, které lze použít k výrobě vybavení certifikovaného pro použití v arénách a na bojištích! Předlož tuto brožuru Hotharnovi a získej jich několik, na nás! - Aisha",
descriptionFemale = "Přijďte jeden, přijďte všichni, rovnou do Dornogal! Kromě obvyklého výběru mocného vybavení nabízeného v Contender's Gate si mohou začínající bojovníci a osvědčení gladiátoři zakoupit heraldické žetony, které lze použít k výrobě vybavení certifikovaného pro použití v arénách a na bojištích! Předlož tuto brožuru Hotharnovi a získej jich několik na náš účet! - Aisha",
completionMale = "Už jsem si říkal, kdy se objeví ti dychtiví bojovníci.\n\nJak jsem slíbil, tady je máte. Používejte je při zadávání řemeslných zakázek nebo při výrobě vlastního vybavení. Výsledek bude stejně mocný jako to, co prodává Lalandi, ale tyhle jsou skvělé, když hledáte něco upraveného podle svých představ. Pokud budeš potřebovat další, víš, kde mě najdeš.\n\nMáš otázky? Vezmi je na Forgegrounds.",
@ -3824,8 +3827,8 @@ addon.data.quest[83465] = {
titleMale = "Ara-Kara, město ozvěn",
objectiveMale = "Biergoth chce, abys zastavil operaci, která probíhá v Ara-Kara.",
objectiveFemale = "Biergoth chce, abys zastavila operaci, která probíhá v Ara-Kara.",
descriptionMale = "Obrátila se na nás Tulumun, agent nového kontaktu známého jako Vizier. Nečekal jsem, že k nám nerubian přijde pro pomoc, ale věc jeho prosby nás všechny zřejmě ohrožovala. Budu potřebovat, abys sestoupil do Azj-Kahet a infiltroval Ara-Kara, City of Echoes. Pokud je pravda, co mi řekl Tulumun, nemůžeme dopustit, aby se to, co tam dole spřádají, dostalo ven. Ukonči jejich operaci a výsledek mi doruč.",
descriptionFemale = "Obrátila se na mě Tulumun, agent nového kontaktu známého jako Vizier. Nečekala jsem, že k nám nerubian přijde pro pomoc, ale věc jeho prosby nás všechny zřejmě ohrožovala. Budu potřebovat, abys sestoupila do Azj-Kahet a infiltrovala Ara-Kara, City of Echoes. Pokud je pravda, co mi řekl Tulumun, nemůžeme dopustit, aby se to, co tam dole spřádají, dostalo ven. Ukonči jejich operaci a výsledek mi doruč.",
descriptionMale = "Obrátila se na nás Tulumun, agent nového kontaktu známého jako Vizier. Nečekala jsem, že k nám nerubian přijde pro pomoc, ale věc jeho prosby nás všechny zřejmě ohrožovala. Budu potřebovat, abys sestoupil do Azj-Kahet a infiltroval Ara-Kara, City of Echoes. Pokud je pravda, co mi Tulumun řekl, nemůžeme dopustit, aby se to, co tam dole spřádají, dostalo ven. Ukonči jejich operaci a přines důkazy o tom, co najdeš.",
descriptionFemale = "Obrátila se na mě Tulumun, agent nového kontaktu známého jako Vizier. Nečekala jsem, že k nám nerubian přijde pro pomoc, ale věc jeho prosby nás všechny zřejmě ohrožovala. Budu potřebovat, abys sestoupila do Azj-Kahet a infiltrovala Ara-Kara, City of Echoes. Pokud je pravda, co mi Tulumun řekl, nemůžeme dopustit, aby se to, co tam dole spřádají, dostalo ven. Ukonči jejich operaci a přines mi důkazy toho, co najdeš.",
progressMale = "Pohybuj se rychle. Jejich operaci nelze dovolit, aby se uskutečnila.",
completionMale = "Černá krev? Nejsem si jistá, co to je, ale když to nějaký nerubian nazve odporným, vezmu jeho slovo za své.\n\nTady, vezmi si to za svou námahu.",
}
@ -3897,7 +3900,7 @@ addon.data.quest[82502] = {
}
addon.data.quest[82506] = {
titleMale = "Worldsoul: Darkflame Cleft",
objectiveMale = "Dokončete dungeon Darkflame Cleft na obtížnost Mythic nebo vyšší.",
objectiveMale = "Dokonči dungeon Darkflame Cleft na obtížnost Mythic nebo vyšší.",
descriptionMale = "Koboldi! Mohou to být zákeřné potvory, ale... ach, nemůžu si pomoct, ale cítím s nimi jistou spřízněnost! Jejich malé svíčky... udržující jejich malé plamínky... <Faerin si s úsměvem přitiskne ruku na hruď.> Tak stateční! Byli by to ideální Světlonoši, jen kdyby se podělili! A... bylo by méně pravděpodobné, že ti vyškrábou oči. Zprávy o jejich aktivitách v Temnoplamenné štěrbině dělají zemáka starosti. I když bych si přál, aby koboldi byli laskavější, nemůžeme dopustit, aby ubližovali našim spojencům. Prosím, prošetři to!",
descriptionFemale = "Koboldi! Mohou to být zákeřné potvory, ale... ach, nemůžu si pomoct, ale cítím s nimi jistou spřízněnost! Jejich malé svíčky... udržující jejich malé plamínky... <Faerin si s úsměvem přitiskne ruku na hruď.> Tak stateční! Byli by to ideální Světlonoši, jen kdyby se podělili! A... bylo by méně pravděpodobné, že ti vyškrábou oči. Zprávy o jejich aktivitách v Temnoplamenné štěrbině dělají zemákům starosti. I když bych si přál, aby koboldi byli laskavější, nemůžeme dopustit, aby ubližovali našim spojencům. Prosím, prošetři to!",
}
@ -4557,7 +4560,7 @@ addon.data.quest[78954] = {
}
addon.data.quest[78689] = {
titleMale = "Když to vede, tak to krvácí",
objectiveMale = "Poraz vůdce Kobysů, kteří obléhají Velhanův nárok.",
objectiveMale = "Poraz vůdce kobyss, kteří obléhají Velhan's Claim.",
descriptionMale = "Všechno stoupá a padá na vůdcovství, <name>. S dobrým vůdcem může jednotka dosáhnout téměř čehokoli. Se špatným vůdcem nastává chaos a úspěch se vzdaluje z dosahu. To jsem zažil na vlastní kůži. Bez vůdců se obléhání kobysů zlomí jako vlna a všechno ostatní, co tu děláme, se stane jednodušším. Viděl jsem tři kobysy, kteří podle všeho vedou ostatní - označím ti jejich polohu na mapě. Vypořádej se s nimi a my budeme moci mnohem lépe pomoci Velhanovu nároku.",
progressMale = "Našli jste jejich vůdce? Vypadají silně, ale jsem si jistý, že na tento úkol stačíte.",
completionMale = "Vynikající. To nás a kobyss postaví do rovnější pozice. Alespoň co se týče vedení.\n\nStále nás sice početně převyšují, ale popořadě.",
@ -4614,7 +4617,7 @@ addon.data.quest[83532] = {
titleMale = "Rybářské derby Hallowfall",
objectiveMale = "Chyť tyto trofejní ryby dříve, než vyprší bonus Derby Dasher: Crystalline Sturgeon, Specular Rainbowfish, Sanguine Dogfish.",
descriptionMale = "Život je tu vždycky na hraně, <name>. Nerubiáni, kobysové, hlad - vždycky se najde něco, co je připraveno tě zabít. Proto si musíme najít chvíle, kdy si můžeme odpočinout a vyzkoušet si něco jiného než přežití. Třeba rybaření. Když jsem vyrůstala, můj táta vždycky trávil soboty rybařením. Říkával: 'Udělej si čas sám na sebe, jinak nemůžeš být efektivní pro ostatní.' A tak každou sobotu vyzývám lidi na Hallowfall Fishing Derby. Máš tři hodiny na to, abys ulovil trofejní rybu. Uvidíme, co mi přineseš!",
descriptionFemale = "Život je tu vždycky na hraně, <name>. Nerubiáni, kobysové, hlad - vždycky se najde něco, co je připraveno tě zabít. Proto si musíme najít chvíle, kdy si můžeme odpočinout a vyzkoušet si něco jiného než přežití. Třeba rybaření. Když jsem vyrůstala, můj táta vždycky trávil soboty rybařením. Říkával: 'Udělej si čas sama na sebe, jinak nemůžeš být efektivní pro ostatní.' A tak jsem si říkala, že je to pravda. Takže každou sobotu vyzývám lidi na Hallowfall Fishing Derby. Máš tři hodiny na to, abys ulovila trofejní rybu. Uvidíme, co mi přineseš!",
descriptionFemale = "Život je tu vždycky na hraně, <name>. Nerubiáni, kobyssové, hlad - vždycky se najde něco, co je připraveno tě zabít. Proto si musíme najít chvíle, kdy si můžeme odpočinout a vyzkoušet si něco jiného než přežití. Třeba rybaření. Když jsem vyrůstal, můj táta vždycky trávil soboty rybařením. Říkával: 'Udělej si čas pro sebe, jinak nemůžeš být efektivní pro ostatní.' A tak každou sobotu vyzývám lidi na Hallowfall Fishing Derby. Máš tři hodiny na to, abys ulovila trofejní rybu. Uvidíme, co mi přineseš!",
progressMale = "Nějaké kousnutí, <name>?",
completionMale = "To jsou skvělé úlovky, <name>! Nemůžu se dočkat, až uvidím, co chytíš příští týden!",
}
@ -4680,8 +4683,8 @@ addon.data.quest[82810] = {
addon.data.quest[83531] = {
titleMale = "Rybářské derby Hallowfall",
objectiveMale = "Chyť tyto trofejní ryby dříve, než vyprší bonus Derby Dasher: Dilly-Dally Dace, Dornish Pike, Azj-Kahet Slum Shark.",
descriptionMale = "Život je tu vždycky na hraně, <name>. Nerubiani, kobyss, hlad - vždycky se najde něco, co je připraveno tě zabít. Proto si musíme najít chvíle, kdy si můžeme odpočinout a vyzkoušet si něco jiného než přežití. Třeba rybaření. Když jsem vyrůstala, můj táta vždycky trávil soboty rybařením. Říkal: 'Udělej si čas sám na sebe, jinak nemůžeš být efektivní pro ostatní.' A tak jsem si říkala, že je to pravda. Takže každou sobotu vyzývám lidi na Hallowfall Fishing Derby. Máš jednu hodinu na to, abys ulovil trofejní rybu. Uvidíme, co mi přineseš!",
descriptionFemale = "Život je tu vždycky na hraně, <name>. Nerubiané, kobyss, hlad - vždycky se najde něco, co je připraveno tě zabít. Proto si musíme najít chvíle, kdy si můžeme odpočinout a vyzkoušet si něco jiného než přežití. Třeba rybaření. Když jsem vyrůstala, můj táta vždycky trávil soboty rybařením. Říkal: 'Udělej si čas sama na sebe, jinak nemůžeš být efektivní pro ostatní.' A tak jsem si říkala, že je to pravda. Takže každou sobotu vyzývám lidi na Hallowfall Fishing Derby. Máš jednu hodinu na to, abys ulovila trofejní rybu. Uvidíme, co mi přineseš!",
descriptionMale = "Život je tu vždycky na hraně, <name>. Nerubiáni, kobysové, hlad - vždycky se najde něco, co je připraveno tě zabít. Proto si musíme najít chvíle, kdy si můžeme odpočinout a vyzkoušet si něco jiného než přežití. Třeba rybaření. Když jsem vyrůstal, můj táta vždycky trávil soboty rybařením. Říkával: 'Udělej si čas sám na sebe, jinak nemůžeš být efektivní pro ostatní.' A tak jsem si říkal, že je to pravda. Takže každou sobotu vyzývám lidi na rybářské derby Hallowfall. Máš jednu hodinu na to, abys ulovil trofejní rybu. Uvidíme, co mi přineseš!",
descriptionFemale = "Život je tu vždycky na hraně, <name>. Nerubiáni, kobysové, hlad - vždycky se najde něco, co je připraveno tě zabít. Proto si musíme najít chvíle, kdy si můžeme odpočinout a vyzkoušet si něco jiného než přežití. Třeba rybaření. Když jsem vyrůstal, můj táta vždycky trávil soboty rybařením. Říkával: 'Udělej si čas sama na sebe, jinak nemůžeš být efektivní pro ostatní.' A tak jsem si říkal, že je to pravda. Takže každou sobotu vyzývám lidi na rybářské derby Hallowfall. Máš jednu hodinu na to, abys ulovila trofejní rybu. Uvidíme, co mi přineseš!",
progressMale = "Nějaké kousnutí, <name>?",
completionMale = "To jsou skvělé úlovky, <name>! Nemůžu se dočkat, až uvidím, co chytíš příští týden!",
}
@ -4710,8 +4713,8 @@ addon.data.quest[78628] = {
addon.data.quest[78670] = {
titleMale = "Sabotáž obléhacích zbraní",
objectiveMale = "Znič 4 obléhací zbraně pod Tenir's Ascent.",
descriptionMale = "<name>, pokud chceme nerubiany zadržet, musíme se vypořádat s jejich obléhacími zbraněmi. Kolem Tenirského výstupu jsou sudy s černým prachem, které zásobují naše lodě pro boj. Protože nerubiáni tyto lodě chytili na zemi, využijme tento prach k práci. Seber pár sudů a odnese je k nerubijským obléhacím zbraním.",
descriptionFemale = "<name>, pokud chceme nerubiany zadržet, musíme se vypořádat s jejich obléhacími zbraněmi. Kolem Tenirského výstupu jsou sudy s černým prachem, které zásobují naše lodě pro boj. Protože nerubiáni tyto lodě chytili na zemi, využijme tento prach k práci. Seber pár sudů a odneste je k nerubijským obléhacím zbraním.",
descriptionMale = "<name>, pokud chceme nerubiány zadržet, musíme se vypořádat s jejich obléhacími zbraněmi. Kolem Tenir's Ascent jsou sudy s černým prachem, které zásobují naše lodě k boji. Protože nerubiáni tyto lodě chytili na zemi, využijme tento prach. Seber pár sudů a odnes je k nerubiánským obléhacím zbraním.",
descriptionFemale = "<name>, pokud chceme nerubiány zadržet, musíme se vypořádat s jejich obléhacími zbraněmi. Kolem Tenir's Ascent jsou sudy s černým prachem, které zásobují naše lodě pro boj. Protože nerubiáni tyto lodě chytili na zemi, využijme tento prach k práci. Seber pár sudů a odnes je k nerubiánským obléhacím zbraním.",
progressMale = "Podařilo se ti zničit jejich obléhací zbraně, <name>?",
completionMale = "Po zničení těchto obléhacích zbraní jsme na tom mnohem lépe. Faerin se vydala napřed, aby s Velkým Kyronem zapálila Úsvitnou věž. Požádala nás, abychom se tam s nimi setkali.",
}
@ -4731,8 +4734,8 @@ addon.data.quest[78668] = {
addon.data.quest[76394] = {
titleMale = "Stíny chuti",
objectiveMale = "Nasbírej 10 stínoslepých skupin, 5 šupináčů z temnoty a lahvičku soumračného koření.",
descriptionMale = "Rozhodl jsem se vytvořit jídlo, které se vymyká běžným zvyklostem, takové, které by neodmítl ani císař. K vytvoření tohoto výjimečného jídla potřebuji ingredience z nejtemnějších stínů. Mnozí tyto ingredience považují za zakázané, ale v mých rukou se stanou harmonií světla a stínu. Prosím, pomozte mi a nasbírejte následující ingredience: Stínoslepý Gruper, Temně zúrodněné Šalotky a lahvičku koření Soumrak.",
descriptionFemale = "Rozhodl jsem se vytvořit jídlo, které se vymyká běžným zvyklostem, takové, které by neodmítl ani císař. K vytvoření tohoto výjimečného jídla potřebuji ingredience z nejtemnějších stínů. Mnozí tyto ingredience považují za zakázané, ale v mých rukou se stanou harmonií světla a stínu. Prosím, pomoz mi a nasbírej následující ingredience: Stínoslepý Gruper, Temně zúrodněné Šalotky a lahvičku koření Soumrak.",
descriptionMale = "Rozhodl jsem se vytvořit jídlo, které se vymyká běžným zvyklostem, takové, které by neodmítl ani Emperor. K vytvoření tohoto výjimečného jídla potřebuji ingredience z nejtemnějších stínů. Mnozí tyto ingredience považují za zakázané, ale v mých rukou se stanou harmonií světla a stínu. Prosím, pomoz mi a nasbírej následující ingredience: Shadowblind Grouper, Dark-Nurtured Scallions a Vial of Twilight Spice.",
descriptionFemale = "Rozhodla jsem se vytvořit jídlo, které se vymyká běžným zvyklostem, takové, které by neodmítl ani Emperor. K vytvoření tohoto výjimečného jídla potřebuji ingredience z nejtemnějších stínů. Mnozí tyto ingredience považují za zakázané, ale v mých rukou se stanou harmonií světla a stínu. Prosím, pomoz mi a nasbírej následující ingredience: Shadowblind Grouper, Dark-Nurtured Scallions a Vial of Twilight Spice.",
progressMale = "Našli jste všechny ingredience?",
progressFemale = "Našel jsi všechny ingredience?",
completionMale = "Nyní se děje kouzlo. Vyzkoušej si tento výtvor na vlastní kůži.",
@ -4849,8 +4852,8 @@ addon.data.quest[78621] = {
addon.data.quest[78691] = {
titleMale = "Ten, který utekl",
objectiveMale = "Zachraň Maxmiliána při havárii lodi Indomitable.",
descriptionMale = "<name>, můj syn je venku s kobysy. Přesvědčil ostatní děti, že by se s ním měly vyplížit do boje. Říkal, že by měli 'být stateční jako můj táta'. Když se setkali s kobyssem, ostatní se všichni rozběhli zpátky sem, zatímco on běžel k havarované lodi, aby ji odvedl pryč. Nezachoval jsem se statečně, <name>. V příběhu o Neohroženém se píše, že jsem byl hrdina; ty lži byly mou zprávou. Jestli byl někdy čas se vzchopit, tak je to teď. Ale sám se kobysovi nevyrovnám. Pojď se mnou, <name> - pomoz mi zachránit Maxmiliána.",
descriptionFemale = "<name>, můj syn je venku s kobysy. Přesvědčil ostatní děti, že by se s ním měly vyplížit do boje. Říkal, že by měly 'být statečné jako můj táta'. Když se setkali s kobyssem, ostatní se všichni rozběhli zpátky sem, zatímco on běžel k havarované lodi, aby ji odvedl pryč. Nezachoval jsem se statečně, <name>. V příběhu o Neohroženém se píše, že jsem byl hrdina; ty lži byly mou zprávou. Jestli byl někdy čas se vzchopit, tak je to teď. Ale sám se kobysovi nevyrovnám. Pojď se mnou, <name> - pomoz mi zachránit Maxmiliána.",
descriptionMale = "<name>, můj syn je venku s kobyss. Přesvědčil ostatní děti, že by se s ním měly vyplížit do boje. Říkal, že by měli 'být stateční jako můj táta'. Když se setkali s kobyss, ostatní se všichni rozběhli zpátky sem, zatímco on běžel k havarované lodi, aby ji odvedl pryč. Nezachoval jsem se statečně, <name>. V příběhu o Indomitable se píše, že jsem byl hrdina; ty lži byly mou zprávou. Jestli byl někdy čas se vzchopit, tak je to teď. Ale sám se kobyssovi nevyrovnám. Pojď se mnou, <name> - pomoz mi zachránit Maximillian.",
descriptionFemale = "<name>, můj syn je venku s kobyss. Přesvědčil ostatní děti, že by se s ním měly vyplížit do boje. Říkal, že by měly 'být statečné jako můj táta'. Když se setkali s kobyss, ostatní se všichni rozběhli zpátky sem, zatímco on běžel k havarované lodi, aby ji odvedl pryč. Nezachoval jsem se statečně, <name>. V příběhu o Indomitable se píše, že jsem byl hrdina; ty lži byly mou zprávou. Jestli byl někdy čas se vzchopit, tak je to teď. Ale sám se kobyssovi nevyrovnám. Pojď se mnou, <name> - pomoz mi zachránit Maximillian.",
progressMale = "Soustřeď se, <name> - musíme najít mého syna.",
completionMale = "Vím, že to zní banálně, <name>, ale nikdy bych ti nedokázal dostatečně poděkovat za to, že jsi Maxe dostal v pořádku domů.\n\nDíky tomu všemu jsi mi také ukázal, že musím být vpředu a vést své lidi. Viděl jsem, že existují i horší následky než smrt.\n\nNemohu napravit chyby, kterých jsem se v minulosti dopustil, ale mohu si být jistý, že se nebudou opakovat.",
completionFemale = "Vím, že to zní banálně, <name>, ale nikdy bych ti nedokázal dostatečně poděkovat za to, že jsi Maxe dostala v pořádku domů.\n\nDíky tomu všemu jsi mi také ukázala, že musím být vpředu a vést své lidi. Viděl jsem, že existují i horší následky než smrt.\n\nNemohu napravit chyby, kterých jsem se v minulosti dopustil, ale mohu si být jistý, že se nebudou opakovat.",
@ -5350,7 +5353,7 @@ addon.data.quest[82847] = {
}
addon.data.quest[76247] = {
titleMale = "Udržujte domácí ohně v plamenech",
objectiveMale = "5 Hillhelm Remnant Supply shromážděno a použito k posílení Hillhelm Keyflame.",
objectiveMale = "5 Hillhelm Remnant Supplies shromážděny a použity k posílení Hillhelm Keyflame.",
descriptionMale = "Klíčové plamenné ohně rozmístěné po celé krajině udržují temnotu na uzdě a náš lid v bezpečí. Mnohé z nich potemněly, protože se stále hůře shánějí zbytky zářičů, které jsou k jejich údržbě potřeba. Tvrdě jsem pracovala, abych zajistila, že naše výhně budou vždy zapálené, ale vždy bych potřebovala tvou pomoc. Prosím, shromáždi zbytky z našich zásob a použij je, abys pomohl posílit náš rodinný klíčový plamen.",
descriptionFemale = "Klíčové plamenné ohně rozmístěné po celé krajině udržují temnotu na uzdě a náš lid v bezpečí. Mnohé z nich potemněly, protože se stále hůře shánějí zbytky zářičů, které jsou k jejich údržbě potřeba. Tvrdě jsem pracovala, abych zajistila, že naše výhně budou vždy zapálené, ale vždy bych potřebovala tvou pomoc. Prosím, shromáždi zbytky z našich zásob a použij je, abys pomohla posílit náš rodinný klíčový plamen.",
progressMale = "Posílila jsi náš klíčový plamen?",
@ -5404,8 +5407,7 @@ addon.data.quest[79158] = {
addon.data.quest[79173] = {
titleMale = "Dodávka úsilí",
objectiveMale = "Získej různé ukradené předměty z okolí, abych uspokojil naše potřeby.",
descriptionMale = "Když na naše město padl stín, bylo pod rouškou tmy odcizeno mnoho potřebných zásob. S návratem světla je čas na obnovu, ale nejprve musíme získat zpět to, co bylo ztraceno. Prohledejte okolí a získejte zpět všechny zásoby, které by mohly být užitečné. Pak je doručte do Ceren Leadlandu.",
descriptionFemale = "Když na naše město padl stín, bylo pod rouškou tmy odcizeno mnoho potřebných zásob. S návratem světla je čas na obnovu, ale nejprve musíme získat zpět to, co bylo ztraceno. Prohledej okolí a získej zpět všechny zásoby, které by mohly být užitečné. Pak je doručte do Ceren Leadlandu.",
descriptionMale = "Když na naše město padl stín, bylo pod rouškou tmy odcizeno mnoho potřebných zásob. S návratem světla je čas na obnovu, ale nejprve musíme získat zpět to, co bylo ztraceno. Prohledej okolí a získej zpět všechny zásoby, které by mohly být užitečné. Pak je doruč do Ceren Leadlandu.",
progressMale = "Získal jsi zpět ukradené předměty?",
completionMale = "Zotavil jsi se mnohem více, než jsem mohl doufat. Něco z toho navíc jsem ti odložil stranou, abys si to mohl vzít.",
completionFemale = "Zotavil jsi se mnohem více, než jsem mohl doufat. Něco z toho navíc jsem ti odložil stranou, abys si to mohla vzít.",
@ -6354,8 +6356,10 @@ addon.data.quest[80000] = {
}
addon.data.quest[83333] = {
titleMale = "Připravujeme se na potíže",
objectiveMale = "Dokonč 20 vln události Probuzení stroje.",
descriptionMale = "Zdravím přítele, Stroj je opět v havarijním stavu a vyžaduje obnovu. Potřebuji tvé odborné znalosti k úspěšnému provedení údržby. Za dobře provedenou pomoc bude poskytnuta odměna.",
objectiveMale = "Dokonči 20 vln událostí Probuzení stroje.",
objectiveFemale = "Dokonči 20 vln události Probuzení stroje.",
descriptionMale = "Zdravím přítele, stroj je opět v havarijním stavu a vyžaduje obnovu. Potřebuji tvoje odborné znalosti k úspěšnému provedení údržby. Za dobře provedenou pomoc bude poskytnuta odměna.",
descriptionFemale = "Zdravím přítelkyni, stroj je opět v havarijním stavu a vyžaduje obnovu. Potřebuji tvé odborné znalosti k úspěšnému provedení údržby. Za dobře provedenou pomoc bude poskytnuta odměna.",
progressMale = "Už jsi skončil s touhle rachotinou? Stroj hučí a je spokojený, jo?",
progressFemale = "Už jsi skončila s touhle rachotinou? Stroj hučí a je spokojený, jo?",
completionMale = "Ach, všechno opravené, lesklé a hladké! Tady máš svůj lesklý kousek, dobře odvedená práce.\n\nTeď si vyměníme nějaké zboží, ano?",
@ -6377,7 +6381,7 @@ addon.data.quest[80408] = {
}
addon.data.quest[79030] = {
titleMale = "Hlas mluvčích",
objectiveMale = "Návrat k Allerie v Dornogalu.",
objectiveMale = "Vrať se k Allerii v Dornogalu.",
descriptionMale = "Vyřiď prosím zprávu o našem vítězství Allerii v Dornogalu. Jsem si jistá, že naši spojenci budou potěšeni, až uslyší, co můžeme poskytnout pro válečné úsilí.",
completionMale = "Jaké úžasné zprávy, <name>!\n\nVáleční golemové se probouzejí a opět pochodují proti našim nepřátelům, stejně jako v dobách minulých.\n\nTvůj příspěvek k věci Strojových mluvčích a celé Zeměploše nebude zapomenut.",
completionFemale = "Jaké úžasné zprávy, <name>!\n\nVáleční golemové se probouzejí a opět pochodují proti našim nepřátelům, stejně jako v dobách minulých.\n\nTvůj příspěvek k věci Strojových mluvčích a celé zemáky nebude zapomenut.",

File diff suppressed because it is too large Load diff

3017
Addon/Data/retail/2.lua Normal file

File diff suppressed because it is too large Load diff

3001
Addon/Data/retail/3.lua Normal file

File diff suppressed because it is too large Load diff

2348
Addon/Data/retail/4.lua Normal file

File diff suppressed because it is too large Load diff

View file

@ -3,42 +3,56 @@ local _, addon = ...
-- Prepare API object
addon.API = {}
-- Prepare Data objects
addon.data = {};
addon.data.quest = {};
addon.data.item = {};
addon.data.speech = {}
addon.data.tactic = {}
-- Expose object as global for other addon integration
CzechQuestsAddon = {}
CzechQuestsAddon.data = addon.data
local function SetDefault(key, default)
if CzechQuestsAddon_Store.config[key] == nil then
CzechQuestsAddon_Store.config[key] = default
end
return CzechQuestsAddon_Store.config[key]
end
local function InitStore()
-- Init Store
CzechQuestsAddon_Store = CzechQuestsAddon_Store or {}
CzechQuestsAddon_Store.config = CzechQuestsAddon_Store.config or {}
-- General Settings
CzechQuestsAddon_Store.config.DEBUG_MODE = CzechQuestsAddon_Store.config.DEBUG_MODE or false
CzechQuestsAddon_Store.config.DEBUG_MODE = SetDefault("DEBUG_MODE", false)
-- Quest Settings
CzechQuestsAddon_Store.config.QUEST_ENABLED = CzechQuestsAddon_Store.config.QUEST_ENABLED or true
CzechQuestsAddon_Store.config.QUEST_DARK_MODE = CzechQuestsAddon_Store.config.QUEST_DARK_MODE or false
CzechQuestsAddon_Store.config.QUEST_HEADER_FONT_SIZE = CzechQuestsAddon_Store.config.QUEST_HEADER_FONT_SIZE or 18
CzechQuestsAddon_Store.config.QUEST_TEXT_FONT_SIZE = CzechQuestsAddon_Store.config.QUEST_TEXT_FONT_SIZE or 14
CzechQuestsAddon_Store.config.QUEST_HEADER_FONT_NAME = CzechQuestsAddon_Store.config.QUEST_HEADER_FONT_NAME or 'morpheus_cz.ttf'
CzechQuestsAddon_Store.config.QUEST_TEXT_FONT_NAME = CzechQuestsAddon_Store.config.QUEST_TEXT_FONT_NAME or 'frizquadratatt_cz.ttf'
CzechQuestsAddon_Store.config.QUEST_TEXTURE_ALPHA = CzechQuestsAddon_Store.config.QUEST_TEXTURE_ALPHA or 80
CzechQuestsAddon_Store.config.QUEST_TEXTURE_ALPHA_ONLY_MOVING = CzechQuestsAddon_Store.config.QUEST_TEXTURE_ALPHA_ONLY_MOVING or true
CzechQuestsAddon_Store.config.QUEST_ENABLED = SetDefault("QUEST_ENABLED", true)
CzechQuestsAddon_Store.config.QUEST_DARK_MODE = SetDefault("QUEST_DARK_MODE", false)
CzechQuestsAddon_Store.config.QUEST_HEADER_FONT_SIZE = SetDefault("QUEST_HEADER_FONT_SIZE", 18)
CzechQuestsAddon_Store.config.QUEST_TEXT_FONT_SIZE = SetDefault("QUEST_TEXT_FONT_SIZE", 14)
CzechQuestsAddon_Store.config.QUEST_HEADER_FONT_NAME = SetDefault("QUEST_HEADER_FONT_NAME", 'morpheus_cz.ttf')
CzechQuestsAddon_Store.config.QUEST_TEXT_FONT_NAME = SetDefault("QUEST_TEXT_FONT_NAME", 'frizquadratatt_cz.ttf')
CzechQuestsAddon_Store.config.QUEST_TEXTURE_ALPHA = SetDefault("QUEST_TEXTURE_ALPHA", 80)
CzechQuestsAddon_Store.config.QUEST_TEXTURE_ALPHA_ONLY_MOVING = SetDefault("QUEST_TEXTURE_ALPHA_ONLY_MOVING", true)
-- Speech Settings
CzechQuestsAddon_Store.config.SPEECH_ENABLED = CzechQuestsAddon_Store.config.SPEECH_ENABLED or true
CzechQuestsAddon_Store.config.SPEECH_TEXT_FONT_SIZE = CzechQuestsAddon_Store.config.SPEECH_TEXT_FONT_SIZE or 13
CzechQuestsAddon_Store.config.SPEECH_TEXT_FONT_NAME = CzechQuestsAddon_Store.config.SPEECH_TEXT_FONT_NAME or 'frizquadratatt_cz.ttf'
CzechQuestsAddon_Store.config.SPEECH_FRAME_WIDTH = CzechQuestsAddon_Store.config.SPEECH_FRAME_WIDTH or 320
CzechQuestsAddon_Store.config.SPEECH_ORIGINAL_WHEN_MISSING = CzechQuestsAddon_Store.config.SPEECH_ORIGINAL_WHEN_MISSING or false
CzechQuestsAddon_Store.config.SPEECH_MESSAGE_TEXTURE_ALPHA = CzechQuestsAddon_Store.config.SPEECH_MESSAGE_TEXTURE_ALPHA or 40
CzechQuestsAddon_Store.config.SPEECH_FRAME_POSITION_X = CzechQuestsAddon_Store.config.SPEECH_FRAME_POSITION_X or 0
CzechQuestsAddon_Store.config.SPEECH_FRAME_POSITION_Y = CzechQuestsAddon_Store.config.SPEECH_FRAME_POSITION_Y or 0
CzechQuestsAddon_Store.config.SPEECH_ENABLED = SetDefault("SPEECH_ENABLED", true)
CzechQuestsAddon_Store.config.SPEECH_TEXT_FONT_SIZE = SetDefault("SPEECH_TEXT_FONT_SIZE", 13)
CzechQuestsAddon_Store.config.SPEECH_TEXT_FONT_NAME = SetDefault("SPEECH_TEXT_FONT_NAME", 'frizquadratatt_cz.ttf')
CzechQuestsAddon_Store.config.SPEECH_FRAME_WIDTH = SetDefault("SPEECH_FRAME_WIDTH", 320)
CzechQuestsAddon_Store.config.SPEECH_ORIGINAL_WHEN_MISSING = SetDefault("SPEECH_ORIGINAL_WHEN_MISSING", false)
CzechQuestsAddon_Store.config.SPEECH_MESSAGE_TEXTURE_ALPHA = SetDefault("SPEECH_MESSAGE_TEXTURE_ALPHA", 40)
CzechQuestsAddon_Store.config.SPEECH_FRAME_POSITION_X = SetDefault("SPEECH_FRAME_POSITION_X", 0)
CzechQuestsAddon_Store.config.SPEECH_FRAME_POSITION_Y = SetDefault("SPEECH_FRAME_POSITION_Y", 0)
-- Tactic Settings
CzechQuestsAddon_Store.config.TACTIC_ENABLED = SetDefault("TACTIC_ENABLED", true)
CzechQuestsAddon_Store.config.TACTIC_TEXT_FONT_SIZE = SetDefault("TACTIC_TEXT_FONT_SIZE", 12)
CzechQuestsAddon_Store.config.TACTIC_TEXT_FONT_NAME = SetDefault("TACTIC_TEXT_FONT_NAME", 'frizquadratatt_cz.ttf')
end
-- Event handler frame
@ -49,6 +63,9 @@ local function OnEvent(self, event, addonName, ...)
addon.API.InitOptions()
addon.API.InitQuests()
addon.API.InitSpeeches()
if (WOW_PROJECT_ID ~= WOW_PROJECT_CLASSIC) then
addon.API.InitTactics()
end
self:UnregisterEvent("ADDON_LOADED")
end
end

View file

@ -1,5 +1,5 @@
## Interface: 110100
## Title: CzechQuests
## Title: Czech Quests
## Notes: Addon displays texts of quests in Czech language
## Author: Roman Jaroš
## Version: 1.0.1
@ -11,6 +11,9 @@ CzechQuests.lua
Addon/Data/0.lua
Addon/Data/1.lua
Addon/Data/2.lua
Addon/Data/3.lua
Addon/Data/4.lua
Addon/Data/other.lua
@ -26,3 +29,6 @@ Addon/Code/Quest.lua
Addon/Code/SpeechDataApi.lua
Addon/Code/SpeechFrame.lua
Addon/Code/Speech.lua
Addon/Code/TacticFrame.lua
Addon/Code/Tactic.lua

View file

@ -1,5 +1,5 @@
## Interface: 11505
## Title: CzechQuests
## Title: Czech Quests
## Notes: Addon displays texts of quests in Czech language as tooltip
## Author: Roman Jaroš
## Version: 1.0.1
@ -28,3 +28,6 @@ Addon/Code/Quest.lua
Addon/Code/SpeechDataApi.lua
Addon/Code/SpeechFrame.lua
Addon/Code/Speech.lua
Addon/Code/TacticFrame.lua
Addon/Code/Tactic.lua