Commit Graph

4316 Commits

Author SHA1 Message Date
hacker
7e801c6fd7 Updated version
Some checks failed
Continuous Integration / Linux (.NET 8.0) (push) Has been cancelled
Continuous Integration / Windows (.NET 8.0) (push) Has been cancelled
2026-07-20 20:27:09 +01:00
Gustas
0a9b493c14 Moved game save notification to StartGameNotification 2026-02-22 17:17:59 +00:00
Gustas
a0a0d832f9 Rerendered UI 2026-01-25 13:08:24 +01:00
Paul Chote
dd14d72ed3 Update TD map African Gambit. 2026-01-22 15:59:24 +02:00
xan2622
78873b8e00 Replace labels on Map Editor (copy, paste, undo, redo) buttons by glyphs
Icons are from https://github.com/twbs/icons
2026-01-19 15:14:42 +02:00
Paul Chote
34e1e05dd8 Revise several TD encyclopedia images. 2026-01-13 11:56:16 +02:00
Ashley Newson
df20709158 Rename "Experimental" map generator to "Classic"
Renames the "Experimental" map generator to "Classic" in internal
code, configuration, and user-facing text.

Additionally, replace the user-facing names for the Experimental and
D2K map generators (as seen in the map editor tools dropdown) with
"Map Generator".
2026-01-12 22:23:50 +02:00
Dominic Renaud
f8eefe310c Add input style to match other, non-C&C, RTS games
Uses left-click for targeted orders (attack move, guard, selecting movement types from the command bar, etc.) and right-click for contextual ones. Works like basically all non-C&C games

Removed GameSettings.UseClassicMouseStyle, as it is replaced by MouseControlStyle


Changed Minelayer and Chronotank teleport to UnitOrderGenerator

Fixes bug with Modern controls issuing a move order cancelling a mine field order

Better organizes all unit orders into a single order generator base class, rather than having their logic spread across multiple base classes, which required some hacks to get the control logic to match
2026-01-04 12:35:35 +00:00
Matthias Mailänder
2c0a4f5873 Extract briefings for localisation. 2026-01-03 11:31:48 +02:00
Gustas
9fccc35046 Add cancel and exit keybinds to selection 2026-01-01 12:47:51 +00:00
Gustas
8869533d07 Fix error label being mispositioned 2026-01-01 12:47:51 +00:00
Ashley Newson
b2f32f8907 Add "Plots" terrain type for RA and CnC map generation
Some common feedback about preview generated maps is that they are too
chokey. This change aims to add a new terrain type called "Plots" that
retains the variety of terrain features present in the Gardens
terrain, but opens up the play area a bit more. In essence, it strikes
a balance between the densely packed Gardens terrain type and the
loosely packed Plains and Parks terrain types.

This new terrain type notably uses a smaller noise feature size to
provide smaller but more regular map structure, and expands the
pathway cutouts and contour spacings for forests and cliffs.

The new Plots terrain type is made available for both RA and CNC and
becomes the new default.

This is an additive configuration-only change. Replay and multiplayer
map generation retains forward/backward compatibility.
2025-12-30 09:21:09 +02:00
Paul Chote
0f22e3d4e4 Fix mission options peeking below the FMV playback. 2025-12-29 15:13:56 +02:00
Paul Chote
0d479e7c18 Move settings tabs to fluent. 2025-12-28 15:53:16 +02:00
Paul Chote
4436f07fbf Move settings to Gameplay tab. 2025-12-28 15:53:16 +02:00
Paul Chote
81fec36fbb Resolve lobby option notifications client-side. 2025-12-22 23:05:07 +00:00
Gustas
493cf3f1eb Update TD map pool 2025-12-12 23:05:10 +00:00
Gustas
9e926b0f53 Fix large dropdowns overlapping 2025-12-05 18:17:15 +02:00
Gustas
7e8f4a3479 Truncate less of the player name, adda tooltip 2025-11-24 17:43:12 +02:00
Gustas
5ff7c9f269 Fix scaling issues 2025-11-24 12:33:53 +02:00
Gustas
ec7461f09f Remove redundant fields 2025-11-24 12:33:53 +02:00
Gustas
89a4823a83 Add a lint test for running update rules 2025-11-24 11:52:56 +02:00
Ashley Newson
56e6a9e6dc Improve MultiBrush collection shorthands
This expands upon the limited FromTemplates MultiBrush collection
shorthand:

- Adds a corresponding FromActors shorthand.
- Allows FromTemplates and FromActors to mix in additional properties,
  such as weights and backing tiles.
- Updates the MultiBrush collections used across the official mods to
  make use of these shorthands.

Note that this reorders some MultiBrush definitions for
conciseness. This partially (cosmetically) re-randomizes map generator
output.
2025-11-16 21:01:29 +02:00
Gustas
7004b552c9 Add ActorMapOverlay 2025-11-07 13:04:12 +02:00
Gustas
d26b9a10ed Add WithDamageOverlayPropertyRename update rule
Also make trees, ships and vehicles burn a random duration
2025-10-16 21:50:44 +03:00
dnqbob
961702d818 Bot mcv expansion: 1. Add ResourceMapBotModule. 2. Add McvExpansionManagerBotModule. 3. Give BaseBuilderBotModule better control over refinery. -- allow bot sell refinery too close. -- allow bot sell refinery far away from resource. (requires ResourceMapBotModule) -- allow bot recieve refinery construct requirement. 4. Give BaseBuilderBotModule control of expansion timing. (requires McvExpansionManagerBotModule) 5. Remove unused VehiclesFactoryTypes and useless BarracksTypes (now all use ProductionTypes). 6. Give HarvesterBotModule ability of order harvesters in low resource area to high resource area. 2025-10-12 17:10:01 +03:00
Gustas
a8b13d012b Remove AlwaysVisible 2025-09-11 06:17:04 +01:00
Ashley Newson
c3b22c9102 Remove Inner types from various MultiBrush segments
Inner types in MultiBrush segment definitions can usually be derived
automatically from the start and end types. This is especially
important for segments with different starts and ends, where the Inner
type could be either one (e.g. beach to watercliff changers). Inner
types are now only needed in two cases:

- The Inner type doesn't match either the start or end. For example,
  road diagonals.
- The Inner type should only match one of the start or the end. For
  example, cliffs which end into clear tiles.

This commit cleans up the unneeded or unwanted Inner type definitions
in the base mods.
2025-08-22 19:20:22 +03:00
Gustas
b2215c6dd1 Only allow using path tool when panel is enabled 2025-07-28 21:44:58 +02:00
Gustas
f0ec8105b3 Players and world don't need to be visible 2025-07-27 21:06:25 +02:00
darkademic
0fac8d0d31 Add script tags to map editor actor properties. 2025-07-21 14:57:51 +03:00
Ashley Newson
484784bd4d Refine lobby map generation logic
In early iterations of the lobby map generation logic, a for loop was
used to retry map generation with alternative seeds in case it
failed. This seed randomization logic didn't exist in the final merged
version, but the for loop wasn't cleanup up, and ends up repeating any
map generation failures 5 times deterministically.

Additionally, the logic caught Exception instead of the more specific
MapGenerationException, which is the only exception that is expected
to arise in healthy builds/configurations (due to bad luck rather than
bugs).

This change:

- removes the for loop;

- only catches MapGenerationException;

- adjusts the user-visible failure message to reflect that trying
  again (without adjusting settings) is a valid course of action (now
  that it's not done internally);
2025-07-17 10:42:27 +03:00
darkademic
77baa7a35f Implement ScrollableLineGraphWidget. 2025-07-17 10:34:35 +03:00
Ashley Newson
25571df2b6 Refactor ExperimentalMapGenerator into reusable methods
This change lifts large portions of ExperimentalMapGenerator's logic
into a new "Terraformer" class with highly documented methods that can
theoretically be used by alternative map generator classes. Some
additional refactoring may occur in future, subject to the practical
needs of additional map generators. ClearMapGenerator is also
simplified.

This is not a pure refactor and contains some algorithmic and
behavioral changes, as well as few minor bug fixes. Notably:

- The logic for obstructing unreachable water has been somewhat
  replaced.

- In CnC, where water is already unplayable, EMG no longer obstructs
  water. (RA still does, as water is playable there.)

- Mountain (cliff) generation is now somewhat more effective. This
  increases the number of cliffs seen on many presets. Settings should
  no longer use "Mountains: 1000".

- PlayableSpace logic has been consolidated into Terraformer.

- PlayableSpace.Playability no longer exists as PartiallyPlayable
  became redundant. Its uses have been replaced with a simple
  boolean. Consequently, some defunct code and configuration has been
  removed.

- Adjust MultiBrush replaceability contract painting behavior to be
  more intuitive.

- Fix off-by-one error in map bounds computation.

- Fix some usages of mixed up MersenneTwisters.
2025-07-14 20:09:10 +03:00
toasted-dev
444e849241 Changelog: Fix typos.
Updated the Chinook Transport helicopter's description to correct the spelling of "detachment".

Corrected the description of the mutated lifeform by changing "expose" to "exposed" for grammatical accuracy.
2025-07-14 15:50:33 +03:00
Михаил Васильев
368ac277d0 Fix typo in NOD08a mission description 2025-06-17 15:36:54 +03:00
Михаил Васильев
631cbb1421 Fix 07a mission description 2025-06-17 15:23:35 +03:00
JovialFeline
1cdc823bca Add The Tiberium Strain mission (CnC) 2025-05-30 16:10:51 +03:00
Ashley Newson
2a0e787ae7 Check for and fix non-unit MultiBrush segment steps
TilingPath's algorithms are designed on the assumption that MultiBrush
segments use unit steps in their point sequences. Non-unit
sequences can result in incorrect or suboptimal tilings.

This change ensures point sequences are validated for unit steps, and
fixes a non-compliant cliff tile across all tilesets.
2025-05-30 15:22:53 +03:00
Ashley Newson
daf36769d6 Add additional MultiBrush segments for RA and CnC
Adds MultiBrush definitions for River (RA and CnC) and WaterCliff (RA
only), allowing them to be tiled with the Path Tiling tool.

A small enhancement to the MultiBrush and TilingPathTool code is added
to allow the inner type to be derived from start and end types. This
allows segments that interface between types (such as WaterCliff to
Beach) to be usable when tiling either WaterCliffs or Beach. Whilst
this makes the inner types of many of the existing MultiBrushes
redundant, no simplification is performed as part of this change.
2025-05-19 22:01:25 +03:00
Paul Chote
6ffd786d5b Add Generate Map tab to the lobby map chooser. 2025-05-15 23:08:13 +03:00
Paul Chote
979483b63c Add MapClassification.Generated.
Generated maps are created at runtime using a
mod-defined trait. They are embedded directly
into replays and save games as they exist in
memory only, and disappear after the game exits.
2025-05-15 23:08:13 +03:00
Paul Chote
5292919917 Move Boundary Shape option before Players. 2025-05-15 23:08:13 +03:00
Ashley Newson
ad08045e5f Add path auto-tiling tool to map editor
Exposes the TilingPath code used by the map generator as a map editor
tool to help automate the process of tiling sequences of templates
together.

No additional template stitching definitions are added as part of this
commit. As such, the tool currently only supports the same auto tiling
as the map generator does. This includes:

- RA and CnC support.
- Beaches, land cliffs, and roads.

Support for additional mods and templates can be added in follow-ups
by adding the necessary MultiBrush definitions.

Related changes included in this commit to support this work include:

- Add support for sparse EditorBlits.
- Add support for MultiBrush to EditorBlitSource conversion.
- Add support for EditorBlitSource previewing.
- Adjust the "Road" types used in segmented MultiBrush definitions.
2025-05-15 22:41:43 +03:00
Paul Chote
0313d04970 Polish map generator settings. 2025-05-05 20:50:55 +03:00
atlimit8
0b110a0423 ping when non-structures are attacked 2025-04-30 22:22:53 +03:00
atlimit8
e27aa0d379 replace use of BaseAttackNotifier trait w/ DamageNotifier 2025-04-30 22:22:53 +03:00
Ashley Newson
4a4217c3b3 Fix resource calculation in map generator
The editor's resource value calculation logic was fixed in #21820 to
match actual gameplay. The map generator logic originally copied the
editor logic from EditorResourceLayer rather than ResourceLayer and
associated game logic. As such, it inherited incorrect calculations.

This change updates the map generator logic to match the now
consistent logic in both ResourceLayer classes. Map generator resource
settings are also adjusted -25% to continue roughly matching the
previous resource output.
2025-04-30 12:51:14 +03:00
Paul Chote
965a490b70 Dynamically populate map chooser tabs. 2025-04-29 12:17:27 +03:00
Paul Chote
5b7a714ac2 Replace Tileset id with Environment name. 2025-04-28 15:41:54 +03:00