Option to disable alliances + 2 new modifiers for variety 😄 (#3392)

## Description:

Rex had this idea: "It would be funny to have an option in private
lobbies to disable alliances."
I added it as an option.
Now people can choose to live in constant fear of their neighbors 😆 

Also added two new public game modifiers for variety (only for the
special rotation):
- Alliances disabled (low probability)
- x2 gold multiplier (low probability)

Would be nice to squeeze this into v30, last minute?

## Please complete the following:

- [X] I have added screenshots for all UI updates
- [X] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [X] I have added relevant tests to the test directory
- [X] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced

## Please put your Discord username so you can be contacted if a bug or
regression is found:

FloPinguin
This commit is contained in:
FloPinguin
2026-03-10 05:13:13 +01:00
committed by GitHub
parent 08836e2a57
commit 3838de1d30
12 changed files with 102 additions and 12 deletions
+12
View File
@@ -56,6 +56,7 @@ const DEFAULT_OPTIONS = {
startingGold: false,
startingGoldValue: undefined as number | undefined,
disabledUnits: [] as UnitType[],
disableAlliances: false,
} as const;
@customElement("single-player-modal")
@@ -90,6 +91,7 @@ export class SinglePlayerModal extends BaseModal {
@state() private disabledUnits: UnitType[] = [
...DEFAULT_OPTIONS.disabledUnits,
];
@state() private disableAlliances: boolean = DEFAULT_OPTIONS.disableAlliances;
private mapLoader = terrainMapFileLoader;
@@ -313,6 +315,10 @@ export class SinglePlayerModal extends BaseModal {
labelKey: "single_modal.compact_map",
checked: this.compactMap,
},
{
labelKey: "single_modal.disable_alliances",
checked: this.disableAlliances,
},
],
inputCards,
},
@@ -383,6 +389,7 @@ export class SinglePlayerModal extends BaseModal {
this.gameMode !== DEFAULT_OPTIONS.gameMode ||
this.goldMultiplier !== DEFAULT_OPTIONS.goldMultiplier ||
this.startingGold !== DEFAULT_OPTIONS.startingGold ||
this.disableAlliances !== DEFAULT_OPTIONS.disableAlliances ||
this.disabledUnits.length > 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
},