Ivan Savenko
a4dd510735
Merge pull request #4358 from IvanSavenko/integer_divide
...
Add helper functions for integer division rounding
2024-08-06 18:10:03 +03:00
Ivan Savenko
3b6ff46d2b
Merge pull request #4360 from IvanSavenko/terminate_handler
...
Enabled terminate handler and call stack writing on all platforms
2024-08-06 18:09:51 +03:00
Laserlicht
758617e2df
order
2024-08-06 09:39:16 +02:00
Laserlicht
0c3778feda
id
2024-08-06 09:35:06 +02:00
Laserlicht
abd1a1940a
fix recruitment & icons
2024-08-06 01:02:38 +02:00
Laserlicht
ebeeff5aa3
abstraction layer
2024-08-05 23:51:07 +02:00
Laserlicht
3afddbbf29
replaced constant
2024-08-05 23:03:19 +02:00
Laserlicht
1a06a2cc44
basic 8th creature support
2024-08-05 21:15:47 +02:00
kdmcser
87eb026184
support 0 spellpower and knowledge
2024-08-06 01:26:39 +08:00
Ivan Savenko
b7391f49f6
Merge branch 'vcmi/master' into 'vcmi/develop'
2024-08-05 10:36:10 +00:00
Laserlicht
47327e1642
backend
2024-08-04 17:52:40 +02:00
Laserlicht
072af5bd6d
basic support for bank
2024-08-04 15:44:57 +02:00
Laserlicht
611d5daa0f
fix missing code + movement points used
2024-08-03 20:47:20 +02:00
Laserlicht
eca04cbc54
added 5 values
2024-08-03 19:53:05 +02:00
Laserlicht
de128eb471
add dwellings & expirience
2024-08-03 18:48:45 +02:00
Laserlicht
9d64059496
code review
2024-08-03 17:55:43 +02:00
Laserlicht
f0c0beb9e0
date according to iso8601
2024-08-03 16:39:46 +02:00
Ivan Savenko
81e6207df0
Add helper functions for integer division rounding
...
Added set of functions that perform integer division with different
rounding modes:
- divideAndCeil - rounds up to next integer
- divideAndRound - rounds to nearest integer
- divideAndFloor - rounds to previous integer (equivalent to default
division)
Intended for use in library, where usage of floating point might lead to
desync in multiplayer games.
Replaced some cases that I knew of, including recent handicap PR
2024-08-03 13:52:14 +00:00
Andrii Danylchenko
3d856bfa9d
Merge remote-tracking branch 'origin/develop' into battle-ai-fixes
2024-08-03 12:54:25 +03:00
Laserlicht
58bfd27aad
add some stats
2024-08-02 20:40:24 +02:00
Laserlicht
b3b7729a6c
fix
2024-08-02 20:06:30 +02:00
Ivan Savenko
13b2008f79
Enabled terminate handler and call stack writing on all platforms
...
Attempt to get a bit more debug info from crashes. VCMI will now:
- use c++ terminate handler on any platform in release builds
- attempt to write call stack to log file using boost::callstack
Since I use std::set_terminate this will only affect c++ exceptions, e.g.
std::runtime_error and will not affect OS signals, e.g. SIGSEGV. Handling
signals is OS-specific and has a lot of limitations that I don't want to
investigate. Besides - most of our crashes are now caused by c++
exceptions.
Haven't tested on other platforms, but should at the very least write
exception information (`e.what()`) for all exceptions and function names
for methods exported from dll's (libvcmi.so & AI's). Possibly more, if
debug information is present.
2024-08-02 17:59:56 +00:00
Laserlicht
80dd97364a
add additional statistic
2024-08-02 19:38:33 +02:00
Laserlicht
9ceb1c567d
highscore refactoring
2024-08-02 19:37:46 +02:00
Ivan Savenko
5023e08ae8
Fix crash on testing for hero faction before deserializing hero type
2024-08-02 16:00:17 +00:00
Ivan Savenko
13108849ca
Try to fix crash on transferring component of a composite artifact
2024-08-02 16:00:17 +00:00
Ivan Savenko
0ac1ef077d
Workaround for hota witch hut preview
2024-08-02 16:00:07 +00:00
Ivan Savenko
8ce6bcdf3b
Right-clicking dwellings will now show recruitable creatures (but not
...
their number) for all players
2024-08-02 15:03:25 +00:00
Laserlicht
86477c7b04
refactoring + values added
2024-08-02 01:18:39 +02:00
Laserlicht
33b2633775
refectoring: remove statsHLP
2024-08-02 00:04:41 +02:00
Laserlicht
f695f7038e
cleanup
2024-08-01 23:56:06 +02:00
Laserlicht
06209d2556
Merge branch 'develop' into statistic
2024-08-01 23:37:45 +02:00
Laserlicht
2979bf1976
visitedRatio
2024-08-01 23:21:41 +02:00
Laserlicht
380d5bb05b
refactoring & expanding
2024-08-01 22:36:32 +02:00
Laserlicht
4f0c3a3608
Merge branch 'develop' into handicap
2024-08-01 21:39:40 +02:00
Laserlicht
490f1bfee6
rework
2024-08-01 21:36:00 +02:00
Laserlicht
fb171ab3a2
statisic basic
2024-08-01 21:36:00 +02:00
Ivan Savenko
88eff2609b
Merge pull request #4332 from Laserlicht/campaign_highscores
...
fix campaign highscores
2024-08-01 21:16:50 +03:00
Tomasz Zieliński
4413f03276
Cleanup
2024-07-30 08:50:33 +02:00
Tomasz Zieliński
a7fa3c7d8b
Ignore new connections for zone placement.
2024-07-30 05:07:05 +02:00
Laserlicht
f7376b8fd3
Merge branch 'vcmi:develop' into handicap
2024-07-29 23:10:20 +02:00
Laserlicht
48173ebfbf
fix uninitialized var
2024-07-29 23:05:55 +02:00
Laserlicht
3e5df61946
code review
2024-07-29 22:54:42 +02:00
Tomasz Zieliński
d10711928f
Allow connecting zone to itself (always through the portal)
2024-07-29 21:56:07 +02:00
Laserlicht
939dd62491
change variable name
2024-07-29 20:43:41 +02:00
Tomasz Zieliński
f4f416eb16
Add RMG option "forcePortal"
2024-07-29 20:36:23 +02:00
Ivan Savenko
48c92711f2
Fixed deserialization of new artifacts (and possibly some other objects)
...
Was broken in my previous PR, since pointer graph serialization was
enabled by default, leading to deserializationFix triggering on netpack
apply.
Cleaned up / clarified code
2024-07-29 18:19:15 +00:00
Ivan Savenko
15f37f8c4b
Fix possible crash on invalid SPELL_LIKE_ATTACK ability
2024-07-29 17:13:31 +00:00
Ivan Savenko
434a2fb0fb
Explicitly specify to use ranged or melee attack for damage estimation
2024-07-29 17:13:31 +00:00
Ivan Savenko
74fea5109b
Show non-learnable spells from rewardable object as greyed-out
2024-07-29 17:13:31 +00:00
Ivan Savenko
f9348fc84a
Do not hide spells from reward if hero can't learn them
2024-07-29 17:13:31 +00:00
Ivan Savenko
b6c22b2053
Fix typo
2024-07-29 17:13:31 +00:00
godric3
fa3fef8a0f
change town events to vector + use getDefaultAllowed for spells
2024-07-28 16:28:21 +02:00
godric3
5578346dac
map editor: Allow to customize town events
2024-07-28 16:28:21 +02:00
godric3
7aca2efb35
map editor: Allow to customize town spells
2024-07-28 16:28:21 +02:00
Andrii Danylchenko
9edb0afff8
BattleAI: fix dragonbreath retaliation
2024-07-28 14:41:32 +03:00
Ivan Savenko
6ac3752325
Merge pull request #4330 from Laserlicht/spellbook
...
check spellbook
2024-07-27 19:34:50 +03:00
Laserlicht
53c0d20a57
fix campaign highscores
2024-07-26 20:36:52 +02:00
Laserlicht
e46f5f705b
better approach
2024-07-26 20:34:47 +02:00
Ivan Savenko
ec63f3eeac
Merge pull request #4314 from IvanSavenko/tower_target_selection
...
Implemented simple target selection logic for arrow towers
2024-07-26 14:22:13 +03:00
Laserlicht
2e2d8f8833
fix
2024-07-26 02:24:53 +02:00
Laserlicht
977d8e041a
generate at least one resource / creature
2024-07-26 00:55:47 +02:00
Laserlicht
ec005593d3
growth handicap
2024-07-25 23:04:59 +02:00
Laserlicht
bfd1e8a7c8
calculate income
2024-07-25 02:51:00 +02:00
Laserlicht
268e0c8c44
change data structure
2024-07-25 00:28:49 +02:00
Laserlicht
832e1531fc
handycap percent
2024-07-25 00:28:49 +02:00
Laserlicht
af2b6a0051
show handicap resources
2024-07-25 00:28:49 +02:00
Laserlicht
8edf77afcc
basic handicap support
2024-07-25 00:28:01 +02:00
Andrii Danylchenko
dbcd7677ac
Merge pull request #4313 from vcmi/nkai-whirlpool
...
NKAI: whirlpool
2024-07-24 00:03:11 +03:00
Andrii Danylchenko
33e0eeaa8a
BattleAI: fix dragon breath
2024-07-22 20:39:32 +03:00
Ivan Savenko
37cf788079
Merge pull request #4317 from IvanSavenko/split_townhandler
...
Split CTownHandler into smaller chunks
2024-07-22 17:42:48 +03:00
Ivan Savenko
e8aa6efbb9
Merge pull request #4261 from kaja47/shrinkage
...
Reduce size of Bonus struct from 320 bytes to 296 bytes.
2024-07-22 17:12:08 +03:00
K
c1e6bbddfe
Reduce size of Bonus struct from 320 bytes to 296 bytes.
...
- Internal enums were resized to occupy single byte.
- Duration bitmask uses 16 bit integer directly instead of std::bitset<11> which consumed 8 bytes.
- Fields shuffled to minimise padding and keep the most useful data on first 2 cache lines.
2024-07-22 14:59:31 +02:00
Ivan Savenko
4aa73b40c9
Split CTownHandler into smaller chunks
2024-07-21 18:21:48 +00:00
Andrii Danylchenko
683c363946
NKAI: whirlpool
2024-07-21 17:20:54 +03:00
Ivan Savenko
5bd9a32d97
Implemented simple target selection logic for arrow towers
2024-07-21 13:16:33 +00:00
Ivan Savenko
550540f8ab
Merge pull request #4316 from IvanSavenko/crashfixes
...
Crashfixes
2024-07-21 16:15:28 +03:00
Ivan Savenko
31738e8f90
Always track already serialized pointers to avoid infinite recursion on
...
sending complex objects
2024-07-20 18:29:41 +00:00
Ivan Savenko
1aa391fdf8
Split CGeneralTextHandler file into 1 file per class form
...
All text processing code is now located in lib/texts.
No changes other than code being moved around and adjustment of includes
Moved without changes:
Languages.h -> texts/Languages.h
MetaString.* -> texts/MetaString.*
TextOperations.* -> texts/TextOperations.*
Split into parts:
CGeneralTextHandler.* -> texts/CGeneralTextHandler.*
-> texts/CLegacyConfigParser.*
-> texts/TextLocalizationContainer.*
-> texts/TextIdentifier.h
2024-07-20 12:55:17 +00:00
Ivan Savenko
2d3734656d
Fix test
2024-07-19 12:17:06 +00:00
Ivan Savenko
2020d96070
Merge pull request #4071 from IvanSavenko/fix_rng_syncronization
...
[1.6] Fix potential desync if client uses different stdlib with different random number generators
2024-07-19 13:08:09 +03:00
Ivan Savenko
d02251f6a8
Merge pull request #4263 from Alexander-Wilms/json-error
...
JsonParser::parse(): Print file name if there were errors while parsing
2024-07-18 21:28:44 +03:00
Ivan Savenko
d55c4e3973
Merge pull request #4275 from IvanSavenko/music_modding
...
Additional options for music modding
2024-07-18 21:28:04 +03:00
Ivan Savenko
662254155a
Merge branch 'vcmi/master' into 'vcmi/develop'
2024-07-17 13:57:36 +00:00
Alexander Wilms
b605dea6db
JsonNode::JsonNode(): Also use reference for fileName argument in method definition
2024-07-17 14:37:58 +02:00
Alexander Wilms
c484244ba0
JsonNode::JsonNode(): Use reference for fileName argument
...
Co-authored-by: Ivan Savenko <saven.ivan@gmail.com>
2024-07-17 14:01:13 +02:00
Alexander Wilms
434371195d
JsonNode constructors: Take fileName as argument
...
* Don't print JSON in JsonParser::parse() in case of errors
2024-07-17 13:50:59 +02:00
Alexander Wilms
1ca8e9b3ae
JsonParser::parse(): Print JSON if there were errors while parsing
...
In cases where the file name was not specified, the warning messages were not very useful.
Example:
```json
File <unknown> is not a valid JSON file!
At line 33, position 1 warning: Comma expected!
{
"name" : "New Old Heroes",
"description" : "New heroes based on old 3DO artwork and other game appearances. Requires Horn of the Abyss.",
"modType" : "Heroes",
"version" : "1.2.0",
"author" : "Aphra",
"contact" : "",
"heroes" :
[
"config/gwenneth.json",
"config/balindar.json",
"config/nicolas.json",
"config/kastore.json",
"config/kydoimos.json",
"config/athe.json",
"config/miseria.json",
"config/areshrak.json",
"config/pactal.json",
"config/zog.json"
],
"changelog" :
{
"1.0.0" : ["Initial release"],
"1.1.0" : ["Added Nicolas Gryphonheart and Kastore"],
"1.1.1" : ["Bug fixes"],
"1.2.0" : ["Added some HotA portrait-only campaign heroes"]
},
"depends" :
[ "hota.neutralCreatures" ]
"keepDisabled" : true
}
```
2024-07-17 13:17:43 +02:00
Ivan Savenko
1072356002
Merge pull request #4268 from IvanSavenko/pathnode_reduce
...
Reduce size of CGPathNode and AIPathNode
2024-07-17 13:08:05 +03:00
Ivan Savenko
34b6eaa25e
Integrating changes from PR #4251 - add logging for rng
2024-07-16 15:31:58 +00:00
Andrii Danylchenko
d243a2fc12
Merge pull request #4259 from vcmi/fix-4203
...
BattleAI: fix moving to unreachable in case of back-to-back 2-hex
2024-07-16 16:41:50 +03:00
Ivan Savenko
1c63fefe02
Moved banks randomization to server-side with client netpack
2024-07-16 13:13:39 +00:00
Ivan Savenko
b07408e984
New objects are now created and initialized on server and sent to client
2024-07-16 13:13:39 +00:00
Ivan Savenko
d2839c8e52
Rewardable object randomization is now always server-sided
2024-07-16 13:13:39 +00:00
Ivan Savenko
388d65d6b2
Fix merge
2024-07-16 13:13:39 +00:00
Ivan Savenko
c4b8778e8b
Remove unused code
2024-07-16 13:13:39 +00:00
Ivan Savenko
5178e4842e
Moved generation of new rumors to server
2024-07-16 13:13:39 +00:00
Ivan Savenko
55bf75c43e
Remove no longer used random seeds from StartInfo
2024-07-16 13:13:39 +00:00
Ivan Savenko
0d66ddbeec
GameState now uses random generator from server. Blocked access to rmg
...
on client
2024-07-16 13:13:38 +00:00
Ivan Savenko
63bcf7d83c
Replaced most of usages of CRandomGenerator with vstd::RNG in library
2024-07-16 13:13:07 +00:00
Ivan Savenko
60a51e98de
Remove usage of std::function from CRandomGenerator
2024-07-16 13:13:07 +00:00
Ivan Savenko
30569a112c
Fix crash on attempt to transfer component of a combined artifact
2024-07-16 13:08:15 +00:00
Ivan Savenko
ad9750ed3e
Merge pull request #4186 from SoundSSGood/end-of-battle-artifacts-transfer
...
End of battle artifacts transfer
2024-07-16 12:45:13 +03:00
Ivan Savenko
696cce7f7f
Merge pull request #4253 from smanolloff/random-port
...
Bind VCMI server to a random TCP port
2024-07-16 12:25:29 +03:00
Ivan Savenko
fd04320815
Merge pull request #4267 from IvanSavenko/sonar_fix
...
Fixed new issues detected by SonarCloud
2024-07-16 12:23:08 +03:00
Ivan Savenko
8e8d640923
Merge pull request #4276 from Alexander-Wilms/jsonparser-err-newline
...
JsonParser::error(): Don't add trailing newline
2024-07-16 12:21:23 +03:00
Ivan Savenko
3134d8383c
Merge pull request #4207 from Laserlicht/map_format_additional
...
[1.6] Map format additional infos
2024-07-16 12:15:58 +03:00
Alexander Wilms
f22a3d6168
JsonParser::error(): Use empty()
...
Co-authored-by: Andrey Filipenkov <kambaladecapitator@gmail.com>
2024-07-16 10:30:00 +02:00
Alexander Wilms
466318b77b
JsonParser::error(): Don't add trailing newline
2024-07-15 23:58:56 +02:00
Ivan Savenko
d59744f26f
It is now possible to define multiple music themes for terrains
2024-07-15 21:46:41 +00:00
Ivan Savenko
9c5d5d7c5a
It is now possible to define custom battle opening sound and custom music
...
for a battlefield
2024-07-15 21:46:23 +00:00
Ivan Savenko
358008fca9
It is now possible to define multiple town themes
2024-07-15 21:45:51 +00:00
Ivan Savenko
04a81fee87
Reduce size of CGPathNode and AIPathNode
2024-07-15 07:49:04 +00:00
Ivan Savenko
c00a1e1b0c
Fixed new issues detected by SonarCloud
2024-07-15 07:46:40 +00:00
Dydzio
3836f132d3
Fix alternative actions to support more than 2 actions + simplify logic
2024-07-15 00:41:05 +02:00
Andrii Danylchenko
a4b6fc75dd
BattleAI: fix moving to unreachable in case of back-to-back 2-hex
2024-07-14 11:46:45 +03:00
Andrii Danylchenko
6f5710e809
Merge pull request #4110 from vcmi/rewardables
...
NKAI: rewardables
2024-07-14 09:02:37 +03:00
Simeon Manolov
5b6bc10131
Code review
2024-07-12 14:54:28 +03:00
Ivan Savenko
74723bf77e
Merge pull request #4254 from smanolloff/fix-battle-queue
...
Fix battle turn order for current turn
2024-07-12 14:45:15 +03:00
Simeon Manolov
941cd6768f
Fix battle turn order for current turn
2024-07-12 11:39:57 +03:00
Simeon Manolov
9d73b50979
Bind server to a randomly assigned port
2024-07-12 01:06:36 +03:00
Ivan Savenko
6b8f94e6e7
Merge remote-tracking branch 'vcmi/master' into develop
2024-07-11 17:43:44 +00:00
Ivan Savenko
fd297f08e2
Add quick workaround for loading identifiers from difficulty bonuses
2024-07-10 22:33:09 +00:00
Ivan Savenko
dbc227da04
Fix incorrect tooltip when right-clicking Witch Hut if selected hero
...
already has this skill
2024-07-10 14:36:24 +00:00
Ivan Savenko
22870c4764
Fix potential crash on right-clicking object that gives secondary skills
...
such as Witch Hut when town is selected
2024-07-10 14:36:24 +00:00
Ivan Savenko
e42285c2f1
Merge pull request #4240 from IvanSavenko/bugfixing
...
[1.5.4] Bugfixing
2024-07-09 14:32:24 +03:00
SoundSSGood
b42c6dbf44
fixed regressions
2024-07-09 14:27:05 +03:00
SoundSSGood
ef1fbffad4
ArtifactsUIController class
2024-07-09 14:27:05 +03:00
SoundSSGood
6dd76908bc
MoveArtifact struct not used now
2024-07-09 14:27:04 +03:00
SoundSSGood
5dbe88d9a4
End of battle BulkMoveArtifacts
2024-07-09 14:27:04 +03:00
Tomasz Zieliński
bfa93be765
Limit predicted damage / loses to actual stack health
2024-07-09 06:39:41 +02:00
Ivan Savenko
a19b3b61ad
Fixed missing addInfo when owner updater is used
2024-07-08 20:57:14 +00:00
Ivan Savenko
c64e7ee14c
Fix possible crash on Faerie Dragon killing themselves with Frost Ring
2024-07-08 20:56:43 +00:00
Andrii Danylchenko
1be36e1ad4
NKAI: rewardables
2024-07-07 21:58:39 +03:00
K
d3c198678c
reorder fields to shrink struct TerrainTile from 96 to 80 bytes
...
When I was playing a very large map, computer's turn took up to 2 minutes and that give me time to fire up perf and profile the code while waiting.
I noticed that 1.7% of time was spent in function CPathfinderHelper::getNeighbors and half of that on a single load from an array backing multi_array of TerrainTiles. That signals the CMap::terrain is too big to fit in CPU caches.
This patch reorders fields in TerrainTile struct, shrinking it from 96 bytes to 80 bytes and hopefully helping to keep more tiles in the cache and speeding things up a little bit.
2024-07-07 12:53:29 +00:00
Ivan Savenko
11a3da3f4f
Merge pull request #4220 from IvanSavenko/ai_optimize
...
[1.5.4] AI optimizations
2024-07-05 15:45:49 +03:00
Ivan Savenko
ad972eb7e2
Optimize BonusList::totalValue
2024-07-04 19:55:09 +00:00
Tomasz Zieliński
5b99974d31
Route roads even further away from zone boundary
2024-07-04 14:22:22 +02:00
Ivan Savenko
41ed7e2e10
Added TODO's for potential optimizations that I've discovered
2024-07-04 07:59:50 +00:00
Ivan Savenko
b0ff97675e
Remove mutex from access to constant value
2024-07-03 21:16:25 +00:00
Ivan Savenko
1468abb8a0
Remove excessive copies of large objects
2024-07-03 21:14:22 +00:00
Ivan Savenko
40f17d654d
Use containers with pre-allocations to improve pathfinding speed
2024-07-03 18:06:56 +00:00
Ivan Savenko
005c8e9e4d
Merge pull request #4197 from IvanSavenko/json_bonus_validation
...
Better validation of bonus json
2024-07-03 13:28:38 +03:00
Laserlicht
018127b236
set values for map editor and rmg
2024-06-29 14:01:25 +02:00
Laserlicht
02bd52041b
extend map format
2024-06-29 13:13:59 +02:00
Ivan Savenko
235fa871dd
Better validation of bonus json
...
- Json validator will now list all possible enum values on enum
validation failure
- Added validation of bonus string values using json valudation
- Deprecated bonus values (e.g. UNITL_BEING_ATTACKED) are now reported
via json validation
- Removed array version of "propagator" key since code only loads it as
a single string
2024-06-27 10:54:23 +00:00
Ivan Savenko
77e827c51e
Fix leveling up secondary skills via Scholar (map object) visit
2024-06-27 09:58:53 +00:00
Ivan Savenko
5bc103f50e
Show message to player instead of crashing silently on extraction error
2024-06-27 09:58:53 +00:00
Alexander Wilms
31e1d39f92
Fix issues introduced by fixing typos
2024-06-27 08:38:04 +00:00
Tomasz Zieliński
d7a4ea9f32
Draw random artifact as an atomic operation
2024-06-24 20:06:50 +02:00