1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-16 10:19:47 +02:00
Commit Graph

1197 Commits

Author SHA1 Message Date
Andrii Danylchenko
1096f2e9e6 Nullkiller: town portal fixes 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
a2ac19e4ec Nullkiller: defence behavior 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
f44c3f2aaf Nullkiller: improve handling of enemy hero value 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
6faac5aeca Nullkiller: improve artifact value evaluation 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
642f3a3fa4 Nullkiller: fix a few freezes 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
2798dcd6c5 Nullkiller: remove PRI* print macroses 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
682707e4f1 Nullkiller: fix build and warnings 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
fdd5be1e40 Nullkiller: fix build and some warnings 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
ada76a5603 Nullkiller: fix file headers, move fuzzy config to ai folder 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
1d561b9882 Nullkiller: fixes for partly visible objs 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
28b77e0b79 Nullkiller: rename fuzzy logic to .txt 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
e3c87fb58d Nullkiller: stabilisation and fixes 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
bcf8db3d05 Nullkiller: startup scripts 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
5fe2630c64 Nullkiller: rework prioritization, add hero roles, skills and other variables 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
531d0af95b ai fixes for android 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
14adf1d108 AI: implement hero skills evaluator 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
01975e339b Nullkiller: android build fixes 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
3744125270 Nullkiller: armed heros prefer armed targets 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
4bf653f596 AI: danger hitmap using visible enemy heroes 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
04bf6f536d Nullkiller: temporary hacks to allow army buying 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
286d084445 Nullkiller: better tracing and hero locking for hero chain 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
ffa626dc2f AI: add ExecuteChain goal 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
37434dc4cf AI: hero chain stabilisation 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
3ffcef30f6 AI: add army cost 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
f44eaf8132 AI: inefective chain cancellation 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
0e328ab3c2 AI: hero chain stabilisation 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
3a0d9fe14e AI: adding towns and dwellings to hero chain 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
8961f1c803 AI: fix hero exchange logic, allow splitting weakest-fastest creature, refactoring 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
e838e70165 ai fix town portal to occupied town 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
774f531c4e hero chain stabilisation 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
87f1079c60 nullkiller&herochain stabilisation 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
62e5366a08 AI: rough hero chain stabilisation 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
ff57a52001 Nullkiller: hero chain stabilisation 2021-07-26 21:02:50 +03:00
AlexVinS
dd046e60be Quick fix for https://bugs.vcmi.eu/view.php?id=3041 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
fa39279c82 Nullkiller - rough stabilisation 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
cd0f479d7e Nullkiller: rough implementation of prioritization 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
eee145c486 Nullkiller: rough implementation of capture objects and recruit hero behaviors 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
9c85e26d3c Nullkiller: add engine and activate it for blue AI only. Engine does nothing 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
a88181acd7 AI: separate hero chain recalculation 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
c1e521a544 Nullkiller - rough stabilisation 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
9d70b28c9b AI: hero chain basic logic 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
1e4a086bb1 AI pathfinding loss evaluation 2021-07-26 21:02:50 +03:00
AlexVinS
594d1684e9 Switch to MinGW 7.3 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
0bff5f9eb6 AI pathfinding shared storage 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
be4f803d4a Nullkiller: copy VCAI 2021-07-26 21:02:50 +03:00
Andrii Danylchenko
9c8d776398 Merge branch 'develop' into handlersAbstraction
# Conflicts:
#	CI/linux/before_install.sh
#	CI/mac/before_install.sh
#	CI/mxe/before_install.sh
#	lib/CModHandler.cpp
#	lib/mapObjects/CObjectClassesHandler.cpp
#	lib/mapObjects/CObjectClassesHandler.h
#	lib/mapObjects/CommonConstructors.cpp
#	server/CGameHandler.cpp
#	test/CMakeLists.txt
#	test/spells/effects/TeleportTest.cpp
2021-07-16 00:32:13 +03:00
Dmitry Orlov
0e5d427dc9 Fix: VCAI should not attempt to move Spellbook 2021-04-29 00:04:22 +03:00
AlexVinS
a59e12ca5f tweaks 2021-02-15 15:03:32 +03:00
AlexVinS
ecaa9f5d0b Entities redesign and a few ERM features
* Made most Handlers derived from CHandlerBase and moved service API there.
* Declared existing Entity APIs.
* Added basic script context caching
* Started Lua script module
* Started Lua spell effect API
* Started script state persistence
* Started battle info callback binding
* CommitPackage removed
* Extracted spells::Caster to own header; Expanded Spell API.
* implemented !!MC:S, !!FU:E, !!FU:P, !!MA, !!VR:H, !!VR:C
* !!BU:C, !!BU:E, !!BU:G, !!BU:M implemented
* Allow use of "MC:S@varName@" to declare normal variable (technically v-variable with string key)
* Re-enabled VERM macros.
* !?GM0 added
* !?TM implemented
* Added !!MF:N
* Started !?OB, !!BM, !!HE, !!OW, !!UN
* Added basic support of w-variables
* Added support for ERM indirect variables
* Made !?FU regular trigger
* !!re (ERA loop receiver) implemented
* Fixed ERM receivers with zero args.
2021-02-14 19:05:43 +03:00
Andrii Danylchenko
ade84699b0 found a bug in code where AI can change client gamestate directly causing sorting crash 2021-01-30 17:29:49 +02:00
Andrii Danylchenko
36854742e4 Fix StupidAI trying to attack through obstacle 2020-12-15 20:38:01 +02:00
Dmitry Orlov
ef6220ebec Fix: Creature resolution failed when mod is in the custom directory 2020-12-13 03:33:28 +03:00
Andrii Danylchenko
3614330b3d moat bypass when no targets to attack 2020-12-02 19:40:24 +02:00
Andrii Danylchenko
ea073c81d3 2184 - fix battlefield corners unreachable for 2 hex units 2020-11-28 14:14:13 +02:00
Dmitry Orlov
39de2f6435 Fix: Morale bonus should be shown correctly 2020-11-11 22:43:40 +03:00
John Bolton
c61bae4060 Fixed RETURN_IF_BATTLE(). Undid disabled warnings. Fixed indentation. 2020-10-05 16:28:28 -07:00
John Bolton
a05ae78e67 Fixed lots of warnings.
Disabled the following (for MSVC only) that couldn't (or shouldn't) be fixed.

4003: not enough actual parameters for macro 'identifier'
4250: 'class1' : inherits 'class2::member' via dominance
4251: 'type' : class 'type1' needs to have dll-interface to be used by clients of class 'type2'
4275: non dll-interface class 'type1' used as base for dll-interface class 'type2'
2020-10-04 02:20:18 -07:00
John Bolton
6d8f1e4530 Fixed incorrect usage of const std::shared_ptr. Resolves 0003142.
Replaced const TBonusListPtr with TConstBonusListPtr where necessary
Replaced const std::shared_ptr<T> with std::shared_ptr<const T> where necessary.
Removed superfluous use of const.
Replaced const std::shared_ptr<T> with const std::shared_ptr<T> & in function parameters and ranged for-loops.
2020-09-30 22:56:28 -07:00
Dmitry Orlov
5e0023704b Fix PQ issues while calculating paths 2020-09-22 00:19:40 +03:00
Victor Luchits
2727958a63 Tweak Battle AI damage prioritization score logic 2020-05-23 13:38:24 +03:00
Victor Luchits
f68b449e5e More formatting 2020-05-17 11:21:49 +03:00
Victor Luchits
b4025fa1d6 More formatting 2020-05-16 16:14:58 +03:00
Victor Luchits
d4cc005882 Address various issues pointed out by reviewers 2020-05-09 14:09:32 +03:00
Victor Luchits
59c39527c5 Formatting 2020-05-09 13:51:00 +03:00
Victor Luchits
be10694b73 Some changes to make the battle AI smarter
- the AI will now consider attacking multiple units
- the preferred strategy now is to minimize collateral damage rather than to maximize damage to enemy units alone
- attacks that block enemy shooters will be prioritized over other attacks in cases when shooters have weaker melee attacks
2020-05-05 17:53:03 +03:00
Jacob Lundgren
cfe33e6b6e 3117: Fix crash after AI revisits teleporter
**	Behavioral change: Fix AI heroes sometimes attempting to probe
teleport exits using data from a previously processed hero, causing
nullptr dereferences.

VCAI::moveHeroToTile has special case logic for revisiting tiles. This
logic could cause teleport exits to be stored in
teleportChannelProbingList, without the list subsequently being
cleared. If the processing of that hero ended immediately after that,
the next hero would believe that the list is accurate for them and
attempt to teleport while not standing on a teleporter.
2020-05-01 06:33:06 +03:00
Toney Sui
dca5d86e7a
Fix bug: LandMine is not exploding to enemies. (#630)
* The reason is,

the mine has attribute hidden=true;
when enemy unit moves, the code in BattleInfo.cpp MoveUnit() (line 817) will update the revealed to true;
then in the CGameHandler.cpp handleDamageFromObstacle() (line 4846) is checking , and the condition battleIsObstacleVisibleForSide() will return true, so the effect will not be triggerred.

Resolution:
1. Remove the "revealed=true" in moveUnit(), and in handleDamageFromObstacle, remove the "const" restrict for obstacle, and then update revealed to true;
2. After the takeDamage function, add a pack "BattleObstaclesChanged" to update the obstacle to be "revealed=true".
2020-02-12 20:12:12 +03:00
Andrii Danylchenko
bdec7db528 [3085] - MapObjectEvaluator crashes on custom monolith 2019-09-13 10:33:06 +03:00
Dydzio
54550b50de Update VS files to 2019, partially fix test project 2019-06-09 17:28:55 +02:00
Dydzio
4be4e10fe9 Fix wrong AI prison value handling 2019-06-05 23:07:22 +02:00
Alexander Shishkin
b16af04a09
Merge pull request #597 from dydzio0614/AiInterruptFix
Ensure no freeze on AI interruption
2019-06-03 16:53:35 +03:00
AlexVinS
1f2ee843aa [C::B] Switched to boost shared linkage 2019-05-30 20:55:40 +03:00
Andrii Danylchenko
11af1431fb
Fix code style
Co-Authored-By: Alexander Shishkin <alexvins@users.noreply.github.com>
2019-05-29 22:07:10 +03:00
Andrii Danylchenko
0bd5782470 AI: blind fix for 3062 2019-05-28 09:04:31 +03:00
Dydzio
545b07b8b8 Thread interruption fixes 2019-05-26 17:55:22 +02:00
AlexVinS
cffd763bb5 [C::B] Updated projects. 2019-05-04 10:45:00 +03:00
Dydzio
e50efdc279 Creature spellcast refactor (#569)
* Move some logic to lib
* Mouse action priority queue enhancement
* Get rid of siegehandler dependency
* Improve AI offensive spellcasting
* CBattleInterface cleanup
2019-05-04 06:42:55 +03:00
Alexander Shishkin
bd11e87f6a
Merge pull request #572 from dydzio0614/FuzzyHelperCrash
Fix crash caused by FuzzyLite destructor
2019-04-21 22:06:53 +03:00
Andrii Danylchenko
4153ebac58 ai fixes for android 2019-04-11 14:54:48 +03:00
Michał Kalinowski
ac6b477aa2 Simplify statements
-Simplify return statements across the code
2019-03-31 09:43:14 +03:00
Dydzio
55b000fb64 Fix crash caused by FuzzyLite destructor 2019-03-30 19:19:36 +01:00
Michał Kalinowski
ec536e613c CMake more transitive
-Moving AIs cmake to target focusing code
-Beign explicit when link libraries
2019-03-28 16:56:51 +03:00
Dydzio
94040ea8af Update VS files (add AI armymanager) 2019-03-25 02:20:24 +03:00
Andrii Danylchenko
75ed6210c6 try fix build 2019-03-23 14:11:57 +02:00
Andrii Danylchenko
ffdf5ad180 AI: fix hero exchange logic, allow splitting weakest-fastest creature, refactoring 2019-03-17 11:54:02 +02:00
Alexander Shishkin
83094faf8e
Merge pull request #553 from nullkiller/ai-fix-town-portal-to-occupied-town
ai fix town portal to occupied town
2019-03-08 20:26:32 +03:00
Andrii Danylchenko
5fb5ddfc67 ai fix town portal to occupied town 2019-02-26 22:50:46 +02:00
AlexVinS
f36a86412e Quick fix for https://bugs.vcmi.eu/view.php?id=3041 2019-02-24 18:45:53 +03:00
AlexVinS
9311966706 [C::B] Switch to MinGW 7.3 2019-02-19 14:59:10 +03:00
Andrii Danylchenko
f76c6c2300 Remove a few more usages of thread shared ai and cb 2019-02-17 14:32:42 +02:00
Alexander Shishkin
6165954e40
Merge pull request #546 from nullkiller/ai-pathfinding-update-paths
AI pathfinding const api and updatePaths
2019-02-14 20:33:00 +03:00
Dydzio
e6baba3ca0 Disable tactical advantage engine until rework 2019-02-13 12:01:32 +01:00
Alexander Shishkin
1e8fc51f70
Merge pull request #549 from dydzio0614/AiStackSplitImprovement
AI hero exchange improvement: split last creature stack
2019-02-13 00:02:31 +03:00
Dydzio
aafad18121 Style fixes 2019-02-12 19:47:19 +01:00
Dydzio
997ed6fcd0
remove legacy VisitObj goal name in AI logging 2019-02-12 18:29:42 +01:00
Dydzio
18e139d9e3 AI hero exchange improvement: split last creature stack 2019-02-12 17:20:59 +01:00
Dydzio
b492e7f3e8 Do not generate GatherArmy goal as result of GatherArmy decomposition 2019-02-11 12:46:47 +01:00
AlexVinS
1f83953da4 Partial fix for https://bugs.vcmi.eu/view.php?id=3033 2019-02-10 21:09:24 +03:00
Andrii Danylchenko
881e7f2061 AI pathfinding: use own FuzzyHelper for each storage to allow parallel processing without cuncarrent access 2019-02-10 15:25:56 +02:00
Andrii Danylchenko
675406589c AI pathfinding calculated in parallel 2019-02-10 15:25:56 +02:00
Andrii Danylchenko
35f696b695 AI pathfinding const api and updatePaths 2019-02-10 15:25:56 +02:00
AlexVinS
b24c037129 [C::B] Updated projects 2019-02-10 04:57:06 +03:00
Arseniy Shestakov
e511ee0078 AI: fix paths after merge of #545 2019-02-09 18:46:19 +03:00
Dydzio
6c886db079 Update VS project filters 2019-02-09 13:24:43 +01:00
Andrii Danylchenko
5454848938 AI: extract pathfinding special actions and rules to separate files 2019-02-08 17:43:32 +02:00
Arseniy Shestakov
f06c8a8725 VisitObjEngine: avoid crashes if object is no longer visible
This really shouldn't happen, but better safe than sorry
2019-01-27 05:58:46 +03:00
Andrii Danylchenko
bf87a9774d AI: stability fixes 2019-01-26 22:38:57 +02:00
Andrii Danylchenko
c96be75f41 AI: optimizae explore logically, reduce amount of scanned tiles during full map scan for new exploration point 2019-01-19 17:50:59 +02:00
Alexander Shishkin
b00e935e4d
Warnings fixes (#538)
Warnings fixes
* Suppress `missing-braces` for Clang
* Fixed many C4275 warnings
* Fixed almost all Clang/GCC warnings
* Silence most frequent MSVC warning.
* Fixed some pessimizing-move warnings
* Fixed some unused capture warnings
2019-01-19 13:52:02 +03:00
AlexVinS
da20aa2388 Use the same cost value in Pathfinder and fuzzy evaluations. 2019-01-17 10:54:41 +03:00
AlexVinS
4b5910c2f4 VCAI performance improvements
* Node graph initialization optimized.
* Fixed "Unathorized obstacle access".
* Pathfinding tracing disabled with ifdef.
* Misc bonus calculation optimizations.
* Removed timestamp from log lines. Date formatting eats too much CPU.
* Paths for all heroes in Client are now cached
2019-01-17 10:50:56 +03:00
Andrii Danylchenko
8fee46de7c AI: town portal support 2019-01-17 10:40:23 +03:00
DJWarmonger
2e20dce71f Fixed random hack that broke VCAI in recent commit. 2019-01-09 19:25:51 +01:00
AlexVinS
f0492ffa53 Tweaks 2019-01-08 00:49:36 +03:00
AlexVinS
f1cd4656ff Fixed warnings. 2019-01-08 00:40:09 +03:00
AlexVinS
9ec3d2ef64 Merge remote-tracking branch 'remotes/nullkiller/ai-refactor-exploration-according-to-new-pathfinder' into develop 2019-01-08 00:25:25 +03:00
Andrii Danylchenko
8b829e1099 AI: fix crash in pathfinding 2019-01-07 22:12:59 +02:00
DjWarmonger
efc53e8f8b
Merge pull request #530 from dydzio0614/objRemovalFix
Extend objectRemoved callback to check parent goals and resource manager
2019-01-07 19:00:06 +01:00
Andrii Danylchenko
bdaf127976 AI: explore logical optimization 2019-01-07 14:58:12 +02:00
Andrii Danylchenko
04047d0a1a AI: refactor explore further 2019-01-07 14:07:36 +02:00
Andrii Danylchenko
edc5abe49d AI: tweak explore to work with new pathfinding. 2019-01-07 14:07:36 +02:00
Andrii Danylchenko
f36ac1a6e2 AI: fix one more freeze in buy army 2019-01-06 22:36:46 +02:00
Dydzio
3e1b623fb6 Refactor goal removal from resource manager queue 2019-01-01 15:41:52 +01:00
Dydzio
456132c06b Fix code mistake 2019-01-01 14:19:52 +01:00
Dydzio
94df657d03 Check parent goals and resource manager for validity 2019-01-01 14:19:52 +01:00
Dydzio
216d50788b Fix AI build, update default Windows SDK version for projects 2018-12-31 15:18:42 +01:00
AlexVinS
5a8416bd19 [c::b] Updated projects, fixed build 2018-12-31 00:03:31 +03:00
Andrii Danylchenko
2c401931c4 AI: fix freeze on BuyArmy 2018-12-30 16:40:05 +02:00
Andrii Danylchenko
ee5a26da60 AI: fix freeze while endlesly trying to recruit hero which is not possible anylonger. 2018-12-25 15:04:03 +02:00
Andrii Danylchenko
035d279ae8 Refactor CGHeroInstance, make spells private 2018-12-23 15:49:26 +03:00
Andrii Danylchenko
5d022ba77c AI: CompleteQuest goal and summon boat spell support 2018-12-23 15:49:26 +03:00
DJWarmonger
e996879733 Commented out some extensive logs which slowed down pathfinder. 2018-12-16 16:12:41 +01:00
DJWarmonger
f4a8a1294e Optimizations based on MSVS profiler. 2018-12-16 15:46:48 +01:00
Dydzio
e1c27d04b4 Update VS files to match AI goals split 2018-12-05 13:05:54 +01:00
Andrii Danylchenko
e1b922f7b8 AI goals refactoring (#524) 2018-12-01 11:30:37 +03:00
Alexander Shishkin
000ca1c823
Merge pull request #520 from nullkiller/freeze-in-gather-troops
AI: GATHER_TROOPS improvements and fixes
2018-11-17 18:46:02 +03:00
Dydzio
c3088e293a Workaround linker bug, set higher optimization by default 2018-11-17 11:34:39 +01:00
Andrii Danylchenko
60c5f584a8 AI: GATHER_TROOPS improvements and fixes 2018-11-14 22:10:02 +02:00
Dydzio
d5063e53a0 Do not evaluate goals related to removed hero 2018-11-07 21:04:15 +01:00
Andrii Danylchenko
9a0b5a0afc AI: fix freeze when AI has a win condition to control own town 2018-11-06 21:45:29 +02:00
Andrii Danylchenko
3871ed0085 Hero try to execute a quest to kill himself 2018-11-05 22:24:15 +02:00
Andrii Danylchenko
812df63aae Freeze when try to bypass a few adjasent guards 2018-11-04 14:37:29 +02:00
Alexander Shishkin
064130973f
Merge pull request #514 from dydzio0614/HeroAiValueFix
Hero ai value fix
2018-11-03 23:34:03 +03:00
Dydzio
3e6cdb28bc Promote no AI value message to error, shouldn't happen without mods 2018-11-03 13:03:31 +01:00
Dydzio
8ec558a2ae Fix AI value handling for heroes 2018-11-03 12:46:02 +01:00
Dydzio
9f3d718e3b Allow AI to be aware of invisible heroes deletion 2018-11-02 16:35:25 +01:00
Dydzio
90c7daccc5 Fix path (#510) 2018-10-31 00:55:34 +03:00
Alexander Shishkin
e26f6ff15f
Merge pull request #505 from janisozaur/catch-by-ref
Catch exceptions by const-ref, not by value
2018-10-30 05:08:30 +03:00
Michał Janiszewski
7be9aa4868 Prevent shadowing of function arguments by local vars 2018-10-29 16:56:14 +01:00
Michał Janiszewski
9822a8f2df Catch exceptions by const-ref, not by value 2018-10-29 16:41:54 +01:00