Xilmi
98415e98da
Spellcasting-bug-fix
...
Fixed a bug that prevented the AI from using spells when attacking an enemy settlement that has towers.
The bug was caused by noticing how greatly effective spells would be against towers but not being able to actually target them.
By skipping invalid targets, this no longer is an issue.
2024-07-10 14:36:35 +00:00
Xilmi
073c5bee45
Spellcasting fixes
...
Allowed the AI to cast spells that are aimed at a location instead of a unit. For example meteor shower.
Fixed an issue that caused the AI to not kill unit-stacks with spells due to only considering stacks where at least one unit survives in it's score-calculations.
2024-07-10 02:40:42 +02:00
Xilmi
13bbb573bd
Spellcasting-bug-fix
...
Fixed a bug that prevented the AI from using spells when attacking an enemy settlement that has towers.
The bug was caused by noticing how greatly effective spells would be against towers but not being able to actually target them.
By skipping invalid targets, this no longer is an issue.
2024-07-09 22:55:39 +02:00
Ivan Savenko
e42285c2f1
Merge pull request #4240 from IvanSavenko/bugfixing
...
[1.5.4] Bugfixing
2024-07-09 14:32:24 +03:00
Tomasz Zieliński
5eabadd7db
Use vstd
2024-07-09 06:50:00 +02:00
Tomasz Zieliński
bfa93be765
Limit predicted damage / loses to actual stack health
2024-07-09 06:39:41 +02:00
Ivan Savenko
7445e950ba
Replace uint64_t with signed type to prevent overflow on substraction
2024-07-08 20:52:11 +00:00
Xilmi
94e5b5519c
Fixed AI constantly visiting towns thinking they can get a huge upgrade
...
Due to morale-considerations the AI sometimes calculated that their strongest army after doing an exchange had slightly lower total value than the army they used before.
But by using unsigned "slightly lower" became near infinite.
So they constantly wanted to upgrade their army because they considered it more useful than anything else.
Changing the unsigned into signed fixes this.
2024-07-08 16:53:14 +02:00
Xilmi
d4308c2ce4
Merge branch 'fixes_only' into develop
2024-07-07 22:52:03 +02:00
Xilmi
a72d23ed8d
Debug-Info
...
Added some debug-info and non-fuzzy-specific-priority-cutoff.
2024-07-07 22:51:50 +02:00
Xilmi
7b407b6432
AI-variant without fuzzy-logic
...
It is now possible to switch to an AI-variant that uses hand-written heuristics for decision-making rather than the FuzzyLite-engine. This is configurable in nkai-settings.json via the new parameter "useFuzzy".
2024-07-07 22:44:52 +02:00
Xilmi
e0a81b3e69
Fixed AI-exploration-data being lost after loading savegame
...
The information of whether objects like a redwood-observatory or subterranian gates have been interacted with by the AI will now be retrieved from the game-state instead of using an AI-internal memory that won't survive loading a save-game.
2024-07-07 22:08:19 +02:00
Andrii Danylchenko
1be36e1ad4
NKAI: rewardables
2024-07-07 21:58:39 +03:00
Xilmi
54c6d99de3
Using only one bucket
...
Nullkiller suggested that this change would help to further fix inconsistent behavior by the AI. I tested it and it did indeed fix different orders of how AI does things.
"Important to make count 1 to not relay on object addresses
They are source of random" - Nullkiller
2024-07-07 15:17:38 +02:00
Xilmi
734f815e67
Sorting tasks after buildPlan
...
Tasks need to be sorted again after buildPlan as otherwise the correct order isn't guaranteed. This led to inconsistent behavior by the AI.
2024-07-07 15:12:05 +02:00
Ivan Savenko
b5c36958a9
Workaround for very slow boat summon tests
2024-07-04 19:56:01 +00:00
Ivan Savenko
41ed7e2e10
Added TODO's for potential optimizations that I've discovered
2024-07-04 07:59:50 +00:00
Ivan Savenko
075582910a
Less CPU intensive version of ExplorationHelper::scanMap method
2024-07-04 07:53:25 +00:00
Ivan Savenko
73fdd12581
Use optimized container without dynamic memory allocations
2024-07-03 21:15:40 +00:00
Ivan Savenko
1468abb8a0
Remove excessive copies of large objects
2024-07-03 21:14:22 +00:00
Ivan Savenko
95d8e447b2
Remove access to text translation system from AI
2024-07-03 21:13:55 +00:00
Ivan Savenko
40f17d654d
Use containers with pre-allocations to improve pathfinding speed
2024-07-03 18:06:56 +00:00
Ivan Savenko
24b77b0972
Remove access to hero name translation
2024-07-03 17:01:38 +00:00
Alexander Wilms
02e429e973
Fix typos using https://github.com/crate-ci/typos
...
Changes were reviewed manually
2024-06-24 03:47:19 +02:00
Alexander Wilms
820b1b446e
Fix typo: TowmPortalFinder -> TownPortalFinder
2024-06-23 22:40:15 +02:00
Ivan Savenko
3bea383b59
Merge branch 'vcmi/beta' into 'vcmi/develop'
2024-06-21 12:58:36 +00:00
Ivan Savenko
0e4be8c776
Fix crash on sieging Citadel or Castle
2024-06-19 19:59:06 +00:00
Ivan Savenko
a9cf322f61
Merge pull request #4161 from vcmi/fix-4142
...
#4142 - sometimes Battle AI wants to attack unit which is behind a lo…
2024-06-19 21:28:58 +03:00
Andrii Danylchenko
fc32078a3a
#4142 - sometimes Battle AI wants to attack unit which is behind a lot of obstackles and other units
2024-06-18 20:03:07 +03:00
Ivan Savenko
8e68c7dcd8
Merge pull request #4144 from vcmi/fix-4139
...
#4139 - attempt to fix crash on portal probbing
2024-06-18 12:07:24 +03:00
Ivan Savenko
b7efa6c8cc
Fixed potential thread races in Battle AI
2024-06-17 16:15:19 +00:00
Ivan Savenko
431b2865a4
Review fixes
2024-06-17 09:43:22 +00:00
Andrii Danylchenko
cd4aaf93ee
#4139 - attempt to fix crash on portal probbing
2024-06-16 11:58:15 +03:00
Ivan Savenko
e699941a39
Disable logic that seems to be leading to thread races
2024-06-12 18:17:23 +00:00
Ivan Savenko
e32b6bd807
Fix potentially uninitialized members
2024-06-12 18:10:38 +00:00
Ivan Savenko
b4c6906471
Merge branch 'vcmi/beta' into 'vcmi/develop'
2024-06-11 19:22:23 +00:00
Ivan Savenko
9c05e80315
Fix Admiral's Hat whirlpool immunity. Reduce usage of
...
convertFromVisitablePos
2024-06-11 14:31:11 +00:00
Ivan Savenko
b8beb4fb13
Fixes for various minor issues detected by Sonar Cloud
2024-06-01 11:48:30 +00:00
Andrii Danylchenko
7bf047ff18
#4066 - fix exploration
2024-06-01 13:13:51 +03:00
Andrii Danylchenko
9728413742
NKAI: fix dead end cancellation
2024-06-01 12:25:23 +03:00
Ivan Savenko
df83fa33a1
Merge branch 'vcmi/master' into 'vcmi/develop'
2024-05-31 09:34:21 +00:00
Ivan Savenko
5d6470e527
Merge pull request #4025 from IvanSavenko/shared_ptr_lib
...
[1.6] Use shared_ptr for library entities
2024-05-30 19:14:06 +03:00
Ivan Savenko
5ecb527252
Merge pull request #3997 from IvanSavenko/serialization_refactor
...
[1.6] Serialization refactor
2024-05-30 19:13:21 +03:00
Andrii Danylchenko
02ea497951
NKAI: speedup exploration a bit
2024-05-22 22:49:11 +03:00
Andrii Danylchenko
820f0e0c1a
NKAI: port exploration from VCAI
2024-05-20 23:50:13 +03:00
Andrii Danylchenko
5b7e355953
Merge pull request #4009 from vcmi/nkai-exploration
...
NKAI: port exploration from VCAI
2024-05-20 23:44:12 +03:00
Andrii Danylchenko
1388fb1493
NKAI: port exploration from VCAI
2024-05-20 22:43:23 +03:00
Ivan Savenko
ffe14fc1fc
Merge pull request #4022 from vcmi/master
...
Merge master -> beta
2024-05-20 18:09:51 +03:00
Ivan Savenko
8931121d2e
Merge pull request #3995 from IvanSavenko/old_projects_remove
...
[1.6] Remove old project files
2024-05-19 15:44:32 +03:00
Ivan Savenko
9bfe000724
Added semi-workaround method for network thread shutdown:
...
Currently closing game while network thread is waiting for something is
very bug-prone, since network thread may resume during shutdown and
access partially destroyed client state.
Now if exit has been requested, the very first step would be semi-
graceful shutdown of network thread (via exception throwing). This may
in theory skip some cleanup in non-RAII code, but since game is shutting
down this does not matters much.
This logic applies to:
- shutting down while network thread is waiting for dialogs
- shuttind down while network thread waiting for animations in combat
2024-05-18 11:04:10 +00:00
Ivan Savenko
f3de2cfe1c
Removed broken & unused serialization of player interface and AI
2024-05-17 16:35:53 +00:00
Ivan Savenko
7461df161c
lib now uses shared_ptr for entities. Removed manual memory management.
2024-05-17 15:04:05 +00:00
Ivan Savenko
eb67e04ccb
Remove old and unmaintained codeblocks project
2024-05-17 10:44:57 +00:00
Ivan Savenko
3f6eb13ee0
Delete old and unmaintained msvc project files
2024-05-17 10:44:11 +00:00
Ivan Savenko
cba49a9952
Fix gcc-14 build
2024-05-17 10:10:06 +00:00
Ivan Savenko
721b15d9de
Merge branch 'vcmi/master' into 'vcmi/develop'
2024-05-17 08:26:37 +00:00
Ivan Savenko
84bc6c42db
Added 'Serializeable' base class for classes serializeable by pointer
2024-05-16 18:40:59 +00:00
Laserlicht
560923fc1f
show cheating problem message only once per AI
2024-05-15 12:50:51 +02:00
Laserlicht
e9b2159c0a
hint about disabled cheats for nullkiller
2024-05-15 00:18:14 +02:00
DjWarmonger
560d53a07c
Merge pull request #3960 from vcmi/fix-3941
...
#3941 - recruit hero when no heroes
2024-05-13 11:30:11 +02:00
Andrii Danylchenko
98afd43969
#3941 - recruit hero when no heroes
2024-05-12 21:10:31 +03:00
Andrii Danylchenko
98a78b3386
#3930 - fix usage of wrong variable
2024-05-12 18:04:23 +03:00
Ivan Savenko
30e0a16ee9
Fix some 'new' issues reported by Sonar Cloud
2024-05-06 15:33:30 +00:00
Andrii Danylchenko
157443c1df
#3876 - allow to embark after battle for AI pathfinder
2024-05-05 13:52:57 +03:00
Ivan Savenko
be54836401
Merge pull request #3849 from IvanSavenko/fix_vcai_crash
...
Fix possible crash on AI attempting to build building in town
2024-04-28 19:48:23 +03:00
Ivan Savenko
8fa615a8f7
Fix possible crash on AI attempting to build building in town
2024-04-28 12:53:10 +03:00
Andrii Danylchenko
f1d7151a93
#3842 - fix negative link cost because of bonuses
2024-04-28 09:11:15 +03:00
Andrii Danylchenko
39e19f79f4
Fix #3754 , #2316
2024-04-27 13:57:50 +03:00
Andrii Danylchenko
afa766c763
#3824 - fix cluster unlock
2024-04-27 10:57:30 +03:00
Andrii Danylchenko
6e641dbdea
#3824 - fix empty army with only commander issues
2024-04-26 23:18:20 +03:00
Andrii Danylchenko
b4abb3a56c
Merge pull request #3814 from vcmi/fixes
...
NKAI: fix patrolling heroes never retreat and town danger evaluation
2024-04-23 18:52:47 +03:00
Ivan Savenko
62d15ed23c
Merge pull request #3820 from IvanSavenko/bugfixing
...
Bugfixing
2024-04-23 13:03:36 +03:00
Ivan Savenko
1b6d6c3f5e
Disable broken visitation of external markets for VCAI
2024-04-22 15:46:51 +03:00
Ivan Savenko
a6dead7725
Fixed loading of text strings for hota quests
2024-04-22 13:49:17 +03:00
Ivan Savenko
a46e022421
Fixed format string
2024-04-22 13:48:56 +03:00
Ivan Savenko
438ec08d72
AI will only ignore garrisons in 'Steadwick Fall' mission (H3 logic)
2024-04-22 11:14:58 +03:00
Ivan Savenko
e8e4446886
Simplify NKAI settings loading code
2024-04-22 11:14:58 +03:00
Ivan Savenko
20f323d83c
Added 'useTroopsFromGarrisons' option to NKAI
2024-04-22 11:14:57 +03:00
Ivan Savenko
21dff9413e
Merge pull request #3786 from IvanSavenko/instant_movement
...
Instant movement
2024-04-22 11:08:00 +03:00
Ivan Savenko
1b469036a3
Merge pull request #3784 from dydzio0614/quick-dwellings-visit
...
Add handling for yes/no dialogs that can be safely skipped by player
2024-04-22 11:06:40 +03:00
Andrii Danylchenko
390136e536
NKAI: fix patrolling heroes never retreat and town danger evaluation
2024-04-21 14:23:58 +03:00
Andrii Danylchenko
7aff0e63fc
NKAI: fix parallel access to object graph
2024-04-21 12:27:58 +03:00
Andrii Danylchenko
0935f931fa
BattleAI: fix bypassing 2-hex moat
2024-04-20 15:28:57 +03:00
Andrii Danylchenko
70fad45316
Merge pull request #3770 from vcmi/nkai-multitask
...
NKAI: allow multiple tasks to be executed from one calculation
2024-04-20 15:21:11 +03:00
Andrii Danylchenko
3939c4b9d3
NKAI: stability fixes and regression
2024-04-20 14:32:58 +03:00
Ivan Savenko
d5a2ad1be8
Allow sending requests to move across multiple tiles at once
2024-04-20 12:28:50 +03:00
Andrii Danylchenko
50432b9614
Merge pull request #3782 from Alexander-Wilms/typo
...
Fix typo: preasure -> pressure
2024-04-18 13:19:12 +03:00
Dydzio
19453aab41
Add handling for yes/no dialogs that can be safely skipped by player
2024-04-17 01:08:27 +02:00
Alexander Wilms
e70411bf1a
Fix typo: preasure -> pressure
2024-04-16 21:10:49 +00:00
Alexander Wilms
7d925b3689
Fix typo: Preasure -> Pressure
2024-04-16 21:10:15 +00:00
Ivan Savenko
ced0bbe526
Remove "catch everything and silently ignore" block
2024-04-16 18:54:51 +03:00
Andrii Danylchenko
ed76d8a652
NKAI: allow multiple tasks to be executed from one calculation
2024-04-14 16:46:05 +03:00
Ivan Savenko
9e49587749
Replace bonus string description with metastring that can properly
...
handle translations
2024-04-09 16:13:30 +03:00
Ivan Savenko
03786fb63b
VCAI will now check whether it actually has enough gold to buy a hero
2024-04-06 15:59:08 +03:00
Andrii Danylchenko
fd0dd7441a
Merge pull request #3700 from vcmi/object-graph
...
NKAI: parallel capture objects
2024-04-01 12:59:08 +03:00
Andrii Danylchenko
728f673763
NKAI: remove static ai field
2024-03-31 21:11:25 +03:00
Andrii Danylchenko
ca7c91e766
Merge pull request #3677 from vcmi/object-graph
...
Object graph
2024-03-29 20:39:56 +02:00
Andrii Danylchenko
d6f1a5c2b3
NKAI: parallel capture objects
2024-03-29 20:39:03 +02:00
Evgeny Malygin
25125f96da
Fix: licenses, pragma guards, StdInc
2024-03-29 07:48:52 +02:00
Andrii Danylchenko
ff654c2148
NKAI: fix build
2024-03-28 17:47:08 +02:00
Andrii Danylchenko
30d9daf62c
NKAI: improve boat handling by object graph, a set of fixes
2024-03-28 13:39:15 +02:00
Andrii Danylchenko
adfcb650e2
NKAI: object graph fixes
2024-03-25 21:04:08 +02:00
Andrii Danylchenko
3820f6f78b
NKAI: fix headless and compilation
2024-03-24 13:16:46 +02:00
Andrii Danylchenko
419d6a648b
NKAI: optimize clusterization and pathfinding for object graph
2024-03-24 09:32:54 +02:00
Andrii Danylchenko
017fb204a1
NKAI: remove 5th dimension
2024-03-24 09:32:54 +02:00
Andrii Danylchenko
e66ceff154
NKAI: object graph improved and optimized
2024-03-21 12:13:36 +02:00
Andrii Danylchenko
bec2c0cac2
NKAI: fix sonar and refactoring
2024-03-10 15:14:15 +02:00
Andrii Danylchenko
6245adb9a4
NKAI: configurable object graph
2024-03-08 14:39:16 +02:00
Andrii Danylchenko
5f8a157c6d
NKAI: rollback changes with removing scan depth
2024-03-03 10:21:17 +02:00
Andrii Danylchenko
fb6fd63a58
NKAI: water paths in graph
2024-03-02 15:55:36 +02:00
Andrii Danylchenko
b236384356
NKAI: graph add battle layer
2024-03-02 15:54:05 +02:00
Andrii Danylchenko
a090441672
NKAI: object graph second layer not operational yet
2024-03-02 15:54:03 +02:00
Andrii Danylchenko
376a17409f
NKAI: initial implementation of object graph
2024-03-02 15:52:45 +02:00
Andrii Danylchenko
35429eab52
NKAI: moddable configuration
2024-03-01 22:03:07 +02:00
Alexander Wilms
2ea78a5883
Fix float comparisons
...
Replace this "==" with a more tolerant comparison operation.
Floating point numbers should not be tested for equality cpp:S1244
2024-02-14 23:30:29 +01:00
Ivan Savenko
c23953eac5
Remove custom casts
2024-02-14 12:56:37 +02:00
Ivan Savenko
45c971a405
Replace throws() with nothrow
2024-02-14 12:07:07 +02:00
Ivan Savenko
7359b66f99
Do not use floating point equality checks
2024-02-14 12:07:07 +02:00
Ivan Savenko
9ebd194ab1
Merge pull request #3609 from IvanSavenko/single_process
...
Allow running server as part of client process
2024-02-14 12:06:22 +02:00
Alexander Wilms
678cacbd25
Remove more redundant virtual
specifiers
...
`grep -nr "virtual " | grep -v googletest | grep " override" | grep -v overriden > ../redundant_virtual.txt`
```python
import os
with open("../redundant_virtual.txt") as f:
for line in f:
print()
line: str = line.strip()
print(line)
tmp = line.split(":",2)
file = tmp[0].strip()
code = tmp[-1].strip()
print(file)
print(code)
new_code = code.replace("virtual ", "", 1)
# https://superuser.com/a/802490/578501
command = f"export FIND='{code}' && export REPLACE='{new_code}' && ruby -p -i -e \"gsub(ENV['FIND'], ENV['REPLACE'])\" {file}"
os.system(command)
```
2024-02-13 15:21:30 +01:00
Ivan Savenko
4c70abbeb5
Reduced usage of global variables - removed or made const / constexpr
2024-02-12 13:49:45 +02:00
Ivan Savenko
c03196257f
Fix "identical expressions on both sides of comparison"
2024-02-12 12:32:35 +02:00
Ivan Savenko
c577ea3e8d
Fix potentially uninitialized values
2024-02-12 12:31:27 +02:00
Ivan Savenko
a909d7ddde
Removed cmake_modules/VCMI_lib macro, use it directly in place
2024-02-11 20:38:24 +02:00
Ivan Savenko
f08c9f4d59
Renamed ENABLE_STATIC_AI_LIBS option to match its actual effect
2024-02-11 17:55:02 +02:00
Alexander Wilms
522cb571b3
Remove redundant virtual
specifiers
...
`grep -nr virtual | grep -v googletest | grep override > ../redundant_virtual.txt`
```python
import os
with open("../redundant_virtual.txt") as f:
for line in f:
print()
line: str = line.strip()
print(line)
tmp = line.split(":")
file = tmp[0].strip()
code = tmp[-1].strip()
print(file)
print(code)
new_code = code.replace("virtual ", "", 1)
# https://superuser.com/a/802490/578501
command = f"export FIND='{code}' && export REPLACE='{new_code}' && ruby -p -i -e \"gsub(ENV['FIND'], ENV['REPLACE'])\" {file}"
os.system(command)
```
2024-02-10 20:46:13 +01:00
Andrii Danylchenko
ec5c44bb92
Merge pull request #3594 from vcmi/fix-3550
...
#3550 - fix case when unit is in reachability map but only next turn
2024-02-04 10:07:44 +02:00
Andrii Danylchenko
c66de29550
#3550 - fix case when unit is in reachability map but only next turn
2024-02-03 17:48:52 +02:00
Ivan Savenko
f329bfbe71
Merge pull request #3582 from IvanSavenko/campaign_fixes
...
Campaign fixes
2024-02-01 11:30:38 +02:00
Ivan Savenko
626087ab14
Merge pull request #3561 from MnHebi/develop
...
Try to improve VCAI building build order
2024-01-31 21:48:36 +02:00
Ivan Savenko
2e4895766a
Implemented tracking of objects destroyed by players
2024-01-31 01:37:33 +02:00
Ivan Savenko
a9866bb5c6
Added RandomGeneratorUtil::nextItemWeighted convenience method
2024-01-31 00:17:40 +02:00
MnHebi
8b24b0e9a7
Add Marketplace, Blacksmith into extra buildings category to ensure they get built. Misc changes.
2024-01-26 00:56:36 +02:00
Laserlicht
7f58333ef9
quick combat vs ai
2024-01-25 23:44:41 +01:00
MnHebi
4318b25399
Merge branch 'vcmi:develop' into develop
2024-01-25 21:27:06 +02:00
Ivan Savenko
2a193effcc
Merge branch 'master' into 'develop'
2024-01-25 16:23:13 +02:00
MnHebi
a668dc2721
Try to improve VCAI building build order. Testing reveals extra structures still get done before intended build order(seen Market being built when Dwellings were expected).
2024-01-25 03:26:42 +02:00
Ivan Savenko
284273379e
Merge pull request #3536 from IvanSavenko/serialization_refactor
...
Refactoring of serialization versioning handling
2024-01-22 19:49:24 +02:00
Andrii Danylchenko
bf54a6a7d3
Merge pull request #3537 from vcmi/nkai-fix-pathfinder-commited-tiles
...
NKAI: avoid writing to commited tiles when calculating hero chain
2024-01-21 14:51:33 +02:00
Andrii Danylchenko
708e0d1107
NKAI: avoid writing to commited tiles when calculating hero chain
2024-01-21 10:18:39 +02:00
Andrii Danylchenko
cb297793e0
NKAI: fix lock
2024-01-21 10:05:40 +02:00
Andrii Danylchenko
0c1664dbe7
NKAI: various AI fixes after tests in headless
2024-01-20 22:55:30 +02:00
Andrii Danylchenko
1db43a509e
NKAI: fix casting FLY several times during path calculation
2024-01-20 22:55:28 +02:00
Andrii Danylchenko
36bc9ddcec
NKAI: mutex for internal AI state
2024-01-20 22:55:27 +02:00
Andrii Danylchenko
cc7fc4a2c6
Fix headless mode
2024-01-20 22:55:27 +02:00
Ivan Savenko
0c07384293
Refactoring of serialization versioning handling
...
- Removed 'version' field from serialize() method
- Handler classes - Binary(De)Serializer now have 'version' field
- Serialization versioning now uses named enum
Save compatibility with 1.4.X saves should be intact
2024-01-20 20:34:51 +02:00
Ivan Savenko
62935b4ba4
Fix crash on using StupidAI for player actions
2024-01-20 17:15:51 +02:00
Ivan Savenko
d04241b10a
Code cleanup
2024-01-19 23:02:00 +02:00
Ivan Savenko
ea1f05d15a
Stabilization
2024-01-19 13:55:22 +02:00
Ivan Savenko
60ffb81b33
Replaced remaining placeholder code with callbacks
2024-01-19 13:55:22 +02:00
Ivan Savenko
a15366f5a5
Make IObjectInterface::cb non-static
2024-01-19 13:55:21 +02:00
Ivan Savenko
2c4cad7d9c
Slight simplification of bonus system node class
2024-01-19 13:54:49 +02:00
Ivan Savenko
d5c4478816
Remove most of non-const access to VLC entities
2024-01-19 13:54:49 +02:00
Ivan Savenko
bd5682ecc3
Merge remote-tracking branch 'vcmi/master' into develop
2024-01-19 13:49:54 +02:00
Alexander Wilms
73019c204d
Replace redundant types with auto
for the lvalues of template factory functions for smart pointers
...
grep -r --include \*.h --include \*.cpp "= std::" * | grep -v auto | grep -Po ".*[^ ]+ [^ ]+ [^ ]*[ ]*=.*;" | grep -v "auto\|int\|char\|bool\|float|\double\|for\|if\|googletest\|fuzzylite\|size_t\|using\|return" | grep -v double | grep -v si64 | grep -v si32 | grep -v ui32 | grep \< | grep -v float | tr -d '\t' | grep -v assert > redundant_types.txt
import re
with open("redundant_types.txt") as f:
for line in f:
line = line.strip()
path = line.split(":", 1)[0]
original_code = ":".join(line.split(":")[1:]).strip()
print()
print(path)
print(original_code)
prefix = "auto "
if original_code.startswith("static"):
static = True
else:
static = False
cpp_type = " ".join(original_code.split("=")[0].strip().split(" ")[0:-1])
print(cpp_type)
if static:
new_code = "static auto "+ " ".join(original_code.split(" ")[2:])
else:
new_code = "auto "+ " ".join(original_code.split(" ")[1:])
print(new_code)
if True:
with open(path, "r") as f:
filedata = f.read()
filedata = filedata.replace(original_code, new_code)
with open(path, "w") as f:
f.write(filedata)
2024-01-17 12:50:00 +00:00
Ivan Savenko
e849e4170a
Merge pull request #3486 from Alexander-Wilms/replace-redundant-types-with-auto
...
Replace redundant types with `auto`
2024-01-17 13:31:05 +02:00
Alexander Wilms
1b85abb508
Use auto instead of redundant type in initializations using new
...
grep -r --include \*.h --include \*.cpp "=" * | grep -v "auto\|int\|char\|bool\|float|\double\|for\|if\|googletest\|fuzzylite\|size_t\|using\|return\|{\|}\|= \"\|= tr(\|virtual\|void" | grep -Po ".*[^ ]+ [^ ]+ [^ ]*[ ]*=.*;" | grep -v "float\|nullptr" | grep "new" | grep -v "AI/FuzzyLite" | grep \( | grep "= new" > redundant_types.txt
import re
with open("redundant_types.txt") as f:
for line in f:
line = line.strip()
path = line.split(":", 1)[0]
original_code = line.split(":")[1].strip()
if "new " in original_code:
cpp_type = original_code.split(" ")[0]
if original_code.count(cpp_type) == 2:
print()
print(path)
print(original_code)
new_code = "auto "+" ".join(original_code.split(" ")[1:])
print(new_code)
with open(path, "r") as f:
filedata = f.read()
filedata = filedata.replace(original_code, new_code)
with open(path, "w") as f:
f.write(filedata)
2024-01-16 21:40:53 +00:00
Alexander Wilms
cca08e29da
Remove duplicate semicolons
2024-01-16 19:02:39 +00:00
Ivan Savenko
a582cb554e
Merge pull request #3500 from IvanSavenko/fix_dendroid_bind
...
[1.4.3] Fix handling of Dendroid's Bind ability
2024-01-15 12:02:06 +02:00
Ivan Savenko
b4a1a755a4
Merge pull request #3498 from IvanSavenko/simturns_pathfinder
...
[1.4.3] Fixes for simultaneous turns
2024-01-15 12:00:54 +02:00
Ivan Savenko
0d0d3d8c80
Renamed speed -> getMovementRange, remove misleading default parameter
2024-01-14 17:14:36 +02:00
Alexander Wilms
bc781c28e0
Remove trailing semicolon from NET_EVENT_HANDLER macro
2024-01-14 14:49:25 +00:00
Andrii Danylchenko
3602be5eab
BattleAI: remove adjustPositions method as it gives more troubles than usefulness
2024-01-14 10:23:44 +02:00
Ivan Savenko
8303ce5d13
Added option to ignore guards in pathfinder
...
Used for simturns contact detection, by default disabled for player
pathfinding
2024-01-13 19:44:37 +02:00
Alexander Wilms
f3277b7953
Define each identifier in a dedicated statement
2024-01-10 00:22:23 +00:00
Andrii Danylchenko
1a1ae5cd8b
BattleAI: fixes
2024-01-02 17:35:10 +02:00
Joakim Thorén
daf9f9f7f5
Re-add const that was erronously removed with 88ec4fa
...
Co-authored-by: Andrey Filipenkov <kambaladecapitator@gmail.com>
2023-12-30 11:01:21 +01:00
Joakim Thorén
88ec4fa0e7
Use getTileThreat-helper instead of directly accessing hitMap with tile coordinates
2023-12-29 23:12:06 +01:00
Joakim Thorén
61314a36f6
Fix copy-paste mistake
2023-12-27 22:35:43 +01:00
Joakim Thorén
406d136cdc
Fixes warnings about possibly dangling references
2023-12-27 22:24:58 +01:00
Ivan Savenko
85de3143ff
Fixed Genie spellcasting logic to account for spell immunities
2023-12-24 01:13:19 +02:00
Dydzio
fe39faf36c
Add UNTIL_OWN_ATTACK bonus duration and use for berserk
2023-12-19 19:52:40 +01:00
Andrii Danylchenko
26b6d1cf74
NKAI: fix capturing shipyards
2023-12-02 14:03:54 +02:00
Ivan Savenko
d326c53b9a
AI will now respect current value of "Use spells in autocombat" setting
2023-11-28 15:48:35 +02:00
Ivan Savenko
60ca6f968c
Fix hero limit check in AI
2023-11-27 14:08:49 +02:00
Ivan Savenko
ff6260e5c5
Merge pull request #3195 from IvanSavenko/identifier_string_serialization
...
Serialize Identifiers that can be added by mods as strings
2023-11-20 14:07:24 +02:00
Ivan Savenko
b58301849b
Pass functor via reference to avoid costly copies
2023-11-18 19:43:11 +02:00
Ivan Savenko
9b8145f522
Compute creature speed only once during evaluation
2023-11-18 19:41:29 +02:00
Ivan Savenko
9f906ff1d2
Remove pointer to CGObjectInstance from map header
2023-11-17 16:39:15 +02:00
Ivan Savenko
76956cfe3a
Merge pull request #3188 from IvanSavenko/remove_identifier_implicit_int_conversion2
...
Remove implicit conversion of identifier to integer
2023-11-16 17:26:32 +02:00
Ivan Savenko
52050d0ef1
Fix build
2023-11-15 15:55:19 +02:00
Ivan Savenko
96c81be68e
Win/loss conditions now use VariantIdentifier. Removed non-implemented
...
options
2023-11-15 15:55:19 +02:00
Ivan Savenko
20ef3a69e7
Fix most of memleaks discovered by valgrind
2023-11-13 16:27:15 +02:00
Ivan Savenko
4a7fa9bf8c
Simplified CTypeList class
2023-11-08 22:05:36 +02:00
Ivan Savenko
6b81012f31
Use variant identifier in netpacks where applicable
2023-11-08 14:00:23 +02:00
Ivan Savenko
10e50548e7
Converted Component class to use VariantIdentifier instead of int
2023-11-02 12:00:04 +02:00
Ivan Savenko
8346d71c98
Remove more subID access
2023-11-01 14:44:05 +02:00
Ivan Savenko
7107b3202f
Merge pull request #3069 from SoundSSGood/artifact-location-id
...
ArtifactLocation now use ID for artHolder identification
2023-11-01 14:41:36 +02:00
SoundSSGood
ab2f6abb87
ArtifactLocation now use ID for artHolder identification part2
2023-10-29 17:46:13 +02:00
SoundSSGood
61fc236d79
ArtifactLocation now use ID for artHolder identification part1
2023-10-29 17:46:13 +02:00
Alexander Wilms
5cbc75d3b7
Merge remote-tracking branch 'upstream/develop' into develop
2023-10-29 13:35:37 +00:00
Alexander Wilms
ed86a917eb
AI/BattleAI/BattleAI.cpp: Use Class template argument deduction for wallParts array
...
Co-authored-by: Ivan Savenko <saven.ivan@gmail.com>
2023-10-29 13:34:19 +00:00
Alexander Wilms
0232ae5327
AI/BattleAI/BattleEvaluator.cpp: Convert this integer literal to a bool literal.
...
Integer literals should not be cast to bool
2023-10-29 13:34:19 +00:00
Alexander Wilms
bfddc90ff4
AI/BattleAI.cpp: Use "std::array" or "std::vector" instead of a C-style array.
...
Variables of array type should not be declared cpp:M23_356
2023-10-29 13:34:19 +00:00
Ivan Savenko
0169c65937
Merge pull request #3100 from IvanSavenko/split_net_packs
...
Split netpacks.h into multiple files
2023-10-29 13:46:40 +02:00
Alexander Wilms
0a6c82c639
AI/Nullkiller/Behaviors/DefenceBehavior.{h,cpp}: treat -> threat
2023-10-27 23:34:11 +00:00
Alexander Wilms
457e73ed12
AI/BattleAI/BattleExchangeVariant.cpp: Do not assign data members in a constructor. Initialize members in an initialization list.
...
Member data should be initialized in-class or in a constructor initialization list
2023-10-27 23:34:11 +00:00
Alexander Wilms
b10b1a5444
AI/BattleAI/BattleExchangeVariant.cpp: This function should be declared "const".
...
Member functions that don't mutate their objects should be declared "const"
2023-10-27 23:34:11 +00:00
Alexander Wilms
af330ff038
AI/BattleAI/BattleEvaluator.cpp: Remove this redundant cast.
...
Redundant casts should not be used
2023-10-27 18:19:17 +00:00
Alexander Wilms
f01ec55d21
Use the "nullptr" literal.
...
"nullptr" should be used to denote the null pointer
2023-10-27 18:18:59 +00:00
Alexander Wilms
bcaa2e5966
AI/VCAI/VCAI.cpp: Remove "e" from "throw" statement to rethrow the original exception.
...
The original exception object should be rethrown
2023-10-27 14:29:44 +00:00
Ivan Savenko
5cbf5031ea
move SetStackEffect to a separate file
2023-10-24 01:27:52 +03:00
Ivan Savenko
b88a8da4e8
Split off some netpack structures into separate files
2023-10-23 13:59:15 +03:00
Andrii Danylchenko
f74daa2e1f
BattleAI: fix health bounty calculation
2023-10-22 22:06:42 +03:00
Andrii Danylchenko
870fbd50e3
BattleAI: bigger reachability map
2023-10-22 21:37:55 +03:00
Andrii Danylchenko
9eb9404f28
BattleAI: divide only positive part of score onto turns count
2023-10-22 21:37:54 +03:00
Ivan Savenko
3880ea58b9
Merge branch 'josch/dos2unix' into develop
2023-10-22 18:39:03 +03:00
Ivan Savenko
4f47555977
Split OBJECT bonus source into OBJECT_TYPE and OBJECT_INSTANCE
2023-10-22 16:55:19 +03:00
Ivan Savenko
ac925bb786
Renamed new types for consistency with code style
2023-10-22 16:55:19 +03:00
Ivan Savenko
80e6485965
MetaIdentifier now uses std::variant internally
2023-10-22 16:55:19 +03:00
Ivan Savenko
b394158dc9
Bonus Source ID now uses metaidentifier
2023-10-22 16:55:18 +03:00
Ivan Savenko
77facf9387
Implement missing functions, fixes linking errors
2023-10-22 16:54:56 +03:00
Ivan Savenko
910ad50417
Fix client & server compilation
2023-10-22 16:54:48 +03:00
Ivan Savenko
0a10fc30b8
(lib) Bonus subtype is now stored as metaidentifier that can store any
...
other identifier inside it
2023-10-22 16:54:43 +03:00
Ivan Savenko
454ba44ac5
Merge pull request #2988 from IvanSavenko/configurable_extensions
...
Extension of configurable object functionality
2023-10-22 16:24:47 +03:00
Johannes Schauer Marin Rodrigues
a1a5bc28c2
convert line endings from CRLF (Windows) to LF (Linux/Unix)
...
Mixed line endings cause problems when exporting patches with
git-format-patch and then trying to "git am" a patch with mixed and
non-matching line endings. In such a situation git will fail to apply
the patch.
This commit runs the dos2unix tools on the remaining files with CRLF
(\r\n) line endings to convert them to line-feeds (\n) only.
Files that are Windows specific like *.vcxproj and *.props files were
not converted.
Closes : #3073
2023-10-19 16:23:21 +02:00
Johannes Schauer Marin Rodrigues
f9e1b302c7
some spelling fixes
2023-10-18 01:41:02 +02:00
Ivan Savenko
fd01a25352
Implemented basic version of configurable Witch Hut
2023-10-16 00:12:38 +03:00
nordsoft
fadf086e61
Fix review comments
2023-10-12 13:30:01 +02:00
nordsoft
7ccd4cdcb2
Refactor quests progress
2023-10-11 21:10:42 +02:00
nordsoft
5b10b457cf
Fix code review suggestions
2023-10-11 00:47:19 +02:00
nordsoft
5eeda3cd25
Quests mostly work
2023-10-10 23:44:29 +02:00
nordsoft
bb238f9b72
New quests work
2023-10-10 23:44:29 +02:00
nordsoft
1460541ee5
New limiter based quests
2023-10-10 23:44:29 +02:00
Ivan Savenko
46e4d862a5
Fix AI recruitment
2023-10-04 17:47:12 +03:00
Ivan Savenko
39a92cdde3
Add query for dwellings dialog
2023-10-04 17:47:12 +03:00
Ivan Savenko
898733eed7
Added Query to track visit duration for Taverns and Markets
2023-10-04 17:47:12 +03:00
Andrii Danylchenko
ebe155fa95
NKAI: mana recovery
2023-09-30 10:37:36 +03:00
Andrii Danylchenko
2dd0d76412
NKAI: water and air walking
2023-09-30 10:37:32 +03:00
Maxim Korotkov
56061d116e
vcai: Combined cases with the same actions
2023-09-27 09:05:58 +03:00
Maxim Korotkov
f874d27797
AI: removed redundant checks
...
The pointers "up" and "down" were checked against nullptr
but it's always non-null
Also added curly braces for if statement. It's good practice
for avoiding shooting yourself to the foot
Signed-off-by: Maxim Korotkov <korotkov.maxim.s@gmail.com>
2023-09-27 09:05:58 +03:00
nordsoft
5f2023c8d5
Fix typo
2023-09-23 04:33:08 +02:00
Ivan Savenko
8c0d78f1d9
Added initiator-player to packs that add/remove/move objects
2023-09-19 19:24:34 +03:00
Ivan Savenko
c8e6a7cd27
Fixed most common cases of movement actions
2023-09-16 20:07:26 +03:00
Andrii Danylchenko
988531c6cb
Merge pull request #2845 from Alexander-Wilms/fuzzylite
...
Support include path of more recent fuzzylite versions
2023-09-16 11:05:55 +03:00
Andrii Danylchenko
a005829a57
NKAI: cancel checking building which needs itself as prerequisite
2023-09-16 11:04:28 +03:00
Alexander Wilms
6c15e5b426
Add include path of a more recent version of fuzzylite, which is required to build it with gcc 12.2.0
...
a651f3d13e
2023-09-16 05:13:16 +00:00
Ivan Savenko
f39fbe5151
Merge pull request #2757 from IvanSavenko/filesystem_refactor
...
Filesystem refactor - part 1
2023-09-07 10:51:02 +03:00
Ivan Savenko
ef94e7a78a
Fix build
2023-09-06 16:03:47 +03:00
Ivan Savenko
9fa7a93fb0
Properly pass battleID in all battle netpack's
2023-09-06 16:03:47 +03:00
Ivan Savenko
41210c1dbf
Client-side support for multiple battles
2023-09-06 16:03:47 +03:00
Ivan Savenko
036df2e0ad
Support multiple battles in AI
2023-09-06 16:03:46 +03:00
Ivan Savenko
3a88180494
Separated game and battle callback (server & client only)
2023-09-06 16:03:39 +03:00
Ivan Savenko
86a7f5f5cd
Removed getStr(bool), replaced with similar toString()
2023-09-04 22:21:02 +03:00
Ivan Savenko
8dfdfffd87
Use ResourcePath for audio files
2023-09-04 18:22:34 +03:00
Ivan Savenko
823ffa7a07
Always use ResourcePath for referencing images and animations
2023-09-04 18:22:34 +03:00
Evgeniy Meshcheryakov
ecf9b1aa2f
Fix NKAI compilation with NKAI_PATHFINDER_TRACE_LEVEL>=2
2023-09-04 10:08:56 +03:00
Ivan Savenko
f6a4a1ae0c
Merge pull request #2686 from vcmi/fix-battle-freeze
...
BattleAI: fix freeze
2023-08-31 01:06:47 +03:00
Ivan Savenko
695a51d8c8
Merge remote-tracking branch 'vcmi/beta' into develop
2023-08-28 21:19:53 +03:00
nordsoft
98f7ed9dfd
Implement player start turn query
2023-08-28 18:56:36 +04:00
Andrii Danylchenko
4b807e01f1
BattleAI: fix freeze
2023-08-27 21:03:55 +03:00
Ivan Savenko
ce20d913e0
Fix checking PlayerColor's for validness
2023-08-27 01:35:38 +03:00
Andrii Danylchenko
5f13a0bbda
BattleAI: spellcast fixes and floating point score
2023-08-26 14:17:33 +03:00
Andrii Danylchenko
dc88f14e0b
BattleAI: positive/negative effect multiplier
2023-08-26 13:06:51 +03:00
Andrii Danylchenko
03395a3d8a
TBB for battle AI spellcast an fixes
2023-08-26 13:06:51 +03:00
Andrii Danylchenko
274bf739b8
BattleAI: damage cache and switch to different model of spells evaluation
2023-08-26 13:06:51 +03:00
Ivan Savenko
e54287ea5d
Converted remaining identifier to new system
2023-08-25 13:38:02 +03:00
Ivan Savenko
0240ee886d
Converted (almost) all namespace enum's to enum classes
2023-08-25 13:38:02 +03:00
Ivan Savenko
62cd8b12d4
Converted several namespace enums to enum class
2023-08-25 13:38:02 +03:00
Ivan Savenko
17d3d663ee
Converted creature ID and spell ID to new form
2023-08-25 13:38:02 +03:00
Ivan Savenko
ec8d31bbfc
First step at unifying game identifiers code
2023-08-25 13:38:01 +03:00
Ivan Savenko
d83aa828f6
Fix turn ending
2023-08-24 23:34:33 +03:00
Ivan Savenko
44d16b32fe
Use API identical to std classes where possible
2023-08-23 16:32:29 +03:00
Ivan Savenko
87957e74c1
Replaced boost::thread_specific_ptr with thread_local
2023-08-23 16:32:29 +03:00
Ivan Savenko
2be9664d26
Remove no longer used code
2023-08-21 17:55:49 +03:00
Ivan Savenko
013417fb7e
Code cleanup
2023-08-21 17:55:49 +03:00
Ivan Savenko
a1d3181a98
Unified spellcasting handling with other actions
2023-08-21 17:55:49 +03:00
Ivan Savenko
6297140bf5
Start of stabilization - battles now start correctly
2023-08-21 17:55:49 +03:00
Dydzio
d8eef4905a
Implement new callback in stupidAI
2023-08-20 13:53:25 +02:00
Dydzio
6bfbe80cc9
Allow toggling quick combat spells usage
2023-08-19 17:23:55 +02:00
Andrii Danylchenko
1eabb738dc
NKAI: fix heroes not recruited
2023-08-13 09:08:30 +03:00
Ivan Savenko
92ce97bbc7
Merge remote-tracking branch 'vcmi/master' into beta
2023-08-12 16:20:06 +03:00
DjWarmonger
654489d5d3
Merge pull request #2525 from vcmi/battle-fast-targets
...
Battle fast targets
2023-08-12 09:22:25 +02:00
Ivan Savenko
67b7c39761
Fix possible nullptr dereference
2023-08-11 18:50:39 +03:00
Andrii Danylchenko
ba9998ac66
BattleAI: fast targets optimization
2023-08-08 20:10:29 +03:00
Andrii Danylchenko
e7394ad20c
BattleAI: log time to make a decission
2023-08-08 18:54:49 +03:00
Ivan Savenko
e57f8742cd
Rename ambiguos 'clear' to 'clearSlots'
...
A lot of map objects inherit from CCreatureSet and as result - get
clean() method that resets object army
2023-08-07 19:13:02 +03:00
Andrii Danylchenko
1eb58bcc32
NKAI: fix potential concurrency and town treat calculation
2023-08-07 17:29:27 +03:00
Andrii Danylchenko
04fe78d31c
NKAI: fix freeze on army gathering
2023-08-07 17:29:17 +03:00
Ivan Savenko
3f6cbc6312
Merge pull request #2484 from vcmi/nkai-fix-freeze
...
NKAI: fix freeze on army gathering
2023-08-07 16:52:59 +03:00
Andrii Danylchenko
60f0a4553a
NKAI: fix freeze on army gathering
2023-08-06 09:03:29 +03:00
Andrii Danylchenko
a4297ebdf6
NKAI: fix potential concurrency and town treat calculation
2023-08-06 08:57:14 +03:00
Tomasz Zieliński
3b238ff15e
Fix weekly visitable check
2023-08-01 17:30:47 +03:00
Andrii Danylchenko
4c0aae6fbd
NKAI: fix crash for specific map
2023-07-31 22:01:12 +03:00
Andrii Danylchenko
ccfc6f5716
NKAI: increase towns priority, buy heroes more often
2023-07-31 22:01:12 +03:00
Andrii Danylchenko
ec0596f3dd
NKAI: fix error message can not take away last stack
2023-07-31 22:01:12 +03:00
Andrii Danylchenko
f1a9ae99ee
NKAI: various behavior fixes, undo max_gold_preasure
2023-07-31 22:01:12 +03:00
Andrii Danylchenko
fb7477047a
NKAI: loosen gold presure on build system.
2023-07-31 22:01:12 +03:00
Andrii Danylchenko
6490c65490
nkai: fix freezes
2023-07-31 22:01:12 +03:00
Andrii Danylchenko
c93bb0a502
nkai: fixes and skill rewards
2023-07-31 22:01:11 +03:00
Andrii Danylchenko
202e13ce2e
NKAI: log paths scan depth
2023-07-31 22:01:11 +03:00
Andrii Danylchenko
5083100d3b
NKA: fix accessing removed hero and heroExchangeCount
2023-07-31 22:01:11 +03:00
Tomasz Zieliński
db2be3ee05
Anoother unused variable
2023-07-31 22:01:11 +03:00
Tomasz Zieliński
850da65f80
Another build fix
2023-07-31 22:01:11 +03:00
Tomasz Zieliński
88178567b1
Remove unused variable
2023-07-31 22:01:11 +03:00
Tomasz Zieliński
e483f06e0f
Remove unused variable
2023-07-31 22:01:11 +03:00
Tomasz Zieliński
5bffea0aac
Use new interface
2023-07-31 22:01:11 +03:00
Andrii Danylchenko
69ceee5dd6
NKAI: penalty for extra chains
2023-07-31 22:01:11 +03:00
Andrii Danylchenko
0fd118d3ce
NKAI: gold reward
2023-07-31 22:01:11 +03:00
Andrii Danylchenko
6ba74f02bc
NKAI: playing around with defence
2023-07-31 22:01:11 +03:00