Commit graph

107 commits

Author SHA1 Message Date
phosit
8b1e78ae1e
Use JS classes for the AI
Fixes: #6285
2026-07-23 15:15:59 +02:00
Vantha
280a19587f Define technology pairs in an array
This patch renames the "pair" property of paired technologies to
"partOfPair" for clarity and in the pair parent packs the two techs
(previously "top" and "bottom") into an array called "pair".
This makes the hierarchy more clear in the code and pairs might not be
always placed vertically in the future.
2026-07-06 05:01:12 +02:00
phosit
6facc9ee17
Fix AI OOS on rejoin related to random calls
Based on a diff from @Silier: https://code.wildfiregames.com/D2573
2026-05-10 14:18:48 +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
phosit
0a2bd6a5a4 Use proper js-modules for ai common-api
The common-api already used a coding pattern which was called modules.
That is replaced with native js-modules.

Refs: #8081
2025-08-13 14:04:16 +02:00
Ralph Sennhauser
ba9dcd8146
Fix eslint warnings for 'gamestate.js'
Fixes 'no-invalid-this' by converting to arrow function as thisArg is
only accepted by eslint for inlined function, "free" function might be
used in another context.

Also fixes 'consistent-return' and 'default-case' adn while at it
simplify the logic a bit.

Manual fixes needed for:
eslint --config full.mjs binaries/data/mods/public/simulation/ai/common-api/gamestate.js

Ref: #7812
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2025-05-27 19:25:30 +02:00
Ralph Sennhauser
a9987868c4
Fix eslint rule 'no-use-before-define'
Manual fixes needed for:
eslint --no-config-lookup --rule '"no-use-before-define": ["error", "nofunc"]

Ref: #7812
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2025-05-14 16:35:58 +02:00
Ralph Sennhauser
62ee1c34ac
Fix eslint rule 'prefer-const' in simulation/ai
eslint --no-config-lookup --fix --rule '"prefer-const": 1' \
    binaries/data/mods/public/simulation/ai

Ref: #7812
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2025-05-10 19:16:52 +02:00
Dunedan
8482f25800
Fix a bunch of spelling mistakes
This fixes a bunch of spelling mistakes found in user facing strings.

Fixes #7716
2025-04-11 06:24:32 +02:00
Andreas Traber
05f31300a1 Fix multiple bugs where a wrong variable is used.
Those bugs stood out to me as I was experimenting with migrating petra
to ES6 classes. Since this give the code stronger typing, those kind of
errors stand out immediately.
For example, autoResearch is a function, thus referring to it by name
will always return the same result. In other cases the referenced
variables simply don't exist.
2025-02-09 16:00:22 +01:00
Freagarach
73f741d266 Handle researching technologies in the TechnologyManager.
Moves the work done from cmpResearcher to cmpTechnologyManager.
No functional changes.

It allows fancy stuff in the future (#6364).

Differential revision: https://code.wildfiregames.com/D4438
This was SVN commit r26252.
2022-01-26 07:42:36 +00:00
Freagarach
3d7af82328 Improve support for classes in PetraAI.
Let PetraAI use MatchesClassList more.

Differential revision: https://code.wildfiregames.com/D2150
Reviewed by: Angen
Comments by: Stan
This was SVN commit r25584.
2021-05-28 06:54:48 +00:00
Angen
6598433108 Call get without has in getEntityById
getEntityById calls .has before actually getting the entity by .get and
otherwise returns undefined.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/get

The element associated with the specified key, or undefined if the key
can't be found in the Map object.

So calling has is redundant causing performance loss.

Differential revision: D3653
Reviewed by: @Freagarach
This was SVN commit r25048.
2021-03-14 12:45:08 +00:00
Angen
16fc7bb2de [Petra/AI] Handle permadeaths for heroes hotfix
caused by a79a47effe and de3ed2cd19 petra will be blocked by not being
able to train hero again as she does not do rotations.
add check for matchlimits reached for permadeaths
more propper solution to handle training with numbers greater than 1
will be needed in the future.

Differential revision: D3559
Accepted by: @Freagarach
This was SVN commit r24897.
2021-02-13 11:38:58 +00:00
Freagarach
b57abe806c Move civ-specific templates to subfolders.
See also
https://wildfiregames.com/forum/index.php?/topic/28614-template-folder-structure/.

Differential Revision: D2952
Reviewed By: @Nescio
This was SVN commit r24216.
2020-11-19 10:20:25 +00:00
Gallaecio
08966f8cde centre → center
Patch By: Nescio
Differential Revision: https://code.wildfiregames.com/D1802
This was SVN commit r22148.
2019-03-31 22:12:21 +00:00
mimo
18d8d2b29d petra cleanup
This was SVN commit r21749.
2018-04-20 15:36:14 +00:00
mimo
4ded9cbec2 ai: cleanup of common-api following eslint
This was SVN commit r21447.
2018-03-06 18:34:33 +00:00
mimo
1976f367a3 ai: additional cleanup following fe3668aebe
This was SVN commit r21028.
2018-01-27 10:46:03 +00:00
mimo
fe3668aebe petra adaptation to multiple victory conditions, in preparation of D1240
This was SVN commit r21027.
2018-01-27 10:10:55 +00:00
s0600204
f6b5488a24 Move unravelPhases function from structree to globalscripts for use in AI init.
Reviewed By: mimo
Differential Revision: https://code.wildfiregames.com/D1183
This was SVN commit r20750.
2018-01-02 06:38:09 +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
mimo
c0c046c273 petra: fix an inverted ternary (and tune a bit the values used)
This was SVN commit r20670.
2017-12-20 17:59:43 +00:00
elexis
5667de04c8 Use Map instead of Object in researchQueued of the TechnologyManager for code symmetry with the two previous commits, a6f14f5631 and dc72833040.
Comments in https://code.wildfiregames.com/D1130

This was SVN commit r20612.
2017-12-08 19:29:10 +00:00
elexis
dc72833040 Use Set instead of an Object with unused values in TechnologyManager.researchStarted.
Differential Revision: https://code.wildfiregames.com/D1129
Reviewed By: mimo
This was SVN commit r20611.
2017-12-08 18:47:07 +00:00
elexis
a6f14f5631 Remove unused serialized cache of technology templates in TechnologyManager.researchedTechs.
Refs #3834, #3909, #4239, #4868, D1108
Differential Revision: https://code.wildfiregames.com/D1130
Reviewed By: mimo
This was SVN commit r20610.
2017-12-08 18:35:04 +00:00
mimo
8de5c26540 Allow civ specific techs with {civ}
Discussed with leper

Reviewed By: bb
Trac Tickets: #4589

Differential Revision: https://code.wildfiregames.com/D1024
This was SVN commit r20551.
2017-11-28 20:43:00 +00:00
mimo
3a5be78aa9 Units should only be able to build structures from their owner's civ, and not from their identity civ
Reviewed By: elexis
Trac Tickets: #4870

Differential Revision: https://code.wildfiregames.com/D1065
This was SVN commit r20521.
2017-11-25 16:22:03 +00:00
mimo
817763f6ef petra: improve the way to detect that an ally is attacked
This was SVN commit r20511.
2017-11-24 20:08:04 +00:00
mimo
3b6c612975 allow the ai to run without loading all templates at startup (not yet enabled).
This was SVN commit r20480.
2017-11-19 19:05:54 +00:00
mimo
34557b5bb8 petra: few tunings
This was SVN commit r20422.
2017-11-07 19:11:06 +00:00
mimo
86b9159609 petra: revisit the management of constructions for better performances and cleaner implementation
This was SVN commit r20409.
2017-11-05 13:56:16 +00:00
mimo
23893415d1 Unify trade gain computation between simulation and ai
Reviewed By: elexis
Differential Revision: https://code.wildfiregames.com/D964
This was SVN commit r20320.
2017-10-21 08:40:11 +00:00
mimo
a37d8807f6 petra: some performance optimizations
This was SVN commit r20311.
2017-10-18 17:45:04 +00:00
mimo
2f24006afb petra: rework the management of siege units in attacks, to remove some civ hardcodings + some cleanup
This was SVN commit r20260.
2017-10-04 16:29:25 +00:00
mimo
25282a5552 Petra: fix population bonus of foundation when using https://code.wildfiregames.com/D639
This was SVN commit r20143.
2017-09-09 14:38:40 +00:00
mimo
bce425ede5 petra: add some protections for non-existing templates
Differential Revision: https://code.wildfiregames.com/D867
This was SVN commit r20107.
2017-09-04 16:58:00 +00:00
mimo
faa1a3fd41 petra: update some entities collections when diplomacy changes
Differential Revision: https://code.wildfiregames.com/D858
This was SVN commit r20094.
2017-09-01 17:38:49 +00:00
mimo
ce7e727ff0 petra: revisit the phasing up to be more mod-friendly
Differential Revision: https://code.wildfiregames.com/D654
This was SVN commit r20039.
2017-08-25 16:23:23 +00:00
mimo
a13a860890 AI stats modifications from techs and auras broken for templates
Tested by Grugnas

Differential Revision: https://code.wildfiregames.com/D811
This was SVN commit r20025.
2017-08-23 17:31:47 +00:00
mimo
9b7dfdaa23 remove some unused AI var and rename a function to better reflects its use
This was SVN commit r19745.
2017-06-07 18:26:15 +00:00
fatherbushido
dc17836fe5 Add barter multiplier for barter prices. They can be altered by technologies or auras. Reviewed by mimo.
Differential Revision: https://code.wildfiregames.com/D478
This was SVN commit r19615.
2017-05-20 18:01:49 +00:00
fatherbushido
000e39629f Make initialization of phase techs for AI more robust. Refs ae3b66a778. Fix #4573. Reviewed by mimo.
Differential Revision: https://code.wildfiregames.com/D491
This was SVN commit r19578.
2017-05-14 18:01:27 +00:00
mimo
21798caa45 petra support of disabled technologies, fixes #4500
Reviewed By: Sandarac
Differential Revision: https://code.wildfiregames.com/D178
This was SVN commit r19275.
2017-03-06 19:23:18 +00:00
mimo
2e636af9bc fix missing semicolons
This was SVN commit r19126.
2017-01-09 19:03:24 +00:00
fatherbushido
6c97d8118b Merge different logics of technology requirements and fix the related bugs. Create a global script which derive the technology requirements objects in a form usable for structure tree, gui, simulation and AI. Reviewed by mimo (for AI) and fatherbushido. Fixes #3993, #1646, #4263, #4217. Refs #4108.
This was SVN commit r19120.
2017-01-08 14:00:20 +00:00
mimo
32d2375e55 petra: start implementing responses to alliance requests, patch by sandarac, refs #4431
This was SVN commit r19116.
2017-01-06 19:24:15 +00:00
mimo
947e087820 petra cleanup, taken from sandarac, refs #4431
This was SVN commit r19104.
2017-01-03 20:30:03 +00:00
elexis
6149dd3841 Actually remove trailing whitespace for non-header files as well.
This was SVN commit r18989.
2016-11-23 13:02:58 +00:00
mimo
8243803f14 AI: clean some deprecated functions following f352e2c725
This was SVN commit r18946.
2016-11-15 19:50:36 +00:00