Commit graph

61 commits

Author SHA1 Message Date
Vantha
2728c65a49
Remove some unused getters from components
Since __________, a bunch of getter on various components are now
unused. This patch removes three of them:
- `Identity.prototype.GetRankTechName`, because it is kinda redundant since
  there's also `Identity.prototype.GetRank`.
- `Auras.prototype.GetDescriptions` and `Upgrade.prototype.GetUpgrades`
  because they are long and perform additional logic (only duplicating
  some lines from globalscripts/Templates.js).

All of the other getters are simple and kept for now because they are
useful to have in general and might be handy in the future or for mods.
2026-08-14 12:47:18 +02:00
Atrik
0171a58f26 Handle empty Auras reference in checkrefs
Some checks failed
checkrefs / lfscheck (push) Has been cancelled
checkrefs / checkrefs (push) Has been cancelled
lint / cppcheck (push) Has been cancelled
lint / copyright (push) Has been cancelled
lint / jenkinsfiles (push) Has been cancelled
pre-commit / build (push) Has been cancelled
2026-04-17 12:32:08 +02:00
Atrik
eb2ff98883 Display aura range overlay during building preview
Fixes #8868
2026-04-17 12:32:08 +02:00
Dunedan
93ce94655d
Use @stylistic/brace-style for eslint
Up to now `eslint-plugin-brace-rules` was used to enforce a common brace
style for JavaScript code. This plugin was however updated the last time
over 9 years ago and will be incompatible with ESLint v10, as that
[removes `context.getSourceCode()`][1], the plugin relies on.

To keep the eslint config working with ESLint v10, this replaces
`eslint-plugin-brace-rules` with the [`@stylistic/brace-style`][2] rule
from `@stylistic/eslint-plugin`, a package we already use.

While `@stylistic/brace-style` doesn't offer an option to format braces
in exactly the same way as before, the "allman" style seems to be the
one closest to the existing code.

[1]: https://eslint.org/blog/2025/11/eslint-v10.0.0-alpha.0-released/#removed-deprecated-rule-context-members
[2]: https://eslint.style/rules/brace-style
2026-01-12 21:33:52 +01:00
Ralph Sennhauser
4c4f787c63
Fix eslint rule 'prefer-const' in components/[A-B]*
eslint --no-config-lookup --fix --rule '"prefer-const": 1' \
    binaries/data/mods/public/simulation/components/A* \
    binaries/data/mods/public/simulation/components/B* \

Ref: #7812
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2025-05-11 10:40:23 +02:00
Freagarach
c917c39a0d Pull Diplomacy out of cmpPlayer.
Who says only players should be able to conduct diplomacy?
Also separation of concerns, more maintainable files.

Differential revision: https://code.wildfiregames.com/D4921
Comments by: @elexis, @Stan
Refs. #5894

This was SVN commit r27722.
2023-06-19 06:33:33 +00:00
Freagarach
966727b52e Make the player state an enum.
So we don't need to hassle with strings all over the place.

Differential revision: D4504
Comments by: @Silier
This was SVN commit r27242.
2022-11-22 07:54:11 +00:00
Freagarach
f03f19cfc5 Fix aura tooltips on panel entities.
Removed from the GUI interface in d8ed8b1462, but its uses weren't
checked (or ignored).
(https://code.wildfiregames.com/source/0ad/browse/ps/trunk/binaries/data/mods/public/gui/session/session.js;20965$998)

Reported by @Langbart
Based on a patch by: @Langbart
Differential revision: https://code.wildfiregames.com/D4648
Fixes #6387

This was SVN commit r26896.
2022-05-20 10:00:31 +00:00
Freagarach
21e866fcf0 Technically seperate Turrets from GarrisonHolder.
While they often look alike, their behaviour is totally different.
This split has some implications:
- There are now separate auras for garrisoning and turrets.
- Entities can now have both turret points and garrison slots,
independent of eachother.

In general previous behaviour is maintained as much as possible.

Differential revision: D3150
Comments by: @Nescio, @wraitii
Tested by: @v32itas
This was SVN commit r25123.
2021-03-26 10:18:30 +00:00
Freagarach
93fe2ffa8a Handle aura and production pause on GarrisonedStateChanged message.
This reduces hard-coupling between the components.

Refs. #6081
Differential revision: D3683
Reviewed by: @wraitii
This was SVN commit r25062.
2021-03-16 05:49:36 +00:00
wraitii
93a352ad16 Fix UnitAI range queries - allow queries to ignore sizes - partial revert of d0fc8ff67d
Units sometimes ignored targets that entered their LoS. The cause is
d0fc8ff67d: range queries returned units farther away, and those units
might actually be out of range if distance is computed center-to-center,
which both UnitAI and LOS do. This meant that code relying on range
query updates was possibly broken, and indeed units missed things (see
ticket).

This introduces a boolean to switch between pre-d0fc8ff67d behaviour
(entity-as-point, center-to-center range queries) and post-d0fc8ff67d
(entities-as-circumscribing-circle, edge-to-edge range queries).
The former is used for UnitAI (where the new behaviour bugged), auras
(where varying structure sizes made it awkward) and build
restrictions(which simply did not really need it).

Reverts 7f1ee23d88, 050c5401b1 (with the exception of the iber monument
footprint), and the template changes in d0fc8ff67d itself.

It also reduces alertRaiser ranges slightly, this was missed in the
original diff.

#3381 is not reopened as BuildingAI still uses the new range queries.

Reported by: Freagarach
Comments By: Angen
Fixes #5968

Differential Revision: https://code.wildfiregames.com/D3456
This was SVN commit r24776.
2021-01-23 18:57:46 +00:00
wraitii
db4637f73a Fix issue with D274/e16c4c4800 - modifications are a list of effects, not a single effect
D274 introduced a silent change that modifications would only have one
effect per value-path, which was an unnoticed regression.

Detected following the comments from SonarQube reported here:
e16c4c4800#inline-4214

Comments By: elexis
Differential Revision: https://code.wildfiregames.com/D2315
This was SVN commit r22967.
2019-09-22 12:05:04 +00:00
wraitii
e16c4c4800 Add a system component to handle stat modifiers, make technologies and auras use this common interface.
The ModifiersManager system component provides an interface to add and
remove modifiers, and get modified stats.
The goal is to merge all the different stat-modifying systems 0 A.D. has
implemented over the years.
This commit makes technologies and auras use ModifiersManager. Some
cheats and AI bonuses also have a similar stat-modifying effect that
have not yet been updated.

Further, this system component makes it possible for e.g. triggers to
easily add modifiers, enabling the writing of Castle Blood Automatic,
RPG or Tower Defense maps without the need for mods or hacks.

The 'Modifier' name was preferred over 'Modification' as it is shorter
and more readable, along with the logic that 'modifiers' store
'modifications' and this stores modifiers. Renaming of other functions
and classes has been left for future work for now.

Internally, this uses a JS data structure. If performance issues arise
with it in the future, this data structure or the whole component could
be moved to C++.
The performance has been tested to be about as fast as the current
implementations (and specifically much faster for global auras with no
icons). Testing showed that sending value modification messages was by
far the slowest part.

Comments by: leper, Stan, elexis
Differential Revision: https://code.wildfiregames.com/D274
This was SVN commit r22767.
2019-08-24 07:37:07 +00:00
temple
583b6ec625 Stop some auras from being applied extra times, don't apply player auras to templates, and fix some linting errors
Differential Revision: https://code.wildfiregames.com/D1430
Comments by: fatherbushido, elexis
This was SVN commit r21785.
2018-04-26 00:35:24 +00:00
elexis
ec8d95abe1 Update auras of entities of other players that affected the defeated player after 2651caa885 removed this case handling unintentionally.
Also avoids some unneded player entity aura cleans.

Differential Revision: https://code.wildfiregames.com/D1453
Reported and comments by: fatherbushido
Reviewed By: temple
refs #5099

This was SVN commit r21779.
2018-04-24 17:28:24 +00:00
elexis
aa5ddc3884 Don't apply team bonuses to defeated players, counterpart to 6d318d0869 / D12.
From Differential_Revision: ​https://code.wildfiregames.com/D1426
Reviewed By: temple
Comments By: fatherbushido
This was SVN commit r21713.
2018-04-13 16:16:22 +00:00
elexis
65c8b51cd4 Don't send MT_PlayerDefeated and MT_PlayerWon to components of entities who subscribed locally but aren't the playerentity of the affected player, equal to D733.
Besides the performance improvement for that hypothetical case,
it also means OnGlobalPlayerDefeated is used consistently and
an oversight like the one fixed by 2651caa885 might become easier to
notice.

From Differential_Revision: https://code.wildfiregames.com/D1426
Reviewed By: temple
Refs #5099

This was SVN commit r21712.
2018-04-13 15:52:41 +00:00
elexis
2651caa885 Don't recompute auras of each and every entity globally upon playerdefeat, but only all player auras (for simplicity, and the affected units, structures upon OwnershipChange), refs 6d318d0869 / D12.
The next diff changes this to a global message subscription, so that it
is easier to recognize.

Fixes #5099.
From Differential_Revision: https://code.wildfiregames.com/D1426
Pointed out by: fatherbushido
Reviewed By: temple
This was SVN commit r21711.
2018-04-13 15:30:46 +00:00
elexis
36fba76a74 Revert unintentional function rename in 40cc3aaa09.
Don't troll OOS-debugging developers with aura ranges rendered in an
invisible color, refs 5fbb224dc0 / D555.

This was SVN commit r20961.
2018-01-22 06:02:52 +00:00
elexis
c90d72deb5 Replace DataTemplateManager simulation component with a globalscript, refs #4868.
Removes the serialization of JSON files, shrinking savegame files and
rejoin states sent across the network, refs #3834, #4239, #3909,
f24523dc8f.
Removes the AI C++ code to read JSON files from e33d4a52e9 since the AI
can now use the globalscript.
Allows the AI to read Aura templates and removal of GUIInterface code to
improve performance.
Serialization of the JSON objects in other simulation components was
removed in 9c0e37f2c0 / D1109, a6f14f5631 / D1130.

Serialization removal planned by sanderd17
AI part proofread by mimo
Simulation part proofread by bb
Discussed with Itms on irc

Differential Revision: https://code.wildfiregames.com/D1108
This was SVN commit r20737.
2017-12-31 01:02:21 +00:00
elexis
40cc3aaa09 Rename RangeVisualization component from ee5bb1fd61 / D238 to RangeOverlayManager for consistency with the RangeOverlayRenderer from 5fbb224dc0 / D555.
Refs #4899, #3915

This was SVN commit r20627.
2017-12-10 03:28:38 +00:00
elexis
be06299e28 Use only one getter for range overlays instead of three to four in the Heal and Auras component.
Move default Heal range visualization texture properties to the template
and only display Heal ranges if the template was given.

Differential Revision: https://code.wildfiregames.com/D1128
Refs #3915, #4349, D238, D432, D568

This was SVN commit r20624.
2017-12-10 03:08:05 +00:00
mimo
e396ff170e No need to create aura's rangequery when the aura is not applied
Reviewed By: fatherbushido
Differential Revision: https://code.wildfiregames.com/D963
This was SVN commit r20300.
2017-10-15 15:14:11 +00:00
mimo
2cf88d79a4 Ranged auras not enabled (because of a tech requirement for example) should not be visualized
Reviewed By: fatherbushido
Differential Revision: https://code.wildfiregames.com/D962
This was SVN commit r20299.
2017-10-15 09:28:18 +00:00
fatherbushido
228ba51d5c Aura Range tooltip. Reviewed by elexis.
Differential Revision: https://code.wildfiregames.com/D458
This was SVN commit r19544.
2017-05-09 12:55:56 +00:00
fatherbushido
17aa212c93 Clean a bit auras gui info parsing
Summary: (Title is clumsy)

Test Plan:
Check for example auras tooltip:
structree
entity tooltip
construction panel
wall tooltip too

Reviewers: elexis

Reviewed By: elexis
Subscribers: Vulcan

Differential Revision: https://code.wildfiregames.com/D447
This was SVN commit r19526.
2017-05-07 18:38:41 +00:00
elexis
ee5bb1fd61 RangeVisualization component and use it to visualize Aura ranges.
Differential Revision: https://code.wildfiregames.com/D238
Fixes #4349
Patch By: Sandarac
This was SVN commit r19519.
2017-05-06 00:47:21 +00:00
fatherbushido
d73d656cc5 Adress a Todo in auras code. Add player type aura. Improve tests. Accepted by mimo.
Differential Revision: https://code.wildfiregames.com/D41
This was SVN commit r19117.
2017-01-06 20:14:39 +00:00
fatherbushido
553ab4f961 Fix messy identation in my previous commit. Noticed by leper. Refs 6d318d0869.
This was SVN commit r19094.
2017-01-01 17:39:18 +00:00
fatherbushido
6d318d0869 Remove team bonus when the source player is defeated. Reviewed by wraitii.
Differential Revision: https://code.wildfiregames.com/D12
This was SVN commit r19093.
2017-01-01 17:23:29 +00:00
fatherbushido
feb22d7626 Don't use range queries for global auras. Fix related team bonus. Add Mauryan team bonus. Based on a sanderd17 patch. Reviewed by wraitti.
Differential Revision: https://code.wildfiregames.com/D19
This was SVN commit r19092.
2017-01-01 16:52:24 +00:00
mimo
fe01a710a5 implement ptol civ bonus and optimization of ResourceTrickle component, refs #4082
This was SVN commit r18920.
2016-11-11 12:46:25 +00:00
mimo
98f8541581 remove a useless leftover var
This was SVN commit r18434.
2016-06-24 18:03:19 +00:00
sanderd17
450973a624 Clean up some code-style issues reported by leper
This was SVN commit r18390.
2016-06-16 14:51:12 +00:00
sanderd17
32d8c60239 Implement team bonuses. Patch by fatherbushido. Fixes #2445
This was SVN commit r18115.
2016-05-01 08:38:59 +00:00
sanderd17
f24523dc8f Rename TechnologyTemplateManager to DataTemplateManager in order to reflect its new function. Fixes #3909. Disable serialisation of technology templates. Refs #3834
This was SVN commit r18100.
2016-04-27 08:25:47 +00:00
sanderd17
4be96ece08 Implement stackable auras + fix an issue with techs, auras and ownership changes. Patch by fatherbushido. Fixes #3792
This was SVN commit r17982.
2016-04-05 14:13:44 +00:00
sanderd17
46ead523b8 Cleanup of the Auras code in preparation of stackable auras. Implements auras being enabled by techs. Refs #3792. Patch by fatherbushido
This was SVN commit r17974.
2016-04-04 18:55:44 +00:00
sanderd17
820846b56b Completely initialise Auras even before ownership is set. Fixes #3843
This was SVN commit r17931.
2016-03-21 16:22:40 +00:00
mimo
2546eecbf3 fix modifications (by tech or aura) of garrison and formation auras, fixes #3799, patch by fatherbushido
This was SVN commit r17863.
2016-03-10 21:46:37 +00:00
elexis
231586f2fa Aura cleanup.
Eliminate deprecated for-each.
Remove unused variable auraNames.
Use array-filter instead of for-loop.
Fix whitespace.
Don't use affectedPlayers outside of scope.

This was SVN commit r17835.
2016-03-06 14:57:39 +00:00
mimo
c9b0db7f5f Techs can now modify an aura
Wonder population bonus is now an aura (reverted when the wonder is
destroyed) with 10 pop (wonder) with an additionnal +40 with the tech
patch by fatherbushido

This was SVN commit r17809.
2016-03-01 17:10:42 +00:00
leper
e4834e8a0d Some JS component cleanup.
This was SVN commit r17301.
2015-11-28 08:27:38 +00:00
mimo
0b86bbd424 another bunch of cleanup (mainly missing semicolon) signaled by jshint
This was SVN commit r17045.
2015-09-19 12:50:48 +00:00
sanderd17
f009b52c0f Fix null-reference
This was SVN commit r16700.
2015-05-31 12:23:08 +00:00
sanderd17
27560e72fe Visualise auras by adding status icons to affected units. Implement the visualisation for the temple aura. Fixes #3180
This was SVN commit r16611.
2015-05-02 16:15:59 +00:00
sanderd17
89cc0fd0e1 Add support to escape dots (.) by using double dots (..) for aura keys. Fixes #2945 (I think)
This was SVN commit r16010.
2014-11-26 19:59:08 +00:00
sanderd17
1d7001c8cd Fix walls + remove debug warning
This was SVN commit r15319.
2014-06-09 17:51:23 +00:00
sanderd17
2fb0262142 Futher clean up heroes tooltips + move auras to the templates. Hope they have a bigger chance of staying consistent now.
This was SVN commit r15318.
2014-06-09 17:35:37 +00:00
sanderd17
3a2670f7fa Take aura descriptions out of tooltip, let auras be defined in the entity template rather than in JSON files, as they can't be reused anyway. Fix tooltips and auras for all heroes from athen to gaul.
This was SVN commit r15317.
2014-06-09 14:15:05 +00:00