Commit Graph

2443 Commits

Author SHA1 Message Date
Scott Anderson 5c8f85fc5f permissions 2025-08-27 18:44:24 -04:00
Scott Anderson 91fc0c7671 permissions: pull-requests, contents 2025-08-27 16:06:03 -04:00
Scott Anderson f094e2788f Merge main into ci-coverage 2025-08-27 16:00:53 -04:00
Loymdayddaud 0c798efb08 more chat messages (#1938)
## Description:

Adds more chat messages in several categories, as requested on
[Discord](https://discord.com/channels/1284581928254701718/1379092916827324426/1409862901816102964)

<img width="1440" height="800" alt="Screen Shot 2025-08-26 at 5 42 28
PM"
src="https://github.com/user-attachments/assets/f7c58cce-586c-47fa-b41b-728d5a829127"
/>
<img width="1440" height="800" alt="Screen Shot 2025-08-26 at 5 42 53
PM"
src="https://github.com/user-attachments/assets/8621e162-154d-48ee-a747-c7545f4e561d"
/>
<img width="1440" height="800" alt="Screen Shot 2025-08-26 at 5 42 41
PM"
src="https://github.com/user-attachments/assets/6d35da7e-6690-47ee-9850-094893f5b6ce"
/>

## 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:

loymdayddaud
2025-08-26 21:59:37 +00:00
Scott Anderson be447a6774 Nations send emoji when declining assistance requests (#1911)
## Description:

Nations will now send emoji when declining assistance requests.

## 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
2025-08-26 17:57:40 -04:00
Scott Anderson 1a83531193 Nations build defense posts (#1935)
## Description:

Nations build defense posts. Fixes #1854.

<img width="259" height="383" alt="image"
src="https://github.com/user-attachments/assets/aee75fd3-f52e-47d8-b47f-b192b8aaa69b"
/>

## 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
2025-08-25 19:26:02 -04:00
Scott Anderson e4a4c5dc12 Nations build SAM launchers (#1931)
## Description:

Fixes #201 by adding the ability for nations to build SAM launchers.

<img width="888" height="625" alt="image"
src="https://github.com/user-attachments/assets/b07f1b4e-d022-4674-b842-bc8b4247825d"
/>

## 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
2025-08-25 18:07:57 -04:00
Scott Anderson e079bc772f Refactor structureSpawnTileValue() (#1927)
## Description:

Move `structureSpawnTileValue()` into its own file, as
`FakeHumanExecution.ts` was getting quite large.

## 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
2025-08-25 03:34:52 -04:00
Loymdayddaud 9a9979fa6b Add Northern Hemisphere Map (#1800)
## Description:

This PR adds a new northern hemisphere map (2000x2000 pixels) using a
pierce quincuncial projection. It has 46 nations and 16 new flags. See
#827 for original PR.

<img width="1440" height="800" alt="Screen Shot 2025-08-13 at 7 21 34
PM"
src="https://github.com/user-attachments/assets/8668c59c-ab6c-4242-845c-8b352265805c"
/>
<img width="1440" height="800" alt="Screen Shot 2025-08-13 at 7 22 24
PM"
src="https://github.com/user-attachments/assets/99be8a1e-ceb6-4376-a2d2-fba5c9bd93e2"
/>
<img width="1440" height="800" alt="Screen Shot 2025-08-13 at 7 22 50
PM"
src="https://github.com/user-attachments/assets/9b527be1-05ed-4881-aec3-2919e204b020"
/>
<img width="1440" height="801" alt="Screen Shot 2025-08-13 at 7 22 59
PM"
src="https://github.com/user-attachments/assets/545eff17-4aa5-447f-b0eb-d7dc32eca613"
/>

## 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:

loymdayddaud

---------

Co-authored-by: Lucas Michaud <Lucasmichaud1@gmail.com>
Co-authored-by: Lucas Michaud <45228097+LucasMichaud@users.noreply.github.com>
Co-authored-by: TheGiraffe3 <TheGiraffe3@users.noreply.github.com>
Co-authored-by: Drills Kibo <59177241+drillskibo@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Scott Anderson <662325+scottanderson@users.noreply.github.com>
2025-08-25 02:13:18 -04:00
DevelopingTom ddd5a2da87 Fix long-distance nuke interception (#1900)
Fix a bug introduced by an optimization that caused some incoming nukes
to be ignored. As a result, long-distance nukes could evade in-range
SAM.

Changes:
Replaced the ignored nukes list with a list of precomputed nukes.
For incoming long-distance nukes, the interception tile is now computed
in advance.
When the nuke enters range, the precomputed interception tile is used
for interception.

- [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

regression is found:

IngloriousTom

---------

Co-authored-by: evanpelle <evanpelle@gmail.com>
2025-08-25 01:32:03 -04:00
evanpelle ac81a4c08b bugfix: territory pattern modal opening on page load (#1871)
The territory modal was opening on page load, this has it not open on
page load, but refresh the button on onUserMe().

- [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

regression is found:

evan
2025-08-25 01:16:43 -04:00
Scott Anderson cac3196deb Fix trainwreck bug (#1925)
## Description:

Fixes #1922, the trainwreck bug.

## 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
2025-08-24 20:51:26 -04:00
Scott Anderson de3e80154b Fix eslint failure (#1921)
## Description:

Fix an eslint failure blocking PRs from being merged.

## 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
2025-08-24 17:23:11 -04:00
evanpelle d752902dfe Remove Yenisei from public multiplayer games (#1874)
The map is very large and the game lagged a lot on this map during
playtests. So remove it from public lobbies.

- [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

regression is found:

evan
2025-08-24 16:59:49 -04:00
DevelopingTom fb038f2419 Create stations regardless of factory ownership (#1904)
## Description:

Bug fix: cities and ports would only connect to factories owned by the
current player, ignoring those belonging to other players.

This update makes the player ID optional when searching for nearby
units: if no player ID is provided, unit ownership is disregarded,
allowing connections to all factories regardless of ownership.
## 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:

IngloriousTom
2025-08-24 16:43:15 -04:00
evanpelle eda49d1ad8 fix emoji exploit: sending emoji to self causes game to crash (#1889)
## Description:

When emoji is sent to oneself, it triggers: Cannot send emoji to
oneself: ${this}, because the canSendEmoji wasn't checking if it was
itself.

## 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:

evan
2025-08-24 16:43:14 -04:00
evanpelle 86f8cc9f81 fix team color (#1888)
## Description:

Fix color assignment crashing squad games.

For squad games, teams are assigned 1,2,3, etc. So the ColorAllocator
cannot find them and throws an exception.

## 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:

evan
2025-08-24 16:43:14 -04:00
evanpelle 8965ad53b0 better pattern name (#1885)
## Description:

If the translation key isn't found for a pattern, show just the pattern
key, not the entire translation key. Since patterns will be added
frequently.

## 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:

evan
2025-08-24 16:43:14 -04:00
evanpelle 783a68e359 unset pattern on logout (#1873)
## Description:

During logout, the pattern was still set, so you would fail to join any
game. This PR clears & unsets the chosen pattern on logout.

## 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:

evan
2025-08-24 16:42:38 -04:00
evanpelle 087159ae31 Update train color to be more like owner color (#1869)
## Description:

Trains were mostly white, which was jarring, and it was difficult to
tell who owned what train. This makes it trains are the color of their
owner.
<img width="738" height="375" alt="Screenshot 2025-08-19 at 12 58 52 PM"
src="https://github.com/user-attachments/assets/87c677e9-b061-4fa6-82ef-9043919d7a1c"
/>

## 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:

evan
2025-08-24 16:38:54 -04:00
evanpelle 13b350513f Improve alliance UX, prevent hung alliance requests (#1868)
This PR does two things:

1. Allows you to send an alliance request to approve an existing
request, ex:
* player A sends req to player B
* now player B can send an ally request to player A, which accepts the
request from player A.

This way even if you lose or don't see the alliance notification, you
can still accept the alliance.

2. Have AllianceRequestExecution reject the request if not accepted or
rejected. There is a bug where sometimes the EventDisplay does not
trigger the delete() function, resulting in hung alliance requests. I
couldn't figure out why the delete() function is sometimes not called,
but I think it's better design to have core/ itself handle abandoned
alliance requests, this was UI bugs can't break the game state.

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

regression is found:

evan
2025-08-24 16:38:52 -04:00
Scott Anderson 51519b0b9d Enable strictPropertyInitialization (#1909)
## Description:

Enable the tsconfig option `strictPropertyInitialization`.

Fixes #1907

## 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
2025-08-23 19:21:40 -04:00
Scott Anderson f5316cc378 Enable the @typescript-eslint/no-non-null-assertion eslint rule (#1899)
## Description:

Enable the `@typescript-eslint/no-non-null-assertion` eslint rule.

## 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
2025-08-23 13:50:41 -04:00
Danny Asmussen add81b9c04 Reloading the page during a game should rejoin with the same clientID (#1836)
## Description:

This PR will fix #1204

Reloading the page during a game will rejoin with the same clientID, so
the player can resume, even if they have to catch up from the start. It
will use the localStorage to remember the clientID.

## 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:

WoodyDRN

---------

Co-authored-by: Scott Anderson <662325+scottanderson@users.noreply.github.com>
2025-08-23 02:24:37 +00:00
yanir 14c14e59f2 added the ability to see players Flag inside the player panel with full flag name. (#1892)
## Description:

Sometimes I found it interesting to know what flag players choose, now
its possible with this new feature.

Feature added to the players panel.

- Added the Full flag name
- Added the flag svg
- countries with no flag, the whole section will be hidden
<img width="250" height="388" alt="My own Flag"
src="https://github.com/user-attachments/assets/69eda520-83f7-4864-8cc1-f19419f13143"
/>

<img width="250" height="388" alt="Bot with flag"
src="https://github.com/user-attachments/assets/1d4e9fbd-1b63-4dae-8bf7-38d3e78a3c80"
/>

<img width="250" height="388" alt="Bot with no flag"
src="https://github.com/user-attachments/assets/7ae06b30-4e26-49d6-a136-23d82c11b1f6"
/>


## 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 ( Made local
tests seems to all work with long or short names)
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced

## My discord:

boostry

---------

Co-authored-by: evanpelle <evanpelle@gmail.com>
2025-08-22 19:10:40 +00:00
PilkeySEK 1b9ae47216 Update discord invite link in README.md from the translator discord to dev discord (#1886)
## Description:

I noticed the link to the discord for translators was still the
translation discord instead of the dev discord. NOTE: Evan approved
changing this already.

## 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:

pilkeysek
2025-08-21 16:07:13 +00:00
ElMelchizedek c55c656285 Allies no longer embargo each other (#1863)
## Description:

Bots on the same team as a human player will no longer embargo them if
they betray an alliance with an opposing team player.
Fixes #1845 

## 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:

sibyljudith
2025-08-19 17:22:50 +00:00
Scott Anderson 7bb319fcad Enable the prefer-destructuring eslint rule (#1858)
## Description:

Enable the `prefer-destructuring` eslint rule.

## 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
2025-08-18 20:45:21 -04:00
Scott Anderson 42394d4476 Revert "Enable the no-multiple-empty-lines eslint rule (#1856)"
This reverts commit ec21a0f100.
2025-08-18 20:31:42 -04:00
Scott Anderson 9163f0d710 Enable the @typescript-eslint/prefer-readonly eslint rule (#1859)
## Description:

Enable the `@typescript-eslint/prefer-readonly` eslint rule.

## 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
2025-08-18 20:09:21 -04:00
Scott Anderson ed090b88b5 Enable the object-shorthand eslint rule (#1857)
## Description:

Enable the `object-shorthand` eslint rule.

## 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
2025-08-18 19:51:55 -04:00
Loymdayddaud 6d0ae88e8c more nations on the World Map (#1770)
## Description:

Adds more nations to the default World Map and updates some `strength`
values to work better.
fixes #609 

<details>
<summary>Screenshots</summary>
<img width="1440" height="798" alt="Screen Shot 2025-08-11 at 6 13 04
AM"
src="https://github.com/user-attachments/assets/7c9fd017-862c-41d3-83e9-1de511edaf2d"
/>
<img width="1436" height="801" alt="Screen Shot 2025-08-11 at 6 14 29
AM"
src="https://github.com/user-attachments/assets/801f7c2d-299c-4a53-b2c1-5a342623d024"
/>
<img width="1440" height="798" alt="Screen Shot 2025-08-11 at 6 15 30
AM"
src="https://github.com/user-attachments/assets/e43c6f71-185d-4dd4-bf38-4d76264c3c32"
/>
<img width="1440" height="800" alt="Screen Shot 2025-08-11 at 6 16 26
AM"
src="https://github.com/user-attachments/assets/30fc2ee2-5e44-4007-ac81-83a3aeaefe37"
/>
<img width="1440" height="801" alt="Screen Shot 2025-08-11 at 6 16 48
AM"
src="https://github.com/user-attachments/assets/e624477b-3310-40e4-92cf-c9aea3b81e59"
/>
</details>

## 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
- [x] I have read and accepted the CLA agreement (only required once).

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

loymdayddaud
2025-08-18 23:07:04 +00:00
Scott Anderson ec21a0f100 Enable the no-multiple-empty-lines eslint rule (#1856)
## Description:

Enable the `no-multiple-empty-lines` eslint rule.

## 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
2025-08-18 19:04:45 -04:00
Scott Anderson 2db2907325 Smarter nation structure placement (#1851)
## Description:

Smarter nation structure placement.

Fixes #881

<img width="2464" height="1235" alt="image"
src="https://github.com/user-attachments/assets/b8ec0041-6f12-4ff3-9279-f5e8529521e5"
/>

## 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
2025-08-18 18:21:03 -04:00
kanishk tyagi a646818b55 fix ally request svg aspect ratio (#1731)
## Description:

The alliance icon was appearing squished in the radial menu because the
SVG was being forced into a 32x32 square without proper aspect ratio
preservation.

Change:
Added `viewBox="0 0 834 528"` and `preserveAspectRatio="xMidYMid meet"`
to the SVG element, which maintains the original aspect ratio (1.58:1)
when scaled to fit the allocated space.

After changes:
[
<img width="166" height="184" alt="Screenshot 2025-08-07 at 4 52 15 PM"
src="https://github.com/user-attachments/assets/c1438b4d-9302-4a2b-8e25-c6d289e7148e"
/>
](url)

Refer to the issue for before.

Fixes #1730 

## 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
- [x] I have read and accepted the CLA agreement (only required once).

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

phantom845

Co-authored-by: Kanishk-T <kanishk.tyagi@yugen.ai>
2025-08-18 03:26:32 -04:00
Scott Anderson ebcebfdc31 Remove hard structure limit for nations (#1853)
## Description:

Remove the structure building limit for AI players, in favor of a simple
cost heuristic.

Fixes #1561

## 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
2025-08-17 23:23:47 -04:00
Scott Anderson d6ef20961e fix eslint failure (#1852)
## Description:

Fix the failing eslint check after cherry-picking v25 changes into main.

## 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
2025-08-17 22:23:23 -04:00
evanpelle 0f760f872a increase MIRV warhead distance, after improved pseudorandom (#1839)
## Description:

seedrandom provides much better randomization
(https://github.com/openfrontio/OpenFrontIO/commit/77fd82b4b4b2b43e455d8db6100b64f10fdbb680)
causing MIRV warheads to cover the target much more efficiently, and
wiping out much more territory than in v24. This change makes the MIRV
more similar to v24.

## 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:

evan
2025-08-17 21:59:43 -04:00
evanpelle 116f019597 allow names to go on top of radiation (#1840)
## Description:

I noticed after MIRVs, player names would be very small, or even not
shown, because the MIRV would litter the player territory with
radiation. This PR allows the name to go over irradiated land. It
occasionally led to strange name placement, like if a small nation was
h-bombed, then half the name could end up on the radiation, but it was
still clear who the nation was. Overall it feels like an improvement.

## 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:

evan
2025-08-17 21:59:43 -04:00
evanpelle a0db091af5 bugfix: SAMs targeting not updating owner after capture (#1838)
## Description:

After a SAM was captured, SAMTargetingSystem's player was not updated,
so it thought it was still owned by the original player. So it wouldn't
shoot down nukes launched from the original owner.

## 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:

evan
2025-08-17 21:59:43 -04:00
evanpelle 243b456061 Use seedrandom to back PseudoRandom.ts (#1828)
The previous implementation had a bug that biased numbers away from 0,
so random.chance(1500+) would always return false. This caused trains to
not spawn at all when their spawn rate was sufficiently low. We should
be using a library instead of implementing it from scratch anyways.

- [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

regression is found:

evan
2025-08-17 21:58:53 -04:00
Aotumuri 22d47e09d0 Fix flag preview not updating after selecting a new flag (#1812)
Fixed to redraw when triggered by a custom event (flag-change).
Fixes https://github.com/openfrontio/OpenFrontIO/issues/1803

- [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

regression is found:
aotumuri
2025-08-17 21:57:40 -04:00
evanpelle 56f748b16f restrict problematic flags fixes #1690 (#1805)
Some flags are offensive, so don't allow them to be selected by users.

I think it's fine for nations continue to use the flags.

- [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

regression is found:

evan
2025-08-17 21:57:09 -04:00
Aotumuri 3863f52bb8 mls (v4.4) (#1753)
## Description:

mls for v25
Version identifier within MLS: v4.4

## 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
- [x] I have read and accepted the CLA agreement (only required once).

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

aotumuri
2025-08-17 21:54:15 -04:00
evanpelle 0e0ec67dcd Have trains produce more gold (#1759)
During the play test, trains did not produce enough gold. So increase
gold, and give 4x bonus for allies.

- [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
- [x] I have read and accepted the CLA agreement (only required once).

regression is found:

evan
2025-08-17 21:54:14 -04:00
evanpelle 70b7464a4b fix alternate view perf regression (#1734)
Have the diplomacy view only draw border, not interior tiles. Drawing
the interior tiles is a very expensive operation and caused main thread
cpu usage to spike to close to 100%.

Also change the color scheme so that neutral players are gray, and
embargoed players are red. I think long term embargo should be more of a
war state.

Added embargo update and cleaned it up to use Player instead of
PlayerID. There's no reason to pass ids around.

<img width="493" height="466" alt="Screenshot 2025-08-07 at 6 25 55 PM"
src="https://github.com/user-attachments/assets/75552036-42f1-4103-9537-234ff1c0464f"
/>

- [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
- [x] I have read and accepted the CLA agreement (only required once).

regression is found:

evan
2025-08-17 21:53:40 -04:00
Aleksey Orekhovsky e6ff3c4ce3 Reintroduce commit metadata in the final image (#1737)
## Description:
This PR fixes a regression where the `GIT_COMMIT` environment variable
was no longer available in the final container image after a recent
Dockerfile refactoring.

## 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
- [X] I have read and accepted the CLA agreement (only required once).

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

aaa4xu
2025-08-17 21:51:25 -04:00
evanpelle 45fcd9dcbd reduce train frequency (#1722)
## Description:

I played a few games and the number of trains was distracting. Cut the
number of trains roughly in half, we will probably need to adjust train
gold to compensate.

## Please complete the following:

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

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

evan
2025-08-17 21:51:25 -04:00
Scott Anderson 1da46cfef2 Enable the @stylistic/ts/quotes eslint rule (#1850)
## Description:

Enable the `@stylistic/ts/quotes` eslint rule.

Fixes #1788

## 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
2025-08-17 21:00:16 -04:00
Scott Anderson 0a40bcebf0 Enable the sort-imports eslint rule (#1849)
## Description:

Enable the `sort-imports` eslint rule.

Fixes #1784

## 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
2025-08-17 20:53:44 -04:00