forked from OpenWF/SpaceNinjaServer
Compare commits
No commits in common. "3c019e41b9a8b75ca82190cc2f22fd7af614a928" and "1d813a1b1b04f1a969f8054057f517213752216f" have entirely different histories.
3c019e41b9
...
1d813a1b1b
@ -20,8 +20,8 @@ export const syndicateSacrificeController: RequestHandler = async (request, resp
|
|||||||
|
|
||||||
const oldLevel = syndicate.Title ?? 0;
|
const oldLevel = syndicate.Title ?? 0;
|
||||||
const levelIncrease = data.SacrificeLevel - oldLevel;
|
const levelIncrease = data.SacrificeLevel - oldLevel;
|
||||||
if (levelIncrease < 0) {
|
if (levelIncrease < 1) {
|
||||||
throw new Error(`syndicate sacrifice can not decrease level`);
|
throw new Error(`syndicate sacrifice needs an increase of at least 1`);
|
||||||
}
|
}
|
||||||
if (levelIncrease > 1 && !data.AllowMultiple) {
|
if (levelIncrease > 1 && !data.AllowMultiple) {
|
||||||
throw new Error(`desired syndicate level is an increase of ${levelIncrease}, max. allowed increase is 1`);
|
throw new Error(`desired syndicate level is an increase of ${levelIncrease}, max. allowed increase is 1`);
|
||||||
@ -37,7 +37,7 @@ export const syndicateSacrificeController: RequestHandler = async (request, resp
|
|||||||
|
|
||||||
// Process sacrifices and rewards for every level we're reaching
|
// Process sacrifices and rewards for every level we're reaching
|
||||||
const manifest = ExportSyndicates[data.AffiliationTag];
|
const manifest = ExportSyndicates[data.AffiliationTag];
|
||||||
for (let level = oldLevel + levelIncrease; level <= data.SacrificeLevel; ++level) {
|
for (let level = oldLevel + 1; level <= data.SacrificeLevel; ++level) {
|
||||||
let sacrifice: ISyndicateSacrifice | undefined;
|
let sacrifice: ISyndicateSacrifice | undefined;
|
||||||
if (level == 0) {
|
if (level == 0) {
|
||||||
sacrifice = manifest.initiationSacrifice;
|
sacrifice = manifest.initiationSacrifice;
|
||||||
|
@ -3,7 +3,6 @@ import { getDict, getItemName, getString } from "@/src/services/itemDataService"
|
|||||||
import {
|
import {
|
||||||
ExportArcanes,
|
ExportArcanes,
|
||||||
ExportAvionics,
|
ExportAvionics,
|
||||||
ExportBoosters,
|
|
||||||
ExportCustoms,
|
ExportCustoms,
|
||||||
ExportDrones,
|
ExportDrones,
|
||||||
ExportGear,
|
ExportGear,
|
||||||
@ -56,7 +55,6 @@ interface ItemLists {
|
|||||||
KubrowPets: ListedItem[];
|
KubrowPets: ListedItem[];
|
||||||
EvolutionProgress: ListedItem[];
|
EvolutionProgress: ListedItem[];
|
||||||
mods: ListedItem[];
|
mods: ListedItem[];
|
||||||
Boosters: ListedItem[];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const relicQualitySuffixes: Record<TRelicQuality, string> = {
|
const relicQualitySuffixes: Record<TRelicQuality, string> = {
|
||||||
@ -88,8 +86,7 @@ const getItemListsController: RequestHandler = (req, response) => {
|
|||||||
QuestKeys: [],
|
QuestKeys: [],
|
||||||
KubrowPets: [],
|
KubrowPets: [],
|
||||||
EvolutionProgress: [],
|
EvolutionProgress: [],
|
||||||
mods: [],
|
mods: []
|
||||||
Boosters: []
|
|
||||||
};
|
};
|
||||||
for (const [uniqueName, item] of Object.entries(ExportWarframes)) {
|
for (const [uniqueName, item] of Object.entries(ExportWarframes)) {
|
||||||
res[item.productCategory].push({
|
res[item.productCategory].push({
|
||||||
@ -299,13 +296,6 @@ const getItemListsController: RequestHandler = (req, response) => {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const item of Object.values(ExportBoosters)) {
|
|
||||||
res.Boosters.push({
|
|
||||||
uniqueName: item.typeName,
|
|
||||||
name: getString(item.name, lang)
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
response.json(res);
|
response.json(res);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,45 +0,0 @@
|
|||||||
import { getAccountIdForRequest } from "@/src/services/loginService";
|
|
||||||
import { getInventory } from "@/src/services/inventoryService";
|
|
||||||
import { RequestHandler } from "express";
|
|
||||||
import { ExportBoosters } from "warframe-public-export-plus";
|
|
||||||
|
|
||||||
const I32_MAX = 0x7fffffff;
|
|
||||||
|
|
||||||
export const setBoosterController: RequestHandler = async (req, res) => {
|
|
||||||
const accountId = await getAccountIdForRequest(req);
|
|
||||||
const requests = req.body as { ItemType: string; ExpiryDate: number }[];
|
|
||||||
const inventory = await getInventory(accountId, "Boosters");
|
|
||||||
const boosters = inventory.Boosters;
|
|
||||||
if (
|
|
||||||
requests.some(request => {
|
|
||||||
if (typeof request.ItemType !== "string") return true;
|
|
||||||
if (Object.entries(ExportBoosters).find(([_, item]) => item.typeName === request.ItemType) === undefined)
|
|
||||||
return true;
|
|
||||||
if (typeof request.ExpiryDate !== "number") return true;
|
|
||||||
if (request.ExpiryDate < 0 || request.ExpiryDate > I32_MAX) return true;
|
|
||||||
return false;
|
|
||||||
})
|
|
||||||
) {
|
|
||||||
res.status(400).send("Invalid ItemType provided.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const now = Math.floor(Date.now() / 1000);
|
|
||||||
for (const { ItemType, ExpiryDate } of requests) {
|
|
||||||
if (ExpiryDate < now) {
|
|
||||||
// remove expired boosters
|
|
||||||
const index = boosters.findIndex(item => item.ItemType === ItemType);
|
|
||||||
if (index !== -1) {
|
|
||||||
boosters.splice(index, 1);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
const boosterItem = boosters.find(item => item.ItemType === ItemType);
|
|
||||||
if (boosterItem) {
|
|
||||||
boosterItem.ExpiryDate = ExpiryDate;
|
|
||||||
} else {
|
|
||||||
boosters.push({ ItemType, ExpiryDate });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
await inventory.save();
|
|
||||||
res.end();
|
|
||||||
};
|
|
@ -23,7 +23,6 @@ import { setEvolutionProgressController } from "@/src/controllers/custom/setEvol
|
|||||||
|
|
||||||
import { getConfigDataController } from "@/src/controllers/custom/getConfigDataController";
|
import { getConfigDataController } from "@/src/controllers/custom/getConfigDataController";
|
||||||
import { updateConfigDataController } from "@/src/controllers/custom/updateConfigDataController";
|
import { updateConfigDataController } from "@/src/controllers/custom/updateConfigDataController";
|
||||||
import { setBoosterController } from "../controllers/custom/setBoosterController";
|
|
||||||
|
|
||||||
const customRouter = express.Router();
|
const customRouter = express.Router();
|
||||||
|
|
||||||
@ -47,7 +46,6 @@ customRouter.post("/addXp", addXpController);
|
|||||||
customRouter.post("/import", importController);
|
customRouter.post("/import", importController);
|
||||||
customRouter.post("/manageQuests", manageQuestsController);
|
customRouter.post("/manageQuests", manageQuestsController);
|
||||||
customRouter.post("/setEvolutionProgress", setEvolutionProgressController);
|
customRouter.post("/setEvolutionProgress", setEvolutionProgressController);
|
||||||
customRouter.post("/setBooster", setBoosterController);
|
|
||||||
|
|
||||||
customRouter.get("/config", getConfigDataController);
|
customRouter.get("/config", getConfigDataController);
|
||||||
customRouter.post("/config", updateConfigDataController);
|
customRouter.post("/config", updateConfigDataController);
|
||||||
|
@ -65,7 +65,6 @@ interface IConfig {
|
|||||||
vallisOverride?: string;
|
vallisOverride?: string;
|
||||||
nightwaveOverride?: string;
|
nightwaveOverride?: string;
|
||||||
};
|
};
|
||||||
nightwaveStandingMultiplier?: number;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const configPath = path.join(repoDir, "config.json");
|
export const configPath = path.join(repoDir, "config.json");
|
||||||
|
@ -1773,14 +1773,13 @@ export const addChallenges = (
|
|||||||
}) - 1
|
}) - 1
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
affiliation.Standing += meta.standing!;
|
||||||
|
|
||||||
const standingToAdd = meta.standing! * (config.nightwaveStandingMultiplier ?? 1);
|
|
||||||
affiliation.Standing += standingToAdd;
|
|
||||||
if (affiliationMods.length == 0) {
|
if (affiliationMods.length == 0) {
|
||||||
affiliationMods.push({ Tag: nightwaveSyndicateTag });
|
affiliationMods.push({ Tag: nightwaveSyndicateTag });
|
||||||
}
|
}
|
||||||
affiliationMods[0].Standing ??= 0;
|
affiliationMods[0].Standing ??= 0;
|
||||||
affiliationMods[0].Standing += standingToAdd;
|
affiliationMods[0].Standing += meta.standing!;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -416,20 +416,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-lg-6">
|
|
||||||
<div class="card mb-3" style="height: 400px;">
|
|
||||||
<h5 class="card-header" data-loc="inventory_Boosters"></h5>
|
|
||||||
<div class="card-body overflow-auto">
|
|
||||||
<form class="input-group mb-3" onsubmit="doAcquireBoosters();return false;">
|
|
||||||
<input class="form-control" id="acquire-type-Boosters" list="datalist-Boosters" />
|
|
||||||
<button class="btn btn-primary" type="submit" data-loc="general_addButton"></button>
|
|
||||||
</form>
|
|
||||||
<table class="table table-hover w-100">
|
|
||||||
<tbody id="Boosters-list"></tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="card mb-3">
|
<div class="card mb-3">
|
||||||
<h5 class="card-header" data-loc="general_bulkActions"></h5>
|
<h5 class="card-header" data-loc="general_bulkActions"></h5>
|
||||||
@ -736,10 +722,6 @@
|
|||||||
<label class="form-label" for="spoofMasteryRank" data-loc="cheats_spoofMasteryRank"></label>
|
<label class="form-label" for="spoofMasteryRank" data-loc="cheats_spoofMasteryRank"></label>
|
||||||
<input class="form-control" id="spoofMasteryRank" type="number" min="-1" max="65535" />
|
<input class="form-control" id="spoofMasteryRank" type="number" min="-1" max="65535" />
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group mt-2">
|
|
||||||
<label class="form-label" for="nightwaveStandingMultiplier" data-loc="cheats_nightwaveStandingMultiplier"></label>
|
|
||||||
<input class="form-control" id="nightwaveStandingMultiplier" type="number" min="1" max="1000000" value="1" />
|
|
||||||
</div>
|
|
||||||
<button class="btn btn-primary mt-3" type="submit" data-loc="cheats_saveSettings"></button>
|
<button class="btn btn-primary mt-3" type="submit" data-loc="cheats_saveSettings"></button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
@ -822,7 +804,6 @@
|
|||||||
<datalist id="datalist-ModularParts-CATBROW_MUTAGEN"></datalist>
|
<datalist id="datalist-ModularParts-CATBROW_MUTAGEN"></datalist>
|
||||||
<datalist id="datalist-ModularParts-KUBROW_ANTIGEN"></datalist>
|
<datalist id="datalist-ModularParts-KUBROW_ANTIGEN"></datalist>
|
||||||
<datalist id="datalist-ModularParts-KUBROW_MUTAGEN"></datalist>
|
<datalist id="datalist-ModularParts-KUBROW_MUTAGEN"></datalist>
|
||||||
<datalist id="datalist-Boosters"></datalist>
|
|
||||||
<script src="/webui/libs/jquery-3.6.0.min.js"></script>
|
<script src="/webui/libs/jquery-3.6.0.min.js"></script>
|
||||||
<script src="/webui/libs/whirlpool-js.min.js"></script>
|
<script src="/webui/libs/whirlpool-js.min.js"></script>
|
||||||
<script src="/webui/libs/single.js"></script>
|
<script src="/webui/libs/single.js"></script>
|
||||||
|
@ -1011,63 +1011,6 @@ function updateInventory() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
document.getElementById("changeSyndicate").value = data.SupportedSyndicate ?? "";
|
document.getElementById("changeSyndicate").value = data.SupportedSyndicate ?? "";
|
||||||
|
|
||||||
document.getElementById("Boosters-list").innerHTML = "";
|
|
||||||
const now = Math.floor(Date.now() / 1000);
|
|
||||||
data.Boosters.forEach(({ ItemType, ExpiryDate }) => {
|
|
||||||
if (ExpiryDate < now) {
|
|
||||||
// Booster has expired, skip it
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const tr = document.createElement("tr");
|
|
||||||
{
|
|
||||||
const td = document.createElement("td");
|
|
||||||
td.textContent = itemMap[ItemType]?.name ?? ItemType;
|
|
||||||
tr.appendChild(td);
|
|
||||||
}
|
|
||||||
{
|
|
||||||
const td = document.createElement("td");
|
|
||||||
td.classList = "text-end text-nowrap";
|
|
||||||
const timeString = formatDatetime("%Y-%m-%d %H:%M:%s", ExpiryDate * 1000);
|
|
||||||
const inlineForm = document.createElement("form");
|
|
||||||
const input = document.createElement("input");
|
|
||||||
|
|
||||||
inlineForm.style.display = "inline-block";
|
|
||||||
inlineForm.onsubmit = function (event) {
|
|
||||||
event.preventDefault();
|
|
||||||
doChangeBoosterExpiry(ItemType, input);
|
|
||||||
};
|
|
||||||
input.type = "datetime-local";
|
|
||||||
input.classList.add("form-control");
|
|
||||||
input.classList.add("form-control-sm");
|
|
||||||
input.value = timeString;
|
|
||||||
let changed = false;
|
|
||||||
input.onchange = function () {
|
|
||||||
changed = true;
|
|
||||||
};
|
|
||||||
input.onblur = function () {
|
|
||||||
if (changed) {
|
|
||||||
doChangeBoosterExpiry(ItemType, input);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
inlineForm.appendChild(input);
|
|
||||||
|
|
||||||
td.appendChild(inlineForm);
|
|
||||||
|
|
||||||
const removeButton = document.createElement("a");
|
|
||||||
removeButton.title = loc("code_remove");
|
|
||||||
removeButton.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
|
|
||||||
removeButton.href = "#";
|
|
||||||
removeButton.onclick = function (event) {
|
|
||||||
event.preventDefault();
|
|
||||||
setBooster(ItemType, 0);
|
|
||||||
};
|
|
||||||
td.appendChild(removeButton);
|
|
||||||
|
|
||||||
tr.appendChild(td);
|
|
||||||
}
|
|
||||||
document.getElementById("Boosters-list").appendChild(tr);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -2084,77 +2027,3 @@ function handleModularSelection(category) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function setBooster(ItemType, ExpiryDate, callback) {
|
|
||||||
revalidateAuthz(() => {
|
|
||||||
$.post({
|
|
||||||
url: "/custom/setBooster?" + window.authz,
|
|
||||||
contentType: "application/json",
|
|
||||||
data: JSON.stringify([
|
|
||||||
{
|
|
||||||
ItemType,
|
|
||||||
ExpiryDate
|
|
||||||
}
|
|
||||||
])
|
|
||||||
}).done(function () {
|
|
||||||
updateInventory();
|
|
||||||
if (callback) callback();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function doAcquireBoosters() {
|
|
||||||
const uniqueName = getKey(document.getElementById("acquire-type-Boosters"));
|
|
||||||
if (!uniqueName) {
|
|
||||||
$("#acquire-type-Boosters").addClass("is-invalid").focus();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const ExpiryDate = Date.now() / 1000 + 3 * 24 * 60 * 60; // default 3 days
|
|
||||||
setBooster(uniqueName, ExpiryDate, () => {
|
|
||||||
$("#acquire-type-Boosters").val("");
|
|
||||||
updateInventory();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function doChangeBoosterExpiry(ItemType, ExpiryDateInput) {
|
|
||||||
console.log("Changing booster expiry for", ItemType, "to", ExpiryDateInput.value);
|
|
||||||
// cast local datetime string to unix timestamp
|
|
||||||
const ExpiryDate = new Date(ExpiryDateInput.value).getTime() / 1000;
|
|
||||||
if (isNaN(ExpiryDate)) {
|
|
||||||
ExpiryDateInput.addClass("is-invalid").focus();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
setBooster(ItemType, ExpiryDate);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function formatDatetime(fmt, date) {
|
|
||||||
if (typeof date === "number") date = new Date(date);
|
|
||||||
return fmt.replace(/(%[yY]|%m|%[Dd]|%H|%h|%M|%[Ss]|%[Pp])/g, match => {
|
|
||||||
switch (match) {
|
|
||||||
case "%Y":
|
|
||||||
return date.getFullYear().toString();
|
|
||||||
case "%y":
|
|
||||||
return date.getFullYear().toString().slice(-2);
|
|
||||||
case "%m":
|
|
||||||
return (date.getMonth() + 1).toString().padStart(2, "0");
|
|
||||||
case "%D":
|
|
||||||
case "%d":
|
|
||||||
return date.getDate().toString().padStart(2, "0");
|
|
||||||
case "%H":
|
|
||||||
return date.getHours().toString().padStart(2, "0");
|
|
||||||
case "%h":
|
|
||||||
return (date.getHours() % 12).toString().padStart(2, "0");
|
|
||||||
case "%M":
|
|
||||||
return date.getMinutes().toString().padStart(2, "0");
|
|
||||||
case "%S":
|
|
||||||
case "%s":
|
|
||||||
return date.getSeconds().toString().padStart(2, "0");
|
|
||||||
case "%P":
|
|
||||||
case "%p":
|
|
||||||
return date.getHours() < 12 ? "am" : "pm";
|
|
||||||
default:
|
|
||||||
return match;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
@ -98,7 +98,6 @@ dict = {
|
|||||||
inventory_bulkRankUpSentinels: `Alle Wächter auf Max. Rang`,
|
inventory_bulkRankUpSentinels: `Alle Wächter auf Max. Rang`,
|
||||||
inventory_bulkRankUpSentinelWeapons: `Alle Wächter-Waffen auf Max. Rang`,
|
inventory_bulkRankUpSentinelWeapons: `Alle Wächter-Waffen auf Max. Rang`,
|
||||||
inventory_bulkRankUpEvolutionProgress: `Alle Incarnon-Entwicklungsfortschritte auf Max. Rang`,
|
inventory_bulkRankUpEvolutionProgress: `Alle Incarnon-Entwicklungsfortschritte auf Max. Rang`,
|
||||||
inventory_Boosters: `[UNTRANSLATED] Boosters`,
|
|
||||||
|
|
||||||
quests_list: `Quests`,
|
quests_list: `Quests`,
|
||||||
quests_completeAll: `Alle Quests abschließen`,
|
quests_completeAll: `Alle Quests abschließen`,
|
||||||
@ -164,7 +163,6 @@ dict = {
|
|||||||
cheats_noDojoResearchTime: `Keine Dojo-Forschungszeit`,
|
cheats_noDojoResearchTime: `Keine Dojo-Forschungszeit`,
|
||||||
cheats_fastClanAscension: `Schneller Clan-Aufstieg`,
|
cheats_fastClanAscension: `Schneller Clan-Aufstieg`,
|
||||||
cheats_spoofMasteryRank: `Gefälschter Meisterschaftsrang (-1 zum deaktivieren)`,
|
cheats_spoofMasteryRank: `Gefälschter Meisterschaftsrang (-1 zum deaktivieren)`,
|
||||||
cheats_nightwaveStandingMultiplier: `[UNTRANSLATED] Nightwave Standing Multiplier`,
|
|
||||||
cheats_saveSettings: `Einstellungen speichern`,
|
cheats_saveSettings: `Einstellungen speichern`,
|
||||||
cheats_account: `Account`,
|
cheats_account: `Account`,
|
||||||
cheats_unlockAllFocusSchools: `Alle Fokus-Schulen freischalten`,
|
cheats_unlockAllFocusSchools: `Alle Fokus-Schulen freischalten`,
|
||||||
|
@ -97,7 +97,6 @@ dict = {
|
|||||||
inventory_bulkRankUpSentinels: `Max Rank All Sentinels`,
|
inventory_bulkRankUpSentinels: `Max Rank All Sentinels`,
|
||||||
inventory_bulkRankUpSentinelWeapons: `Max Rank All Sentinel Weapons`,
|
inventory_bulkRankUpSentinelWeapons: `Max Rank All Sentinel Weapons`,
|
||||||
inventory_bulkRankUpEvolutionProgress: `Max Rank All Incarnon Evolution Progress`,
|
inventory_bulkRankUpEvolutionProgress: `Max Rank All Incarnon Evolution Progress`,
|
||||||
inventory_Boosters: `Boosters`,
|
|
||||||
|
|
||||||
quests_list: `Quests`,
|
quests_list: `Quests`,
|
||||||
quests_completeAll: `Complete All Quests`,
|
quests_completeAll: `Complete All Quests`,
|
||||||
@ -163,7 +162,6 @@ dict = {
|
|||||||
cheats_noDojoResearchTime: `No Dojo Research Time`,
|
cheats_noDojoResearchTime: `No Dojo Research Time`,
|
||||||
cheats_fastClanAscension: `Fast Clan Ascension`,
|
cheats_fastClanAscension: `Fast Clan Ascension`,
|
||||||
cheats_spoofMasteryRank: `Spoofed Mastery Rank (-1 to disable)`,
|
cheats_spoofMasteryRank: `Spoofed Mastery Rank (-1 to disable)`,
|
||||||
cheats_nightwaveStandingMultiplier: `Nightwave Standing Multiplier`,
|
|
||||||
cheats_saveSettings: `Save Settings`,
|
cheats_saveSettings: `Save Settings`,
|
||||||
cheats_account: `Account`,
|
cheats_account: `Account`,
|
||||||
cheats_unlockAllFocusSchools: `Unlock All Focus Schools`,
|
cheats_unlockAllFocusSchools: `Unlock All Focus Schools`,
|
||||||
|
@ -98,7 +98,6 @@ dict = {
|
|||||||
inventory_bulkRankUpSentinels: `Maximizar rango de todos los centinelas`,
|
inventory_bulkRankUpSentinels: `Maximizar rango de todos los centinelas`,
|
||||||
inventory_bulkRankUpSentinelWeapons: `Maximizar rango de todas las armas de centinela`,
|
inventory_bulkRankUpSentinelWeapons: `Maximizar rango de todas las armas de centinela`,
|
||||||
inventory_bulkRankUpEvolutionProgress: `Maximizar todo el progreso de evolución Incarnon`,
|
inventory_bulkRankUpEvolutionProgress: `Maximizar todo el progreso de evolución Incarnon`,
|
||||||
inventory_Boosters: `Potenciadores`,
|
|
||||||
|
|
||||||
quests_list: `Misiones`,
|
quests_list: `Misiones`,
|
||||||
quests_completeAll: `Completar todas las misiones`,
|
quests_completeAll: `Completar todas las misiones`,
|
||||||
@ -164,7 +163,6 @@ dict = {
|
|||||||
cheats_noDojoResearchTime: `Sin tiempo de investigación del dojo`,
|
cheats_noDojoResearchTime: `Sin tiempo de investigación del dojo`,
|
||||||
cheats_fastClanAscension: `Ascenso rápido del clan`,
|
cheats_fastClanAscension: `Ascenso rápido del clan`,
|
||||||
cheats_spoofMasteryRank: `Rango de maestría simulado (-1 para desactivar)`,
|
cheats_spoofMasteryRank: `Rango de maestría simulado (-1 para desactivar)`,
|
||||||
cheats_nightwaveStandingMultiplier: `Multiplicador de Reputación de Onda Nocturna`,
|
|
||||||
cheats_saveSettings: `Guardar configuración`,
|
cheats_saveSettings: `Guardar configuración`,
|
||||||
cheats_account: `Cuenta`,
|
cheats_account: `Cuenta`,
|
||||||
cheats_unlockAllFocusSchools: `Desbloquear todas las escuelas de enfoque`,
|
cheats_unlockAllFocusSchools: `Desbloquear todas las escuelas de enfoque`,
|
||||||
|
@ -98,7 +98,6 @@ dict = {
|
|||||||
inventory_bulkRankUpSentinels: `Toutes les Sentinelles au rang max`,
|
inventory_bulkRankUpSentinels: `Toutes les Sentinelles au rang max`,
|
||||||
inventory_bulkRankUpSentinelWeapons: `Toutes les armes de Sentinelles au rang max`,
|
inventory_bulkRankUpSentinelWeapons: `Toutes les armes de Sentinelles au rang max`,
|
||||||
inventory_bulkRankUpEvolutionProgress: `Toutes les évolutions Incarnon au rang max`,
|
inventory_bulkRankUpEvolutionProgress: `Toutes les évolutions Incarnon au rang max`,
|
||||||
inventory_Boosters: `[UNTRANSLATED] Boosters`,
|
|
||||||
|
|
||||||
quests_list: `Quêtes`,
|
quests_list: `Quêtes`,
|
||||||
quests_completeAll: `Compléter toutes les quêtes`,
|
quests_completeAll: `Compléter toutes les quêtes`,
|
||||||
@ -164,7 +163,6 @@ dict = {
|
|||||||
cheats_noDojoResearchTime: `Aucun temps de recherche (Dojo)`,
|
cheats_noDojoResearchTime: `Aucun temps de recherche (Dojo)`,
|
||||||
cheats_fastClanAscension: `Ascension de clan rapide`,
|
cheats_fastClanAscension: `Ascension de clan rapide`,
|
||||||
cheats_spoofMasteryRank: `Rang de maîtrise personnalisé (-1 pour désactiver)`,
|
cheats_spoofMasteryRank: `Rang de maîtrise personnalisé (-1 pour désactiver)`,
|
||||||
cheats_nightwaveStandingMultiplier: `[UNTRANSLATED] Nightwave Standing Multiplier`,
|
|
||||||
cheats_saveSettings: `Sauvegarder les paramètres`,
|
cheats_saveSettings: `Sauvegarder les paramètres`,
|
||||||
cheats_account: `Compte`,
|
cheats_account: `Compte`,
|
||||||
cheats_unlockAllFocusSchools: `Débloquer toutes les écoles de focus`,
|
cheats_unlockAllFocusSchools: `Débloquer toutes les écoles de focus`,
|
||||||
|
@ -98,7 +98,6 @@ dict = {
|
|||||||
inventory_bulkRankUpSentinels: `Максимальный ранг всех стражей`,
|
inventory_bulkRankUpSentinels: `Максимальный ранг всех стражей`,
|
||||||
inventory_bulkRankUpSentinelWeapons: `Максимальный ранг всего оружия стражей`,
|
inventory_bulkRankUpSentinelWeapons: `Максимальный ранг всего оружия стражей`,
|
||||||
inventory_bulkRankUpEvolutionProgress: `Максимальный ранг всех эволюций Инкарнонов`,
|
inventory_bulkRankUpEvolutionProgress: `Максимальный ранг всех эволюций Инкарнонов`,
|
||||||
inventory_Boosters: `[UNTRANSLATED] Boosters`,
|
|
||||||
|
|
||||||
quests_list: `Квесты`,
|
quests_list: `Квесты`,
|
||||||
quests_completeAll: `Завершить все квесты`,
|
quests_completeAll: `Завершить все квесты`,
|
||||||
@ -164,7 +163,6 @@ dict = {
|
|||||||
cheats_noDojoResearchTime: `Мгновенные Исследование Додзё`,
|
cheats_noDojoResearchTime: `Мгновенные Исследование Додзё`,
|
||||||
cheats_fastClanAscension: `Мгновенное Вознесение Клана`,
|
cheats_fastClanAscension: `Мгновенное Вознесение Клана`,
|
||||||
cheats_spoofMasteryRank: `Подделанный ранг мастерства (-1 для отключения)`,
|
cheats_spoofMasteryRank: `Подделанный ранг мастерства (-1 для отключения)`,
|
||||||
cheats_nightwaveStandingMultiplier: `[UNTRANSLATED] Nightwave Standing Multiplier`,
|
|
||||||
cheats_saveSettings: `Сохранить настройки`,
|
cheats_saveSettings: `Сохранить настройки`,
|
||||||
cheats_account: `Аккаунт`,
|
cheats_account: `Аккаунт`,
|
||||||
cheats_unlockAllFocusSchools: `Разблокировать все школы фокуса`,
|
cheats_unlockAllFocusSchools: `Разблокировать все школы фокуса`,
|
||||||
|
@ -98,7 +98,6 @@ dict = {
|
|||||||
inventory_bulkRankUpSentinels: `所有守护升满级`,
|
inventory_bulkRankUpSentinels: `所有守护升满级`,
|
||||||
inventory_bulkRankUpSentinelWeapons: `所有守护武器升满级`,
|
inventory_bulkRankUpSentinelWeapons: `所有守护武器升满级`,
|
||||||
inventory_bulkRankUpEvolutionProgress: `所有灵化之源最大等级`,
|
inventory_bulkRankUpEvolutionProgress: `所有灵化之源最大等级`,
|
||||||
inventory_Boosters: `加成器`,
|
|
||||||
|
|
||||||
quests_list: `任务`,
|
quests_list: `任务`,
|
||||||
quests_completeAll: `完成所有任务`,
|
quests_completeAll: `完成所有任务`,
|
||||||
@ -164,7 +163,6 @@ dict = {
|
|||||||
cheats_noDojoResearchTime: `无视道场研究时间`,
|
cheats_noDojoResearchTime: `无视道场研究时间`,
|
||||||
cheats_fastClanAscension: `快速升级氏族`,
|
cheats_fastClanAscension: `快速升级氏族`,
|
||||||
cheats_spoofMasteryRank: `伪造精通段位(-1为禁用)`,
|
cheats_spoofMasteryRank: `伪造精通段位(-1为禁用)`,
|
||||||
cheats_nightwaveStandingMultiplier: `午夜电波声望倍率`,
|
|
||||||
cheats_saveSettings: `保存设置`,
|
cheats_saveSettings: `保存设置`,
|
||||||
cheats_account: `账户`,
|
cheats_account: `账户`,
|
||||||
cheats_unlockAllFocusSchools: `解锁所有专精学派`,
|
cheats_unlockAllFocusSchools: `解锁所有专精学派`,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user