1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-26 22:57:00 +02:00
Commit Graph

719 Commits

Author SHA1 Message Date
ArseniyShestakov
ab7ad4741a AIStatus: add teleport channel probing mode
When AI going through bidirectional teleport it's always getting list of all available exits.
If some of exits are invisible it's will attempt to visit each of them teleport probing begins.
2015-03-08 17:23:56 +03:00
ArseniyShestakov
25656aa586 Add showTeleportDialog everywhere except actual code for AI and player
Just like TeleportDialog it's based off showBlockingDialog, but as number of package is higher when possible showTeleportDialog will be after other dialogs handling code.
2015-03-08 16:52:50 +03:00
AlexVinS
f4c683cd5e Move VievXXX logic to server side (except expert ViewEarth) 2015-02-26 17:15:17 +03:00
AlexVinS
685deddac1 Start spell-relatet files reorganisation
* moved existing files to separate directory
-> todo: split mechanics
2015-02-26 08:39:48 +03:00
ArseniyShestakov
ea46be03f3 AI: check if hero killed while visiting object he stayed on
This is need to avoid crashes like one happen in 2084, but then game bahaviour incorrect.
I'm not exactly sure if this possible currently, but I can imaging this would happen if hero decide to attack bank while staying on it.
2015-02-22 20:56:50 +03:00
DjWarmonger
60932d9ed0 AI won't ignore owned objects taken by enemies. 2015-01-24 21:38:22 +01:00
DjWarmonger
84b2510aa4 Merge pull request #62 from vcmi/SpellsRefactoring4
OK
2014-12-26 08:46:29 +01:00
DjWarmonger
5b8180e327 Cleaning logs. 2014-12-25 12:58:15 +01:00
AlexVinS
eebf65e88f Merge branch 'develop' into SpellsRefactoring4 2014-12-24 00:15:27 +03:00
DjWarmonger
7735e193f0 Merge branch 'develop' into experimental/serializerrefactoring 2014-12-22 19:17:40 +01:00
AlexVinS
3bca68fd2d Initial refactoring
* reduce registerTypes* templtates instantiation
2014-12-21 17:29:42 +03:00
DjWarmonger
da76a2f227 Fixed AI trying to visit tile already occupied by different hero, including #1902. 2014-12-21 14:50:26 +01:00
DjWarmonger
af02655b30 Fixed #1962 2014-12-21 11:33:53 +01:00
DjWarmonger
a823fae822 Fixed NaNs in FuzzyHelper::getTacticalAdvantage 2014-12-19 19:15:41 +01:00
DjWarmonger
cd060c00c5 Each fuzzy set of rules will use separate fuzzy engine. 2014-12-19 10:52:41 +01:00
DjWarmonger
a1e42caddd Banks won't use fuzzy engine at all, only center of mass. 2014-12-10 12:29:51 +01:00
DjWarmonger
7adb0fd600 Fuzzy engine fix by Jcrada. 2014-12-05 09:28:58 +01:00
DjWarmonger
6463c33c26 Rewrite / update terms for TacticalAdvantage. 2014-11-28 14:17:17 +01:00
DjWarmonger
9ca991282a Taken JCrada patch as it is. 2014-11-27 21:51:48 +01:00
AlexVinS
f7ff61ce4f Merge remote-tracking branch 'remotes/origin/develop' into SpellsRefactoring4 2014-11-24 12:41:17 +03:00
DjWarmonger
b0cd4f4117 Added limits and assertions which show that fuzzy engine is completely bugged. 2014-11-22 18:57:17 +01:00
josch
2812334de9 add FL_CPP11 preprocessor define independent of which fuzzylite is used 2014-11-17 11:42:30 +01:00
AlexVinS
a06dae1f96 Move getAffectedCreatures to CSpell. + more drafts 2014-11-13 04:53:25 +03:00
AlexVinS
d7800b834e get rid of CBattleInfoCallback::calculateSpellDmg 2014-11-12 09:52:11 +03:00
AlexVinS
e4b726151d get rid of CBattleInfoCallback::battleStackIsImmune 2014-11-12 09:20:20 +03:00
AlexVinS
5e42fb8a2a [MinGW]FL build fix 2014-11-05 03:34:14 +03:00
DjWarmonger
3e724bc564 Merge pull request #51 from Mixaill/fuzzylite-fix-3
Fix fuzzylite compilation, again
2014-11-03 17:41:30 +01:00
Mikhail Paulyshka
d0da88a515 define FL_CPP11 outside Fuzzylite source 2014-11-03 01:00:22 +03:00
Mikhail Paulyshka
941dcee0f5 Fix AI and VCAI CMakeLists.txt 2014-11-02 23:43:10 +03:00
Mikhail Paulyshka
a867faae1e use vanilla Fuzzylite 2014-11-02 23:41:41 +03:00
DjWarmonger
229ef66699 Fix for MSVS project. 2014-11-02 18:07:32 +01:00
DjWarmonger
dc9082d88c Merge branch 'develop' of https://github.com/vcmi/vcmi into develop 2014-11-02 08:21:25 +01:00
DjWarmonger
e2a6008aa4 Removed unnecessary MSVS settings. 2014-11-02 08:20:58 +01:00
Mikhail Paulyshka
53298c1fd1 ad FL_Windows prepocessor definition 2014-11-02 00:44:00 +03:00
Mikhail Paulyshka
f2ed40f0de fix compilation on non-MSVC compilators (Global.h not found) 2014-11-01 23:40:33 +03:00
DjWarmonger
040fcd30e1 Merged https://github.com/vcmi/vcmi/pull/47 2014-11-01 17:04:51 +01:00
DjWarmonger
9eeea7299a - Removed unecessary includes
- Fixed town types configured from RMG templates
2014-10-31 17:09:34 +01:00
AlexVinS
f16e859242 [C::B] update FL project 2 2014-10-27 15:17:40 +03:00
AlexVinS
49b1b6559d [C::B] update FL project 2014-10-27 14:46:20 +03:00
DjWarmonger
c87f2cdaaf Updated build for MSVS. Some compile fixes to FuzzyLite source. 2014-10-26 12:32:19 +01:00
DjWarmonger
8bf413e0c5 Restored Visual and Code::Blocks projects wiped by previous merge. 2014-10-26 10:49:05 +01:00
jcrada
a4f98a9ebd Upgraded to FuzzyLite version 5.0 2014-10-25 16:13:20 +02:00
josch
101ac04c13 Replaced embedded copy of fuzzylite with fuzzylite 5.0
- retrieved from
   https://github.com/fuzzylite/fuzzylite/archive/v5.0.tar.gz
 - only modification to tarball content was the removal of the examples
   directory
 - fuzzylite release 5.0 tags fuzzylite git commit c11556f
2014-10-25 16:00:44 +02:00
josch
fab31642d9 prepare for update to fuzzylite 5.0
- use system version of fuzzylite if available
 - adapt include paths
2014-10-25 16:00:44 +02:00
AlexVinS
66b022f93e initializer lists part1 2014-10-02 19:43:46 +04:00
DjWarmonger
95e442898e Fixed #1900 2014-10-01 13:26:04 +02:00
Ivan Savenko
33c0e24940 Fixes 1895 - Properly select upper army for recruitment 2014-09-23 14:28:55 +03:00
Ivan Savenko
4bb5784922 Fixing AI - dwelling visitation code should now work properly 2014-09-21 18:08:47 +03:00
Ivan Savenko
b67618ab53 First batch of AI fixes:
- wiped not actually used set/get selection
- replaced isReachable with VCAI::isAccessible
2014-09-21 17:03:20 +03:00
Ivan Savenko
6c0c03d74b Refactoing of pathfinder <-> client/AI interaction to remove dependency on selected hero
- finished removal of server-side setSelection
- disabled some broken code (AI & cheats). TODO: fix
2014-09-21 16:42:08 +03:00
Ivan Savenko
78709e223b Breaking things - trying to remove server-side knowledge of selected objects 2014-09-19 00:18:49 +03:00
Ivan Savenko
b551bdb725 Final part of the merge
Merging VCMI Dirs refactoring + GUI refactoring with current develop
2014-09-04 20:59:07 +03:00
DjWarmonger
0edaf4fa8a Merge pull request #26 from vcmi/FFMpeg
Let's do this, way too many branches running now.
2014-09-01 10:35:30 +02:00
DjWarmonger
8b10f70afd Migrating to MSVS 2013, which allows to delete inttypes.h file. 2014-08-31 19:08:39 +02:00
Karol
1b6f2ea3b7 VCMIDirs update #5 fix
- Updated old OS detect macros.
- Fixed 1 misspell.
2014-08-26 12:19:04 +02:00
beegee1
5139378319 - migrated boost::function/ref/bind to std:: variants 2014-08-04 20:33:59 +02:00
Michael Pavlyshko
13cbf0bbca disable fPIC for windows 2014-07-11 23:11:19 +03:00
Michael Pavlyshko
f7d8faa540 install only .dll (without .dll.a) 2014-07-11 17:27:50 +03:00
AlexVinS
195eae48ca Merge branch 'develop' into SDL2
Conflicts:
	client/CPlayerInterface.cpp
2014-07-02 17:15:12 +04:00
Ivan Savenko
1157111fcf More bugfixing:
- Fixed compile in VCAI (precompiled headers should not include VCMI headers)
- Fixed crash on visiting observatories, including shroud of darkness
2014-06-29 17:23:06 +03:00
Haryaalcar
88122ee253 another build fix:
Undefined symbols for architecture x86_64:
  "operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, EVictoryLossCheckResult const&)
2014-06-26 02:19:10 +03:00
Ivan Savenko
32240da34e Reduced number of #include's in headers. May break compilation on Win
since some net packs now need DLL_LINKAGE
2014-06-25 17:11:07 +03:00
Ivan Savenko
a0689fa377 Refactoring of hoverText from objects:
- removed hoverText field
- split getHoverText() method into 3:
- - getObjectName() for generic name
- - getHoverText(Player) for player-specific text
- - getHoverText(Hero) for hero-specific strings
2014-06-24 20:39:47 +03:00
AlexVinS
3b8d0e44d4 Merge branch 'develop' into SDL2 2014-06-24 14:09:44 +04:00
DjWarmonger
3ac306f501 Merge pull request #19 from vcmi/feature/mapObjects
Feature/map objects
2014-06-22 14:49:42 +02:00
Ivan Savenko
ab475195ac Banks now use new scheme as well
- Implemented Bank Constructor object.
- Merged Pyramid object into common Bank class. Banks can now grant
spells as part of their reward.
- Move bank config code to config/objects/creatureBanks.json. Note: WoG
banks are not updated yet, should be moved to WoG mod.
- Updated AI code so it can correctly evaluate bank danger (should be
generic enough for use with other objects)
- New files JsonRandom.* that contain routines for loading random
objects from Json (still WiP but should be stable)
2014-06-22 13:39:40 +03:00
DjWarmonger
5c431da0f9 Merge branch 'develop' of https://github.com/vcmi/vcmi into RMG 2014-06-15 10:01:18 +02:00
AlexVinS
56c74bc46a +More build target to support both SDL1 and SDL2 builds 2014-06-13 07:55:48 +04:00
AlexVinS
bbd0312b45 Tweak configuration 2014-06-13 07:55:47 +04:00
Haryaalcar
2ee139977f crash in VCAI::completeGoal() fixed 2014-06-09 11:24:17 +03:00
Ivan Savenko
b2e8c92383 Cleanup:
- removed commented-out #includ'es
- renamed some files to match name of class
2014-06-05 20:26:50 +03:00
Ivan Savenko
652ceb2bde Finally shattered CObjectHandler.cpp into tiny bits
- This file is now split into multiple smaller files in mapObjects
directory
- CObjectHandler itself now contains only core classes (Handler itself,
CGObject and interfaces)
- Cleaned up excessive #include's through whole project
2014-06-05 19:52:14 +03:00
DjWarmonger
e54c816c92 Treasure piles can now cover several tiles. 2014-06-05 17:19:11 +02:00
Ivan Savenko
0afdfa529c Moved all object-related files to lib/mapObjects directory.
Renamed some classes to more readable names
2014-06-05 14:19:47 +03:00
Ivan Savenko
32b6568b65 Merged changes from upstream and fixed compilation caused by API changes 2014-06-03 22:45:18 +03:00
DjWarmonger
aee748d8d6 - Added monoliths between remote zones
- Fixed land connections between zones, now they're generated correctly.
2014-06-01 12:02:43 +02:00
DjWarmonger
8c24ea0bfb Introduced 3-value logic for free, blocked and possibly occupied tiles. Refactoring. 2014-05-30 16:50:06 +02:00
Ivan Savenko
1d17d60449 gcc update:
- removed support for 4.6
- compilation fixes for 4.7
2014-05-29 13:42:05 +03:00
Ivan Savenko
7f276185bd Moving files:
- new config for objects (config/objects/generic.json)
- renamed lib/CDefObjectHandler to lib/CObjectClassesHandler
2014-05-24 02:07:54 +03:00
AlexVinS
6f65d2484b Extract battleStackIsImmune from battleIsImmune
This fix possible problems with rising spells as now immunty is handled on stack level not on hex level
* battleIsImmune in now protected - only used in canCastThisSpellHere
2014-05-19 13:44:38 +04:00
DjWarmonger
6658e173f1 - Possible fix for #1769
- Fixed all possible (even unexpected) crashes when AI looses active hero
2014-05-18 13:13:31 +02:00
Ilya Zhuravlev
db7cd79cf7 Android port.
Conflicts:
	lib/vcmi_endian.h
2014-05-16 23:24:29 +04:00
DjWarmonger
fb5152254d Merge branch 'develop' of git://github.com/Macron1Robot/vcmi into WarmysBackup
Conflicts:
	client/CKingdomInterface.cpp
2014-05-02 12:03:02 +02:00
Macron1Robot
21c2efbc64 Update VCAI.cpp
Deleted commented text and optimized estimateIncome
2014-04-28 10:33:42 +04:00
Macron1Robot
ede9818b38 Update VCAI.cpp
corrected typo
2014-04-28 08:26:21 +04:00
DjWarmonger
4a71442c80 Missing changes. 2014-04-27 14:38:20 +02:00
Macron1Robot
8ec7a9b919 Moved "max heroes on map per player", "max heroes available for player" to "defaultMods.json" 2014-04-27 10:43:46 +04:00
Macron1Robot
907caedb13 Added "produce" section in "building" structure. Changed dailyIncome. 2014-04-26 18:23:35 +04:00
Macron1Robot
b7b890acff Added "tavernVideo","guildBackground" to "faction" JSON config and schema. If "primaryResource" is set to "gold", silo will generate 500 gold per day 2014-04-24 23:36:18 +04:00
DjWarmonger
9e7013de77 Backup for my own MVS project configuration 2014-04-24 21:07:43 +02:00
beegee1
e2bcac4d27 - fixed include random generator header 2014-04-18 18:45:47 +02:00
beegee1
1d57b75bc5 - random number generation refactoring
- fixed mantis #1743
2014-04-10 19:22:32 +02:00
Ivan Savenko
43ba3d30ea Breaking things - first commit towards configurable object(s).
- New files: lib/CObjectWithReward.h/cpp
- Classes that will be replaced by configurable object are now in this
fil

Status: far from functional, currently at "it compiles" point, some
essential pieces are still missing.
2014-04-06 23:14:26 +03:00
DjWarmonger
2da3d7d7c3 Removed AI bottleneck on water-based maps. 2014-04-03 09:57:44 +00:00
DjWarmonger
30b79588db - Moved gameState::guardingCreaturePosition() to CMap so it doesn't need to be recalculated many times for every player.
- Some optimizations with local cb pinter in VCAI.
2014-04-01 11:53:28 +00:00
DjWarmonger
a64df5718f Some nontrivial optimizations based on profiling results:
- Movement bonuses will be calculated ONCE per pathfinder loop
- Goals will be sorted by hero to reduce number of calculatePaths calls
2014-03-31 14:26:09 +00:00
DjWarmonger
8683c8c0eb - Added and improved some propagators, including Crystal Dragons ability (#1232)
- Minor refactoring in AI
2014-03-29 21:39:19 +00:00
Ivan Savenko
771c1ce255 - some effords to get rid of bottlenecks in AI code
- fixes, probably partially #1577
- enabled code for reading map object templates from json, still not
used
- disabled PCH for launcher due to speed issues.
2014-03-23 16:36:16 +00:00
DjWarmonger
441e4b2cb2 Improvements for AI speed (#1760)
AI heroes will be excluded from exploration if:
- There is no clear way to next exploration point or
- There is no possible exploration point at all
AI heroes will be erased from the list above if:
- FoW changes
- New object is added
- To prevent lock, primary hero will be erased at the start of each turn
2014-03-23 16:00:43 +00:00
Ivan Savenko
9c0df68cb8 Fixing spelling mistakes. Patch from josch, fixes #1759 2014-03-23 12:59:03 +00:00
beegee1
fe1b16a7ec Some preparation towards mantis #1743:
- refactored CRandomGenerator (added util methods, improved method names)
- usages of std::minstd_ran are replaced by CRandomGenerator (not in entire code base, C rand() usages are still not replaced)
- refactored getArtSync method of CArtHandler -> now named pickRandomArtifact
- fixed some compiler warnings
- updated source code URL in VCMI spec
2014-03-17 19:51:07 +00:00
alexvins
4203d69525 Part 2 of new spell configuration
1) spell handler refactored to support modding in general way
2) imunnity icons moved to WoG as they depends on wog`s graphics
3) introduced new class template for handlers (todo: use this in other handlers)
4) save format changed
5) introduced "absolute immunity" - unaffected by "the Orb" etc. (todo: use it in config)
6) new format documented on wiki, added json schema.

* more split of registertypes - fixes 32 mingw build
2014-03-07 13:21:09 +00:00
Michał W. Urbańczyk
93b8d2e59a AI crash — do not modify container when iterating it. 2014-03-01 12:53:09 +00:00
DjWarmonger
d049abe644 Fixed typo #1732. 2014-02-26 17:29:21 +00:00
DjWarmonger
8ce6659633 Important fix for unreserving objects. 2014-02-23 20:37:33 +00:00
DjWarmonger
94c8f01732 Commiting some minor tweaks before next dev version. 2014-02-23 16:55:42 +00:00
Michał W. Urbańczyk
458ba47965 Compile fix for non-msvc, as per https://github.com/vcmi/vcmi/pull/8 2014-02-21 12:27:56 +00:00
DjWarmonger
15edeb231b Fixed two heroes getting stuck on both sides of gate. 2014-02-21 09:32:24 +00:00
DjWarmonger
1196eb5d81 AI can finally clear Subterranean Gate with guard on the other side :) 2014-02-21 07:48:38 +00:00
DjWarmonger
b0b0249524 - Implemented serialization of Goals. Loaded games work, at least.
- Attempts to add Subterranean Gates to SectorMap
- Extensive use of ClearWayTo goal.
2014-02-20 20:18:49 +00:00
DjWarmonger
8683b982c7 - A simple method to break loop in goal decomposition (which consumed time)
- Finally corrected canGetArmy conditions (which also consumed time)
- Removed some unused code, general cleaning
2014-02-19 16:23:47 +00:00
DjWarmonger
a3cad2883f - Restored correct specialty serialization (#1599 and all its children)
- Fixed rare AI crash
- Fixed AI visiting some objects many times
- Some cleanup and refactoring
2014-02-17 17:28:39 +00:00
DjWarmonger
6ee823298a - Various improvements for exploration
* Heroes will try to use SectorMap if there are no accessible tiles
* Remove some loopholes and pitfalls when all the ways are blocked
* Fixed AI not conquering some (reserved) objects
Still missing: SectorMap does not use Subterranean Gates :(

- Improvements for army exchange
* Fixed exchange condition
* Bidirectional exchange is possible
2014-02-17 07:36:03 +00:00
DjWarmonger
afacb40f5a - Fixed secondary heroes stalking main hero
- Fixed exotic crash when all nearby tiles are occupied
2014-02-15 21:32:49 +00:00
DjWarmonger
b368e565ab - fixed #1714
- Performance improvements, refactoring
2014-02-15 19:39:03 +00:00
DjWarmonger
d8933b5c36 - AI will now use SectorMap to find a way to guarded / covered objects.
- Improvements to SectorMap needed for use of multiple heroes
2014-02-15 16:38:51 +00:00
DjWarmonger
e459984897 Cleanup in AI. 2014-02-15 08:10:06 +00:00
Ivan Savenko
7f07a30d7d More fixes for map-specific crashes, fixes #1427 and #733
- if special victory condition is present AND there is only one player
normal victory condition will be disabled
- added new triggered condition, constant value
- if target of CONTROL/DESTROY condition is removed from map, triggered
condition will be replaced with constant
- fixed randomization of armies with random stacks
2014-02-09 12:10:02 +00:00
DjWarmonger
d17b3a14bd - Significantly improved exploration algorithm
- Workaround to make AI gather army when exploration is not possible anymore
- Possibly fixed issue with AI not capturing guarded objects
2014-02-07 20:09:15 +00:00
DjWarmonger
a9b10c8099 - Changed aggregation method so now fuzzy engine takes all the factors into consideration
- Heroes now will use real path cost and their movement, which has numerous advantages:
* Actual movement cost is taken into consideration
* Groups of heroes will keep order
* Fastest heroes will be used for exploration first
2014-02-07 08:23:31 +00:00
DjWarmonger
54fbdfec5e - Finally fixed wander crash
- Smoothed values of terms to improve differentiation and stability
2014-02-06 06:05:45 +00:00
beegee1
95034b9fa0 - Updated PCH to use our StdInc.h as the prefix header (not generated one from cotire) -> no exclude headers from ffmpeg/etc... statements required
- Fixed compilation error (VCAI ResourceSet logging)
2014-02-05 20:25:36 +00:00
DjWarmonger
486cd4b001 - Fixed (common) issue when AI found neutral stacks infinitely strong
- Fixed non-fuzzy performance of some functions. Now AI really considers all options and uses multiple heroes, who don't spend their time wandering a lot.
2014-02-05 18:45:51 +00:00
DjWarmonger
5e58027496 Fix for rare crash in previous commit. 2014-02-05 09:04:09 +00:00
DjWarmonger
c708a631c1 - Improved AI logging messages
- Cut wandering time of AI
2014-02-04 21:49:04 +00:00
beegee1
df0a28d9cb - added PCH compilation for CMake using cotire module (PCH is OFF per default, can be enabled with ENABLE_PCH=ON) 2014-02-01 13:37:26 +00:00
Ivan Savenko
3779a54ddd - probably fixed 1671
- fixed missing loss condition in Birth of Barbarian
- fixed some bugs found by cppcheck
2014-01-30 11:08:37 +00:00
alexvins
16d6292be9 [refactor] extract often used classes from lib\NetPacks.h to separate header - less dependecies on whole packets class tree
[mingw build] fix linking issues with netpacks. 
Mingw build is finally fixed! 

[c::b] update projects

[config] fix and cleanup spell_info.json
2014-01-16 20:24:06 +00:00
DjWarmonger
c2cbd8da27 Un-abstracted AbstractGoal to allow serialization. 2014-01-06 14:17:56 +00:00
alexvins
a740f7989c [c::b] update projects, disable PHC for now, +few fixes (still wip) 2014-01-05 17:48:50 +00:00
Ivan Savenko
2c4c964a45 Large rewrite of adventure map objects:
- replaced CDefObjInfo with ObjectTemplate class
- ObjectTempate is a direct member of objects instead of pointer with
shared ownership across CMap, handler and game objects
- simplified handling of objects that can change appearance (e.g. towns)
- all object queries regarding object appearance/blockmaps use h3m pos
instead of relative positions
- removed need of modhandler::reload
- cleanup of some old code
2014-01-02 23:48:38 +00:00
beegee1
5971ceaa7f - Fixed hero / army strength handling 2013-12-31 16:11:18 +00:00
DjWarmonger
51e6961d08 Compile fix for MVS. 2013-12-29 15:48:56 +00:00
Ivan Savenko
0c5be52a42 Win/loss conditions based on logical expressions, yet another large
changeset:
- victory/defeat will be detected using triggered events
- vcmi will convert h3 conditions into set of triggered events
- it is possible to either change number of days without towns or even
remove this loss condition completely
- possibility of custom win/loss text and icons in pregame (no longer
connected to win/loss conditions)

Still missing:
- No interface to pass custom events/victory conditions into the game 
- AI would benefit from improvemets (handle all victory conditions,
select best one to fulfill)
- You have X days till defeat message still hardcoded to 7 days
2013-12-29 11:27:38 +00:00
DjWarmonger
344783efb5 An attempt to handle spawning objects. However, on a day of double growth, when multiple monsters spawn, game freezes. Looks like engine issue, code is commented out. 2013-12-28 16:39:47 +00:00
beegee1
b8eddcd9a8 - Moved place bonus hero before normal random hero and starting hero placement -> same behaviour as in OH3
- Moved placing campaign heroes before random object generation -> same behaviour as in OH3
- Refactored pickHero into pickNextHeroType (hero generation sequence) and pickUnusedHeroTypeRandomly
- Added a SIGSEV violation handler to vcmiserver executable for logging stacktrace (for convenience only)
- Fixed Fuzzy.cpp and VCAI.h compilation on Clang
- Added a handleException function in addition to our macros (no use of macros, enables debugging support, does not re-throw, catches ...-case too)
2013-12-28 12:47:55 +00:00
DjWarmonger
9ec299931d - Fixed VisitHero goal. Now heroes can exchange armies again.
- AI should not get lazy in endgame.
- Removed unused code.
2013-12-27 13:20:40 +00:00
DjWarmonger
e5b011abe0 - Fixed heroes stalling. Locked heroes now try to decompose their goals exhaustively, which FINALLY works as intended.
- Fixed multiple issues with ClearWayTo goal.
2013-12-26 09:53:37 +00:00
DjWarmonger
603cbd8850 Experiment: goal values calculated by Fuzzy Helper will be stored in "priority" field and used in consecutive calculations. 2013-12-25 16:05:11 +00:00
DjWarmonger
7af9b0ea74 Replaced AI vectors by sets for both performance and safety. 2013-12-25 13:38:20 +00:00
DjWarmonger
12bb9221d1 One more fix. 2013-12-24 22:12:12 +00:00
DjWarmonger
a8539b2b28 - Fixes for Quest Guard and goal completion, in particular For Sale map (#894)
- Fixes for ally players handling by AI
2013-12-24 22:01:16 +00:00
DjWarmonger
0c3ccda922 One more fix. 2013-12-23 21:22:42 +00:00
DjWarmonger
aec04d920e Endless crusade against AI issues and loopholes!
- Fixed #1126
- ClearWayTo and GatherArmy goals will also consider multiple subgoals
- GatherArmy may include building dwellings in town (experimental)
2013-12-23 20:46:01 +00:00
DjWarmonger
362a54b4df More fixes and tweaks for AI, including #1590. 2013-12-21 21:31:28 +00:00
DjWarmonger
a6ce282f8a Dramatically reduced exploration complexity. AI will check only nearby objects. 2013-12-21 19:17:27 +00:00
DjWarmonger
473250e223 - Removed slow and buggy part of exploration code
- Various tweaks and performance improvements. remove_if on long vector is a bad idea.
2013-12-21 17:34:59 +00:00
DjWarmonger
5ec3685041 Fixed heroes getting stuck because their assigned tile was captured by another hero. 2013-12-21 07:37:23 +00:00
DjWarmonger
045af73f0d Some tweaks and performance improvements. 2013-12-20 21:10:43 +00:00
DjWarmonger
bf3fe0e274 - Explore goal will also use fuzzy comparison
- Fixed AI afraid of town with Castle built: #1514, #1515, #1584
2013-12-20 16:49:51 +00:00
beegee1
68bdf71db6 - Fixed GCC compiler warnings
- Implemented move heroes to next scenario partially
2013-12-20 13:07:58 +00:00
DjWarmonger
6b3ca831c1 - Conquer goal will not use fuzzy logic as well. AI should play more aggresively.
- Removed unused code.
2013-12-20 13:01:44 +00:00
DjWarmonger
1b04f4fa9f Hopefully fixed ALL the cases when hero could use invalid path, for good. 2013-12-20 10:15:29 +00:00
DjWarmonger
d085f8eee8 First implementation of fuzzy logic in VisitTile goal. 2013-12-20 09:43:12 +00:00
DjWarmonger
983c0496d0 Some work towards fuzzy goal comparison. 2013-12-19 20:21:21 +00:00
Ivan Savenko
881a7cf862 - added check to avoid recursion in AI town building code
- restored previously missing AI shield during AI turn
2013-12-19 17:29:35 +00:00
Ivan Savenko
ee1b0459e6 Extended building dependencies:
- buiding/structure lists must use object format. This may break some
outdated mods.
- generic support for logical expressions that consist from and/or/not
operators.
- string ID's for buidings are now actually used.
2013-12-02 11:58:02 +00:00
beegee1
36a69aaa2f - Fixed VS project files (added missing .cpp files)
- Structured VS project files (added a filter for every subfolder)
2013-11-30 14:22:03 +00:00
DjWarmonger
2f698acf98 Compile fix - template specialization is defined before generic template. 2013-11-30 07:52:08 +00:00
DjWarmonger
8be4ca03c8 Uncommented Fuzzy code. Please let me know if it compiles on other platforms. 2013-11-25 11:55:48 +00:00
DjWarmonger
54c52869cf - Fixed some more cases when heroes could block each other
- More generous checking of complete goals and their dependencies
2013-11-24 19:15:08 +00:00
DjWarmonger
b0bdfff117 Compile fixes, refactoring 2013-11-24 15:30:17 +00:00
Ivan Savenko
27a30b5ff9 - compile fix
- fixed crash if json defines only one creature horde
2013-11-24 11:36:51 +00:00
DjWarmonger
74a1d09871 Fixed new issue with hero trying to visit himself. 2013-11-24 08:56:02 +00:00
DjWarmonger
cedb3ea82a Some more logging for goal completion.
Stub of fuzzy goal selection.
2013-11-24 08:21:51 +00:00
DjWarmonger
0ab7b498f5 VCAI is now functional again!
Implemented Visitor pattern for double-dispatch (actually only goal type dispatch).
2013-11-23 18:16:25 +00:00
DjWarmonger
e6bb39d3a4 More work on VCAI Goals, still derived functions are not called :/ 2013-11-23 12:30:10 +00:00
beegee1
3e4407593f - Refactoring for checking victory/loss conditions (use enum class instead of magic numbers)
- Improved showing player lost message for one special case
2013-11-17 17:57:04 +00:00
beegee1
39d3102905 - Fixed compilation errors on clang
- Removed compiler warnings of unused variables
2013-11-16 09:17:19 +00:00
DjWarmonger
900d7a03f0 Template magic. Implemented method chaining + clone pattern for Goals. 2013-11-15 17:30:16 +00:00
Ivan Savenko
3560bbb7f3 two patches/pull requests from janisozaur
- replace our custom bmap with std::map::at()
- compile fixes for editor
2013-11-12 10:45:42 +00:00
DjWarmonger
1657f124e1 - Compile fixes for MVS
- AI goals will now be handled by smart pointers
2013-11-09 21:29:46 +00:00
Ivan Savenko
55577d0ac4 - fixed missing DLL_LINKAGE
- use precalculated checksum for zip files
- UNUSED macro to silence some warnings
2013-11-09 13:49:36 +00:00
Ivan Savenko
ee6cdbeffe went through the rest of cppcheck warnings, mostly harmless 2013-11-07 12:48:41 +00:00
Ivan Savenko
0e3eae3095 patch from KroArtem 2013-11-03 12:51:25 +00:00
Ivan Savenko
c4716d0a9a - reordered files in cmake so files with long compile times will be
compiled first.
- changed format of modSettings.json, VCMI should properly update file
on the first run.
- implemented property "defaultTavern" that acts as default value for
"tavern" entry in hero class and town formats.
2013-11-03 12:07:23 +00:00
Ivan Savenko
012212698e compile fixes, cmake files update 2013-10-20 13:51:05 +00:00
DjWarmonger
c77fa499e7 Some more. 2013-10-19 11:37:22 +00:00
DjWarmonger
7b4964b882 Constructors for Goals. 2013-10-19 06:16:21 +00:00
DjWarmonger
f0248dd245 More AI refactoring. 2013-10-19 05:52:30 +00:00
DjWarmonger
9950bc6ec3 First part of AI refactoring. Trying to split AI into three distinct parts:
- Core with callback handling and processing
- Logic (goal decomposition)
- Utility and helper functions based on simple mechanics

Also, Goals will now be organized in object-oriented fashion.
2013-10-18 20:17:25 +00:00
Michał W. Urbańczyk
0e8fa04d9f Fixed #1487. 2013-10-13 15:24:02 +00:00
Michał W. Urbańczyk
149ff4df14 Fixed tiny but terrible mistake from two commits ago. 2013-09-29 21:15:02 +00:00
Michał W. Urbańczyk
5c6d12400f Fixed AI detection of battle end (solves some freezes). 2013-09-29 20:54:29 +00:00
Michał W. Urbańczyk
30a0237fb8 Merged the 092c-compat branch. 2013-09-28 12:31:06 +00:00
Michał W. Urbańczyk
c6c53a5b1e Few more freeze-related fixes. 2013-09-28 00:30:12 +00:00
Michał W. Urbańczyk
d1807585ad Fixed at least two #1428 freezes, likely more.
They were occurring when AI hero visited bank that was also guarded by neutral creature nearby,
2013-09-27 23:46:58 +00:00
Michał W. Urbańczyk
0a0048fdf4 Updated EmptyAI project to follow the conventions. 2013-09-27 23:41:15 +00:00
Michał W. Urbańczyk
b62bb096a7 Fixed #1430, work-around to make #1435 non-crashing.
Fixed at least one of the #1428 infinite turns cases.
2013-09-11 21:57:08 +00:00
Michał W. Urbańczyk
dd72261193 Fixed #1437. 2013-09-05 22:11:13 +00:00
Michał W. Urbańczyk
92246a2c17 * Fixed #1417 — infinite loop of AI trying to visit allied creture generator
* Fixed #1401 — battle AI won't attempt attacks with First Aid Tent
2013-08-25 13:03:29 +00:00
Ivan Savenko
5654fef901 - ZipArchive namespace for operations with zip archives, located in CZipLoader.h/cpp.
- new fields in mod format, for use with mod manager (check config/shemas/mod.json for details)
- removed some 0.92 compatibility from mods loading
- several compile fixes
2013-08-19 11:50:53 +00:00
Michał W. Urbańczyk
3b42cff3ec #1409 should not crash anymore.
Fixed crash on serializing empty path. [How did it got there...?]
operator<< for boost::optional.
2013-08-18 15:46:28 +00:00
DjWarmonger
b36be10e30 2013-07-25 11:53:36 +00:00
Michał W. Urbańczyk
e9d51a2670 Fixed issue that allowed to build multiple boats in town. Renamed state() to sth more sensible. 2013-07-21 10:08:32 +00:00
Michał W. Urbańczyk
a1f545792b Compile fixes specific for VS 2012"
* Reverted std::bind to boost::bind. std::bind on Visual 2012 doesn't work in some cases (especially with std::ref), not sure why [but it seems to be a bug, since 2013 preview compiles the same code fine]. 
 * Move assignment operator for VS 2012.
2013-07-02 15:23:32 +00:00
Michał W. Urbańczyk
7a8e401860 Ignore the cmath-fix block on non-vs compilers. 2013-07-02 15:19:54 +00:00
Michał W. Urbańczyk
4576719abe Visual Studio 2013 Preview compile fixes:
* 0 is not convertible to std::function, nullptr should be used
* std::ref(rand) is not convertible to function<int()>, used lambdas (why we dont just pass "rand" ? )
* CFunctionList needs to be constructible from nullptr
* move constructor for CMapInfo (Visual cannot generate them :( )
* #ifdefed some stuff that is not needed anymore since cmath is updated with C99 stuff
* using std::make_unique instead of our vstd implementation

CSelector: 
* introduced a class in place of typedef
* Having an overloaded && || operators over sth that is convertible to bool… Wasn't a good idea after all. Purged the operators, replaced  with And/Or methods (chaining-style).
* constructor that is present only when constructing from class or function (SFINAE). std::function has an implicit converting constructor from T causing ambiguities (even if the overload would cause compile error in the body)
2013-07-02 12:08:30 +00:00
Ivan Savenko
f82122d9be second part of c++11 update. gcc 4.5 and VS 2010 are no longer supported
- BOOST_FOREACH -> for
- replaced several boost classes with std (e.g. unordered)
- removed gcc-4.5 workarounds
- ran clang c++11 migration tool to detect some cases:
- - pointer initialized with "0" to nullptr
- - replace for with iterators with range-based for
- - use auto in some situations (type name specified twice, avoid long iterators type names)
2013-06-29 13:05:48 +00:00
Ivan Savenko
2b45e13c5c c++03 -> c++11 switch:
- use std versions of function, bind and ref
- OVERRIDE -> override
- NULL -> nullptr
- use std versions of random distributions

NOTE: this may be last revision that supports gcc-4.5
2013-06-26 11:18:27 +00:00