+
+ |
+ ${this.renderKey("Escape")}
+ |
+
+ ${translateText("help_modal.action_esc")}
+ |
+
+
+ |
+ ${this.renderKey("Enter")}
+ |
+
+ ${translateText("help_modal.action_enter")}
+ |
+
${this.renderKey(keybinds.toggleView)}
diff --git a/src/client/HostLobbyModal.ts b/src/client/HostLobbyModal.ts
index 7c24ae97c..401097317 100644
--- a/src/client/HostLobbyModal.ts
+++ b/src/client/HostLobbyModal.ts
@@ -71,6 +71,7 @@ export class HostLobbyModal extends BaseModal {
@state() private goldMultiplierValue: number | undefined = undefined;
@state() private startingGold: boolean = false;
@state() private startingGoldValue: number | undefined = undefined;
+ @state() private disableAlliances: boolean = false;
@state() private lobbyId = "";
@state() private lobbyUrlSuffix = "";
@state() private clients: ClientInfo[] = [];
@@ -174,16 +175,16 @@ export class HostLobbyModal extends BaseModal {
.onKeyDown=${this.handleSpawnImmunityDurationKeyDown}
>`,
html``,
html`,
},
bubbles: true,
diff --git a/src/client/InputHandler.ts b/src/client/InputHandler.ts
index 85c928f5c..778d284c4 100644
--- a/src/client/InputHandler.ts
+++ b/src/client/InputHandler.ts
@@ -671,7 +671,7 @@ export class InputHandler {
}
if (element.tagName === "INPUT") {
const input = element as HTMLInputElement;
- if (input.id === "attack-ratio" && input.type === "range") {
+ if (input.type === "range") {
return false;
}
return true;
diff --git a/src/client/LangSelector.ts b/src/client/LangSelector.ts
index 73b922b85..2ba0ee498 100644
--- a/src/client/LangSelector.ts
+++ b/src/client/LangSelector.ts
@@ -349,14 +349,11 @@ export class LangSelector extends LitElement {
id="lang-selector"
title="Change Language"
@click=${this.openModal}
- class="border-none bg-none cursor-pointer p-0 flex items-center justify-center transition-transform duration-200 hover:scale-[1.1] active:scale-[0.9]"
- style="width: 28px; height: 28px;"
+ class="border-none bg-none cursor-pointer p-0 flex items-center justify-center transition-transform duration-200 hover:scale-[1.1] active:scale-[0.9] opacity-60 hover:opacity-100 w-[40px] h-[40px] lg:w-[56px] lg:h-[56px]"
>
0
);
}
@@ -409,6 +416,7 @@ export class SinglePlayerModal extends BaseModal {
this.goldMultiplierValue = DEFAULT_OPTIONS.goldMultiplierValue;
this.startingGold = DEFAULT_OPTIONS.startingGold;
this.startingGoldValue = DEFAULT_OPTIONS.startingGoldValue;
+ this.disableAlliances = DEFAULT_OPTIONS.disableAlliances;
}
protected onOpen(): void {
@@ -488,6 +496,9 @@ export class SinglePlayerModal extends BaseModal {
case "single_modal.compact_map":
this.handleCompactMapChange(checked);
break;
+ case "single_modal.disable_alliances":
+ this.disableAlliances = checked;
+ break;
default:
break;
}
@@ -696,6 +707,7 @@ export class SinglePlayerModal extends BaseModal {
),
}
: {}),
+ ...(this.disableAlliances ? { disableAlliances: true } : {}),
},
lobbyCreatedAt: Date.now(), // ms; server should be authoritative in MP
},
diff --git a/src/client/Utils.ts b/src/client/Utils.ts
index 159e8cfb3..c9323bead 100644
--- a/src/client/Utils.ts
+++ b/src/client/Utils.ts
@@ -168,6 +168,23 @@ export function getActiveModifiers(
formattedValue: `${millions}M`,
});
}
+ if (modifiers.goldMultiplier) {
+ result.push({
+ labelKey: "host_modal.gold_multiplier",
+ badgeKey: "public_game_modifier.gold_multiplier",
+ badgeParams: {
+ amount: modifiers.goldMultiplier,
+ },
+ value: modifiers.goldMultiplier,
+ formattedValue: `x${modifiers.goldMultiplier}`,
+ });
+ }
+ if (modifiers.isAlliancesDisabled) {
+ result.push({
+ labelKey: "host_modal.disable_alliances",
+ badgeKey: "public_game_modifier.disable_alliances",
+ });
+ }
return result;
}
diff --git a/src/client/components/DesktopNavBar.ts b/src/client/components/DesktopNavBar.ts
index 93bb3b8b2..22e9b9b0f 100644
--- a/src/client/components/DesktopNavBar.ts
+++ b/src/client/components/DesktopNavBar.ts
@@ -175,7 +175,6 @@ export class DesktopNavBar extends LitElement {
`
: ""}
-
|