chore: move a few more cheat toggles to be per-account #2713
@ -11,7 +11,6 @@
|
|||||||
"administratorNames": [],
|
"administratorNames": [],
|
||||||
"autoCreateAccount": true,
|
"autoCreateAccount": true,
|
||||||
"skipTutorial": false,
|
"skipTutorial": false,
|
||||||
"skipAllDialogue": false,
|
|
||||||
"unlockAllScans": false,
|
"unlockAllScans": false,
|
||||||
"unlockAllShipFeatures": false,
|
"unlockAllShipFeatures": false,
|
||||||
"unlockAllShipDecorations": false,
|
"unlockAllShipDecorations": false,
|
||||||
@ -27,9 +26,7 @@
|
|||||||
"noDojoResearchCosts": false,
|
"noDojoResearchCosts": false,
|
||||||
"noDojoResearchTime": false,
|
"noDojoResearchTime": false,
|
||||||
"fastClanAscension": false,
|
"fastClanAscension": false,
|
||||||
"missionsCanGiveAllRelics": false,
|
|
||||||
"unlockAllSimarisResearchEntries": false,
|
"unlockAllSimarisResearchEntries": false,
|
||||||
"disableDailyTribute": false,
|
|
||||||
"spoofMasteryRank": -1,
|
"spoofMasteryRank": -1,
|
||||||
"relicRewardItemCountMultiplier": 1,
|
"relicRewardItemCountMultiplier": 1,
|
||||||
"nightwaveStandingMultiplier": 1,
|
"nightwaveStandingMultiplier": 1,
|
||||||
|
|||||||
@ -306,7 +306,7 @@ export const getInventoryResponse = async (
|
|||||||
inventoryResponse.PrimeTokens = 999999999;
|
inventoryResponse.PrimeTokens = 999999999;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.skipAllDialogue) {
|
if (inventory.skipAllDialogue) {
|
||||||
inventoryResponse.TauntHistory = [
|
inventoryResponse.TauntHistory = [
|
||||||
{
|
{
|
||||||
node: "TreasureTutorial",
|
node: "TreasureTutorial",
|
||||||
|
|||||||
@ -8,7 +8,6 @@ import {
|
|||||||
setAccountGotLoginRewardToday
|
setAccountGotLoginRewardToday
|
||||||
} from "../../services/loginRewardService.ts";
|
} from "../../services/loginRewardService.ts";
|
||||||
import { getInventory } from "../../services/inventoryService.ts";
|
import { getInventory } from "../../services/inventoryService.ts";
|
||||||
import { config } from "../../services/configService.ts";
|
|
||||||
import { sendWsBroadcastTo } from "../../services/wsService.ts";
|
import { sendWsBroadcastTo } from "../../services/wsService.ts";
|
||||||
|
|
||||||
export const loginRewardsController: RequestHandler = async (req, res) => {
|
export const loginRewardsController: RequestHandler = async (req, res) => {
|
||||||
@ -17,41 +16,42 @@ export const loginRewardsController: RequestHandler = async (req, res) => {
|
|||||||
const isMilestoneDay = account.LoginDays == 5 || account.LoginDays % 50 == 0;
|
const isMilestoneDay = account.LoginDays == 5 || account.LoginDays % 50 == 0;
|
||||||
const nextMilestoneDay = account.LoginDays < 5 ? 5 : (Math.trunc(account.LoginDays / 50) + 1) * 50;
|
const nextMilestoneDay = account.LoginDays < 5 ? 5 : (Math.trunc(account.LoginDays / 50) + 1) * 50;
|
||||||
|
|
||||||
if (today == account.LastLoginRewardDate || config.disableDailyTribute) {
|
if (today != account.LastLoginRewardDate) {
|
||||||
res.json({
|
const inventory = await getInventory(account._id.toString());
|
||||||
DailyTributeInfo: {
|
if (!inventory.disableDailyTribute) {
|
||||||
IsMilestoneDay: isMilestoneDay,
|
const randomRewards = getRandomLoginRewards(account, inventory);
|
||||||
IsChooseRewardSet: isLoginRewardAChoice(account),
|
const response: ILoginRewardsReponse = {
|
||||||
LoginDays: account.LoginDays,
|
DailyTributeInfo: {
|
||||||
NextMilestoneReward: "",
|
Rewards: randomRewards,
|
||||||
NextMilestoneDay: nextMilestoneDay
|
IsMilestoneDay: isMilestoneDay,
|
||||||
}
|
IsChooseRewardSet: randomRewards.length != 1,
|
||||||
} satisfies ILoginRewardsReponse);
|
LoginDays: account.LoginDays,
|
||||||
return;
|
NextMilestoneReward: "",
|
||||||
}
|
NextMilestoneDay: nextMilestoneDay,
|
||||||
|
HasChosenReward: false
|
||||||
|
},
|
||||||
|
LastLoginRewardDate: today
|
||||||
|
};
|
||||||
|
if (!isMilestoneDay && randomRewards.length == 1) {
|
||||||
|
response.DailyTributeInfo.HasChosenReward = true;
|
||||||
|
response.DailyTributeInfo.ChosenReward = randomRewards[0];
|
||||||
|
response.DailyTributeInfo.NewInventory = await claimLoginReward(inventory, randomRewards[0]);
|
||||||
|
setAccountGotLoginRewardToday(account);
|
||||||
|
await Promise.all([inventory.save(), account.save()]);
|
||||||
|
|
||||||
const inventory = await getInventory(account._id.toString());
|
sendWsBroadcastTo(account._id.toString(), { update_inventory: true });
|
||||||
const randomRewards = getRandomLoginRewards(account, inventory);
|
}
|
||||||
const response: ILoginRewardsReponse = {
|
res.json(response);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
res.json({
|
||||||
DailyTributeInfo: {
|
DailyTributeInfo: {
|
||||||
Rewards: randomRewards,
|
|
||||||
IsMilestoneDay: isMilestoneDay,
|
IsMilestoneDay: isMilestoneDay,
|
||||||
IsChooseRewardSet: randomRewards.length != 1,
|
IsChooseRewardSet: isLoginRewardAChoice(account),
|
||||||
LoginDays: account.LoginDays,
|
LoginDays: account.LoginDays,
|
||||||
NextMilestoneReward: "",
|
NextMilestoneReward: "",
|
||||||
NextMilestoneDay: nextMilestoneDay,
|
NextMilestoneDay: nextMilestoneDay
|
||||||
HasChosenReward: false
|
}
|
||||||
},
|
} satisfies ILoginRewardsReponse);
|
||||||
LastLoginRewardDate: today
|
|
||||||
};
|
|
||||||
if (!isMilestoneDay && randomRewards.length == 1) {
|
|
||||||
response.DailyTributeInfo.HasChosenReward = true;
|
|
||||||
response.DailyTributeInfo.ChosenReward = randomRewards[0];
|
|
||||||
response.DailyTributeInfo.NewInventory = await claimLoginReward(inventory, randomRewards[0]);
|
|
||||||
setAccountGotLoginRewardToday(account);
|
|
||||||
await Promise.all([inventory.save(), account.save()]);
|
|
||||||
|
|
||||||
sendWsBroadcastTo(account._id.toString(), { update_inventory: true });
|
|
||||||
}
|
|
||||||
res.json(response);
|
|
||||||
};
|
};
|
||||||
|
|||||||
@ -17,11 +17,11 @@ export const crackRelic = async (
|
|||||||
): Promise<IRngResult> => {
|
): Promise<IRngResult> => {
|
||||||
const relic = ExportRelics[participant.VoidProjection];
|
const relic = ExportRelics[participant.VoidProjection];
|
||||||
let weights = refinementToWeights[relic.quality];
|
let weights = refinementToWeights[relic.quality];
|
||||||
if (relic.quality == "VPQ_SILVER" && config.exceptionalRelicsAlwaysGiveBronzeReward) {
|
if (relic.quality == "VPQ_SILVER" && inventory.exceptionalRelicsAlwaysGiveBronzeReward) {
|
||||||
weights = { COMMON: 1, UNCOMMON: 0, RARE: 0, LEGENDARY: 0 };
|
weights = { COMMON: 1, UNCOMMON: 0, RARE: 0, LEGENDARY: 0 };
|
||||||
} else if (relic.quality == "VPQ_GOLD" && config.flawlessRelicsAlwaysGiveSilverReward) {
|
} else if (relic.quality == "VPQ_GOLD" && inventory.flawlessRelicsAlwaysGiveSilverReward) {
|
||||||
weights = { COMMON: 0, UNCOMMON: 1, RARE: 0, LEGENDARY: 0 };
|
weights = { COMMON: 0, UNCOMMON: 1, RARE: 0, LEGENDARY: 0 };
|
||||||
} else if (relic.quality == "VPQ_PLATINUM" && config.radiantRelicsAlwaysGiveGoldReward) {
|
} else if (relic.quality == "VPQ_PLATINUM" && inventory.radiantRelicsAlwaysGiveGoldReward) {
|
||||||
weights = { COMMON: 0, UNCOMMON: 0, RARE: 1, LEGENDARY: 0 };
|
weights = { COMMON: 0, UNCOMMON: 0, RARE: 1, LEGENDARY: 0 };
|
||||||
}
|
}
|
||||||
logger.debug(`opening a relic of quality ${relic.quality}; rarity weights are`, weights);
|
logger.debug(`opening a relic of quality ${relic.quality}; rarity weights are`, weights);
|
||||||
|
|||||||
@ -1428,6 +1428,7 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
|
|||||||
accountOwnerId: Schema.Types.ObjectId,
|
accountOwnerId: Schema.Types.ObjectId,
|
||||||
|
|
||||||
// SNS account cheats
|
// SNS account cheats
|
||||||
|
skipAllDialogue: Boolean,
|
||||||
dontSubtractPurchaseCreditCost: Boolean,
|
dontSubtractPurchaseCreditCost: Boolean,
|
||||||
dontSubtractPurchasePlatinumCost: Boolean,
|
dontSubtractPurchasePlatinumCost: Boolean,
|
||||||
dontSubtractPurchaseItemCost: Boolean,
|
dontSubtractPurchaseItemCost: Boolean,
|
||||||
@ -1455,6 +1456,11 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
|
|||||||
claimingBlueprintRefundsIngredients: Boolean,
|
claimingBlueprintRefundsIngredients: Boolean,
|
||||||
instantResourceExtractorDrones: Boolean,
|
instantResourceExtractorDrones: Boolean,
|
||||||
noResourceExtractorDronesDamage: Boolean,
|
noResourceExtractorDronesDamage: Boolean,
|
||||||
|
missionsCanGiveAllRelics: Boolean,
|
||||||
|
exceptionalRelicsAlwaysGiveBronzeReward: Boolean,
|
||||||
|
flawlessRelicsAlwaysGiveSilverReward: Boolean,
|
||||||
|
radiantRelicsAlwaysGiveGoldReward: Boolean,
|
||||||
|
disableDailyTribute: Boolean,
|
||||||
|
|
||||||
SubscribedToEmails: { type: Number, default: 0 },
|
SubscribedToEmails: { type: Number, default: 0 },
|
||||||
SubscribedToEmailsPersonalized: { type: Number, default: 0 },
|
SubscribedToEmailsPersonalized: { type: Number, default: 0 },
|
||||||
|
|||||||
@ -18,7 +18,6 @@ export interface IConfig extends IConfigRemovedOptions {
|
|||||||
administratorNames?: string[];
|
administratorNames?: string[];
|
||||||
autoCreateAccount?: boolean;
|
autoCreateAccount?: boolean;
|
||||||
skipTutorial?: boolean;
|
skipTutorial?: boolean;
|
||||||
skipAllDialogue?: boolean;
|
|
||||||
unlockAllScans?: boolean;
|
unlockAllScans?: boolean;
|
||||||
unlockAllShipFeatures?: boolean;
|
unlockAllShipFeatures?: boolean;
|
||||||
unlockAllShipDecorations?: boolean;
|
unlockAllShipDecorations?: boolean;
|
||||||
@ -35,12 +34,7 @@ export interface IConfig extends IConfigRemovedOptions {
|
|||||||
noDojoResearchCosts?: boolean;
|
noDojoResearchCosts?: boolean;
|
||||||
noDojoResearchTime?: boolean;
|
noDojoResearchTime?: boolean;
|
||||||
fastClanAscension?: boolean;
|
fastClanAscension?: boolean;
|
||||||
missionsCanGiveAllRelics?: boolean;
|
|
||||||
exceptionalRelicsAlwaysGiveBronzeReward?: boolean;
|
|
||||||
flawlessRelicsAlwaysGiveSilverReward?: boolean;
|
|
||||||
radiantRelicsAlwaysGiveGoldReward?: boolean;
|
|
||||||
unlockAllSimarisResearchEntries?: boolean;
|
unlockAllSimarisResearchEntries?: boolean;
|
||||||
disableDailyTribute?: boolean;
|
|
||||||
spoofMasteryRank?: number;
|
spoofMasteryRank?: number;
|
||||||
relicRewardItemCountMultiplier?: number;
|
relicRewardItemCountMultiplier?: number;
|
||||||
nightwaveStandingMultiplier?: number;
|
nightwaveStandingMultiplier?: number;
|
||||||
@ -94,6 +88,7 @@ export interface IConfig extends IConfigRemovedOptions {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const configRemovedOptionsKeys = [
|
export const configRemovedOptionsKeys = [
|
||||||
|
"skipAllDialogue",
|
||||||
"infiniteCredits",
|
"infiniteCredits",
|
||||||
"infinitePlatinum",
|
"infinitePlatinum",
|
||||||
"infiniteEndo",
|
"infiniteEndo",
|
||||||
@ -122,7 +117,12 @@ export const configRemovedOptionsKeys = [
|
|||||||
"instantResourceExtractorDrones",
|
"instantResourceExtractorDrones",
|
||||||
"noResourceExtractorDronesDamage",
|
"noResourceExtractorDronesDamage",
|
||||||
"baroAlwaysAvailable",
|
"baroAlwaysAvailable",
|
||||||
"baroFullyStocked"
|
"baroFullyStocked",
|
||||||
|
"missionsCanGiveAllRelics",
|
||||||
|
"exceptionalRelicsAlwaysGiveBronzeReward",
|
||||||
|
"flawlessRelicsAlwaysGiveSilverReward",
|
||||||
|
"radiantRelicsAlwaysGiveGoldReward",
|
||||||
|
"disableDailyTribute"
|
||||||
] as const;
|
] as const;
|
||||||
|
|
||||||
type IConfigRemovedOptions = {
|
type IConfigRemovedOptions = {
|
||||||
|
|||||||
@ -2197,7 +2197,7 @@ function getRandomMissionDrops(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.missionsCanGiveAllRelics) {
|
if (inventory.missionsCanGiveAllRelics) {
|
||||||
for (const drop of drops) {
|
for (const drop of drops) {
|
||||||
const itemType = fromStoreItem(drop.StoreItem);
|
const itemType = fromStoreItem(drop.StoreItem);
|
||||||
if (itemType in ExportRelics) {
|
if (itemType in ExportRelics) {
|
||||||
|
|||||||
@ -21,6 +21,7 @@ export type InventoryDatabaseEquipment = {
|
|||||||
|
|
||||||
// Fields specific to SNS
|
// Fields specific to SNS
|
||||||
export interface IAccountCheats {
|
export interface IAccountCheats {
|
||||||
|
skipAllDialogue?: boolean;
|
||||||
dontSubtractPurchaseCreditCost?: boolean;
|
dontSubtractPurchaseCreditCost?: boolean;
|
||||||
dontSubtractPurchasePlatinumCost?: boolean;
|
dontSubtractPurchasePlatinumCost?: boolean;
|
||||||
dontSubtractPurchaseItemCost?: boolean;
|
dontSubtractPurchaseItemCost?: boolean;
|
||||||
@ -48,6 +49,11 @@ export interface IAccountCheats {
|
|||||||
claimingBlueprintRefundsIngredients?: boolean;
|
claimingBlueprintRefundsIngredients?: boolean;
|
||||||
instantResourceExtractorDrones?: boolean;
|
instantResourceExtractorDrones?: boolean;
|
||||||
noResourceExtractorDronesDamage?: boolean;
|
noResourceExtractorDronesDamage?: boolean;
|
||||||
|
missionsCanGiveAllRelics?: boolean;
|
||||||
|
exceptionalRelicsAlwaysGiveBronzeReward?: boolean;
|
||||||
|
flawlessRelicsAlwaysGiveSilverReward?: boolean;
|
||||||
|
radiantRelicsAlwaysGiveGoldReward?: boolean;
|
||||||
|
disableDailyTribute?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IInventoryDatabase
|
export interface IInventoryDatabase
|
||||||
|
|||||||
@ -647,6 +647,10 @@
|
|||||||
<div class="card">
|
<div class="card">
|
||||||
<h5 class="card-header" data-loc="cheats_account"></h5>
|
<h5 class="card-header" data-loc="cheats_account"></h5>
|
||||||
<div class="card-body" id="account-cheats">
|
<div class="card-body" id="account-cheats">
|
||||||
|
<div class="form-check">
|
||||||
|
<input class="form-check-input" type="checkbox" id="skipAllDialogue" />
|
||||||
|
<label class="form-check-label" for="skipAllDialogue" data-loc="cheats_skipAllDialogue"></label>
|
||||||
|
</div>
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input class="form-check-input" type="checkbox" id="dontSubtractPurchaseCreditCost" />
|
<input class="form-check-input" type="checkbox" id="dontSubtractPurchaseCreditCost" />
|
||||||
<label class="form-check-label" for="dontSubtractPurchaseCreditCost" data-loc="cheats_dontSubtractPurchaseCreditCost"></label>
|
<label class="form-check-label" for="dontSubtractPurchaseCreditCost" data-loc="cheats_dontSubtractPurchaseCreditCost"></label>
|
||||||
@ -754,6 +758,30 @@
|
|||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input class="form-check-input" type="checkbox" id="claimingBlueprintRefundsIngredients" />
|
<input class="form-check-input" type="checkbox" id="claimingBlueprintRefundsIngredients" />
|
||||||
<label class="form-check-label" for="claimingBlueprintRefundsIngredients" data-loc="cheats_claimingBlueprintRefundsIngredients"></label>
|
<label class="form-check-label" for="claimingBlueprintRefundsIngredients" data-loc="cheats_claimingBlueprintRefundsIngredients"></label>
|
||||||
|
</div>
|
||||||
|
<div class="form-check">
|
||||||
|
<input class="form-check-input" type="checkbox" id="missionsCanGiveAllRelics" />
|
||||||
|
<label class="form-check-label" for="missionsCanGiveAllRelics" data-loc="cheats_missionsCanGiveAllRelics"></label>
|
||||||
|
</div>
|
||||||
|
<div class="form-check">
|
||||||
|
<input class="form-check-input" type="checkbox" id="exceptionalRelicsAlwaysGiveBronzeReward" />
|
||||||
|
<label class="form-check-label" for="exceptionalRelicsAlwaysGiveBronzeReward" data-loc="cheats_exceptionalRelicsAlwaysGiveBronzeReward"></label>
|
||||||
|
</div>
|
||||||
|
<div class="form-check">
|
||||||
|
<input class="form-check-input" type="checkbox" id="flawlessRelicsAlwaysGiveSilverReward" />
|
||||||
|
<label class="form-check-label" for="flawlessRelicsAlwaysGiveSilverReward" data-loc="cheats_flawlessRelicsAlwaysGiveSilverReward"></label>
|
||||||
|
</div>
|
||||||
|
<div class="form-check">
|
||||||
|
<input class="form-check-input" type="checkbox" id="radiantRelicsAlwaysGiveGoldReward" />
|
||||||
|
<label class="form-check-label" for="radiantRelicsAlwaysGiveGoldReward" data-loc="cheats_radiantRelicsAlwaysGiveGoldReward"></label>
|
||||||
|
</div>
|
||||||
|
<div class="form-check">
|
||||||
|
<input class="form-check-input" type="checkbox" id="unlockAllSimarisResearchEntries" />
|
||||||
|
<label class="form-check-label" for="unlockAllSimarisResearchEntries" data-loc="cheats_unlockAllSimarisResearchEntries"></label>
|
||||||
|
</div>
|
||||||
|
<div class="form-check">
|
||||||
|
<input class="form-check-input" type="checkbox" id="disableDailyTribute" />
|
||||||
|
<label class="form-check-label" for="disableDailyTribute" data-loc="cheats_disableDailyTribute"></label>
|
||||||
</div>
|
</div>
|
||||||
<div class="mt-2 mb-2 d-flex flex-wrap gap-2">
|
<div class="mt-2 mb-2 d-flex flex-wrap gap-2">
|
||||||
<button class="btn btn-primary" onclick="debounce(doUnlockAllMissions);" data-loc="cheats_unlockAllMissions"></button>
|
<button class="btn btn-primary" onclick="debounce(doUnlockAllMissions);" data-loc="cheats_unlockAllMissions"></button>
|
||||||
@ -786,10 +814,6 @@
|
|||||||
<input class="form-check-input" type="checkbox" id="skipTutorial" />
|
<input class="form-check-input" type="checkbox" id="skipTutorial" />
|
||||||
<label class="form-check-label" for="skipTutorial" data-loc="cheats_skipTutorial"></label>
|
<label class="form-check-label" for="skipTutorial" data-loc="cheats_skipTutorial"></label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check">
|
|
||||||
<input class="form-check-input" type="checkbox" id="skipAllDialogue" />
|
|
||||||
<label class="form-check-label" for="skipAllDialogue" data-loc="cheats_skipAllDialogue"></label>
|
|
||||||
</div>
|
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input class="form-check-input" type="checkbox" id="unlockAllScans" />
|
<input class="form-check-input" type="checkbox" id="unlockAllScans" />
|
||||||
<label class="form-check-label" for="unlockAllScans" data-loc="cheats_unlockAllScans"></label>
|
<label class="form-check-label" for="unlockAllScans" data-loc="cheats_unlockAllScans"></label>
|
||||||
@ -854,30 +878,6 @@
|
|||||||
<input class="form-check-input" type="checkbox" id="fastClanAscension" />
|
<input class="form-check-input" type="checkbox" id="fastClanAscension" />
|
||||||
<label class="form-check-label" for="fastClanAscension" data-loc="cheats_fastClanAscension"></label>
|
<label class="form-check-label" for="fastClanAscension" data-loc="cheats_fastClanAscension"></label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check">
|
|
||||||
<input class="form-check-input" type="checkbox" id="missionsCanGiveAllRelics" />
|
|
||||||
<label class="form-check-label" for="missionsCanGiveAllRelics" data-loc="cheats_missionsCanGiveAllRelics"></label>
|
|
||||||
</div>
|
|
||||||
<div class="form-check">
|
|
||||||
<input class="form-check-input" type="checkbox" id="exceptionalRelicsAlwaysGiveBronzeReward" />
|
|
||||||
<label class="form-check-label" for="exceptionalRelicsAlwaysGiveBronzeReward" data-loc="cheats_exceptionalRelicsAlwaysGiveBronzeReward"></label>
|
|
||||||
</div>
|
|
||||||
<div class="form-check">
|
|
||||||
<input class="form-check-input" type="checkbox" id="flawlessRelicsAlwaysGiveSilverReward" />
|
|
||||||
<label class="form-check-label" for="flawlessRelicsAlwaysGiveSilverReward" data-loc="cheats_flawlessRelicsAlwaysGiveSilverReward"></label>
|
|
||||||
</div>
|
|
||||||
<div class="form-check">
|
|
||||||
<input class="form-check-input" type="checkbox" id="radiantRelicsAlwaysGiveGoldReward" />
|
|
||||||
<label class="form-check-label" for="radiantRelicsAlwaysGiveGoldReward" data-loc="cheats_radiantRelicsAlwaysGiveGoldReward"></label>
|
|
||||||
</div>
|
|
||||||
<div class="form-check">
|
|
||||||
<input class="form-check-input" type="checkbox" id="unlockAllSimarisResearchEntries" />
|
|
||||||
<label class="form-check-label" for="unlockAllSimarisResearchEntries" data-loc="cheats_unlockAllSimarisResearchEntries"></label>
|
|
||||||
</div>
|
|
||||||
<div class="form-check">
|
|
||||||
<input class="form-check-input" type="checkbox" id="disableDailyTribute" />
|
|
||||||
<label class="form-check-label" for="disableDailyTribute" data-loc="cheats_disableDailyTribute"></label>
|
|
||||||
</div>
|
|
||||||
<form class="form-group mt-2" onsubmit="doSaveConfigInt('spoofMasteryRank'); return false;">
|
<form class="form-group mt-2" onsubmit="doSaveConfigInt('spoofMasteryRank'); return false;">
|
||||||
<label class="form-label" for="spoofMasteryRank" data-loc="cheats_spoofMasteryRank"></label>
|
<label class="form-label" for="spoofMasteryRank" data-loc="cheats_spoofMasteryRank"></label>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user