v0.25.3 patch: bugfix: sending emoji to self crashes the game
v0.25.2 patch: fix squad games crashing
V25 Update Announcement
FACTORIES & RAIL NETWORKS
-
Factories now automatically build train tracks connecting to:
- Other factories
- Cities
- Ports
-
Trains spawn at factories and deliver goods to cities and ports
-
Trade Revenue (per train):
- Allied territories: 50,000 gold
- Neighboring territories: 25,000 gold
- Your own territory: 10,000 gold
Connect your rail network with allies and neighbors for maximum profit!
Major Changes
- Removed workers & troop ratio bar
- Players earn 1k gold per second, bots earn 500 gold per second.
- Trade ship spawn rate is determined by the number of ports players have and total number of tradeships on the map.
- Traitor debuff does not apply when betraying an inactive player
- Added SAM smart targeting - predicts incoming nuke's trajectory, allowing early missile launch before targets is in range
- Fixed hanging alliance request bug
- Fixed the disconnected (Zzz) icon from persisting when player reconnects
- Ports and Factories share same price scaling
- Large players get a defense debuff
Maps
- Added Pluto map to public and singleplayer matches
- Made Baikal more frequent in public matches rotation
- Added Yenisei
UI & Quality of Life
- Added FPS monitor overview
- Players on the same team get a distinct color based on team color
- Added kick player functionality in private games
Release notes:
- Fix type errors in /server related to typescript strict mode by @antoine-gannat in #1468
- Zod v4 update by @VariableVince in #1546
- Players on the same team get a distinct color based on the team color by @sidneyprins in #1297
- Improve the alternate view by adding geopolitical colors for territories and hover-based highlighting by @devalnor in #1320
- Add conquest FX by @DevelopingTom in #1390
- Add the Pluto map by @djmrFunnyMan in #1442
- Add private lobby ID visibility toggle by @floriankilian in #1382
- Reduce docker image size with multi-stage build and dependency pruning by @aaa4xu in #1581
- Ensuring that MutableAlliance::extend is called in test case by @bypie5 in #1582
- Add Circassian nation by @qunash in #1577
- Yenisei map by @Duwibi in #1517
- Reduce docker image size further by removing unused dependencies by @aaa4xu in #1588
- Change variable name from dKeyPressed to debugKeyPressed in LangSelector by @Aotumuri in #1583
- Fix and update Pluto map by @djmrFunnyMan in #1587
- Improve UnitGrid performances by grouping units by type by @DevelopingTom in #1592
- Don't become traitor when betraying inactive player by @TylerHanavan in #1610
- Fix all strict errors in /client by @antoine-gannat in #1489
- Make Baikal More Common by @Duwibi in #1616
- Fix inconsistent host lobby join URL by @Duwibi in #1634
- Display FPS monitor overview by @devalnor in #1573
- Enforce minimum test coverage by @scottanderson in #1646
- Fix for two formatPercentage functions by @Kipstz in #1659
- Fix the stale disconnected (Zzz) icon persisting when a client reconnects by @TylerHanavan in #1631
- Shift scroll only increase by @richardroy in #1625
- Loosen coverage requirements slightly by @scottanderson in #1669
- Handle canvas context loss and restoration by redrawing by @aaa4xu in #1667
- Reduce Docker image size by refactoring map loading by @aaa4xu in #1621
- Private Lobbies: Add kick player functionality by @floriankilian in #1436
- Further Darken Background Image for Dark Mode - Issue #1238 by @floriankilian in #1653
- Add support for merge groups by @scottanderson in #1674
- Remove workers & troop ratio bar, only have troops by @evanpelle in #1676
- contributor by @scottanderson in #1647
- Convert GameServer's message handler from if to switch #1639 Open by @floriankilian in #1649
- Remove gold from dead players by @djmrFunnyMan in #1450
- feature/prevent-from-accident-reloading by @falcolnic in #1411
- Enhance dark mode support by @mananlalwani in #1682
- Remove unused processName util and twemoji dependency by @aaa4xu in #1683
- Allow main menu modals to be closed by clicking escape by @TylerHanavan in #1617
- Fix broken test by @scottanderson in #1688
- SAM smart targeting by @DevelopingTom in #1618
- Add random shell damage by @Kipstz in #1665
- Fix Race conditions on alliances by @Kipstz in #1605
- Merge group by @scottanderson in #1689
- Merge group by @scottanderson in #1691
- add SEO & Open Graph by @evanpelle in #1692
- Giant World Map Nations: fix spawn points, add new ones, change others by @VariableVince in #1655
- Update the news modal by @scottanderson in #1693
- Fix invite link in Join Lobby by @Kipstz in #1695
- Fix remaining errors and enable strict mode by @antoine-gannat in #1628
- Rework trains to encourage alliances by @DevelopingTom in #1697
- Addition of FlagInputModal by @Aotumuri in #1606
- Icons update by @jrouillard in #1562
- Update viewport meta to contain user-scalable=no by @Tfc538 in #1666
- Use OR instead of nullish operator on TokenSchema by @evanpelle in #1702
- Remove role based perms, fetch cosmetics.json from api by @evanpelle in #1640
- Add auto-upgrade buildings feature with middle mouse click by @Kipstz in #1597
- remove unload warning. by @evanpelle in #1704
- Alert on payment success or failure. by @evanpelle in #1705
- Add comprehensive test for lang resource and flag existence by @Aotumuri in #1643
- Add button for remove building by @Kipstz in #1609
- Fix: Automatically Close Flag Input Modal on Game Start by @Aotumuri in #1709
- Disable strict mode by @scottanderson in #1713
- Add a new Mars (Revised) map by @djmrFunnyMan in #1435
- Fix: Modal background color does not cover entire content when alwaysMaximized is set by @Aotumuri in #1710
- Fix: Sync Dark Mode Button State by @Aotumuri in #1708
- Switch to @swc/jest to speed up tests Fixes #1679 by @TylerHanavan in #1680
- Add basic ICU message format support for translations by @Aotumuri in #1645
- Fix oversight: non-human player never responds to alliance renewal request by @VariableVince in #1536
- enable factories by default by @evanpelle in #1718
- allow trains & railroads between non-allies by @evanpelle in #1719
- Add frontend-approver and backend-approver to CODEOWNERS file by @scottanderson in #1723
- Bump the npm_and_yarn group across 1 directory with 2 updates by @dependabot[bot] in #1481
- Added trackpad support for moving maps by @pierrebrtr in #1717
- Enable the
sort-keyseslint rule by @scottanderson in #1746 - Cancel alliance requests if the recipient attacks by @DevelopingTom in #1733
- refactor: extract websocket handler functions by @scottanderson in #1751
- Enable
@total-typescript/ts-resetby @scottanderson in #1761 - strict mode: GameInfoSchema.parse by @scottanderson in #1763
- Enable eslint warning for type assertions by @scottanderson in #1762
- Pause replay or SP game when opening Settings modal by @VariableVince in #1530
- Re-enable strict mode by @scottanderson in #1749
- Remove CLA from the PR description by @scottanderson in #1776
- Make the player info overlay collapsible by @TLS15 in #1768
- Private lobby toggle donation by @camclark in #1752
- Enable various eslint rules by @scottanderson in #1773
- Enable eslint rule
@stylistic/ts/indentby @scottanderson in #1779 - Enable more stylistic rules by @scottanderson in #1792
- Enable eslint rule
quote-propsby @scottanderson in #1795 - Enable various eslint rules by @scottanderson in #1796
- vote for winner by @evanpelle in #1565
- Fix broken intent handling by @scottanderson in #1801
- eslint: Prefer
type.array()overz.array(type)by @scottanderson in #1810 - Update public lobby map frequencies by @Baguette8ot in #1816
- Ensure the radial menu is within the viewport by @woodydrn in #1817
- removed duplicate Papua New Guinea by @TheGiraffe3 in #1823
- Enable the
@typescript-eslint/no-explicit-anyeslint rule by @scottanderson in #1830 - Enable the
@typescript-eslint/no-unsafe-argumenteslint rule by @scottanderson in #1831 - Enable the
@typescript-eslint/no-unsafe-assignmenteslint rule by @scottanderson in #1832 - Enable the
@typescript-eslint/no-unsafe-member-accesseslint rule by @scottanderson in #1833 - Enable the
@stylistic/eol-lasteslint rule by @scottanderson in #1834 - Display a dialog with join failure reason by @scottanderson in #1756
- Enable the Enable
max-lenandmax-lineseslint rules by @scottanderson in #1842 - fix: implement lazy loading for flag images and clean CSS by @abdallahbahrawi1 in #1843
- Add total units / buildings view to the teamstats component by @Killersoren in #884
- Enable the
no-undefeslint rule by @scottanderson in #1848 - Enable the
sort-importseslint rule by @scottanderson in #1849 - Enable the
@stylistic/ts/quoteseslint rule by @scottanderson in #1850 - fix eslint failure by @scottanderson in #1852
- Remove hard structure limit for nations by @scottanderson in #1853
- Smarter nation structure placement by @scottanderson in #1851
- Enable the
no-multiple-empty-lineseslint rule by @scottanderson in #1856 - more nations on the World Map by @TheGiraffe3 in #1770
- Enable the
object-shorthandeslint rule by @scottanderson in #1857 - Enable the
@typescript-eslint/prefer-readonlyeslint rule by @scottanderson in #1859 - Enable the
prefer-destructuringeslint rule by @scottanderson in #1858 - Allies no longer embargo each other by @ElMelchizedek in #1863
New Contributors
- @antoine-gannat made their first contribution in #1468
- @sidneyprins made their first contribution in #1297
- @qunash made their first contribution in #1577
- @richardroy made their first contribution in #1625
- @mananlalwani made their first contribution in #1682
- @Tfc538 made their first contribution in #1666
- @dependabot[bot] made their first contribution in #1481
- @pierrebrtr made their first contribution in #1717
- @TLS15 made their first contribution in #1768
- @camclark made their first contribution in #1752
- @Baguette8ot made their first contribution in #1816
- @woodydrn made their first contribution in #1817
- @abdallahbahrawi1 made their first contribution in #1843
- @ElMelchizedek made their first contribution in #1863
Full Changelog: v0.24.13...v0.25.0