1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-01-20 03:29:32 +02:00

3100 Commits

Author SHA1 Message Date
Dydzio
563a5d53c0 Update secondary skill handling. Fix issue 2307
Also making secondary skill icon display behavior same as in H3 during popup message.
2016-09-19 20:05:57 +02:00
Dydzio
8b0c62e10e Block surrender via escape tunnel. Fix issue 2389 2016-09-18 22:05:05 +02:00
Arseniy Shestakov
635c48f889 CGHeroInstance::setType: fix to give proper subID to random heroes
Hero class id is used to determine hero object appearance, but after than we use subID to store it's unique id.
This change should fix issues 2127 and 2277 since random heroes not going to override others in heroesPool.
2016-09-18 10:01:09 +03:00
Arseniy Shestakov
f6df107a55 Replace more magic subIDs with readable enums 2016-09-18 00:53:37 +03:00
Dydzio
beae354536 Correcting random amount of gold in gold piles
In original H3 allowed amounts of gold in treasure piles are multipliers of 100. Before this fix gold amount can be any value from range 500-1000.
2016-09-17 23:22:13 +02:00
Arseniy Shestakov
84137dcaa5 Add DLL_LINKAGE to getStr and fix player id logging in VCAI 2016-09-16 05:45:00 +03:00
Arseniy Shestakov
c8090c78ec CGameState::updateRumor: fix infinite loop with only one map rumor 2016-09-15 23:22:25 +03:00
Arseniy Shestakov
fdca75b4b0 PlayerColor: add getStr and getStrCap functions with optional L10n 2016-09-15 18:22:54 +03:00
ArseniyShestakov
b5fa97b697 Merge pull request #211 from Chocimier/iss2321
Tested. Everthing looks fine so merging.
2016-09-14 00:37:17 +03:00
Piotr Wójcik
c5e4eaf9c1 Check if hero knows spell even without wisdom 2016-09-13 22:28:21 +02:00
Arseniy Shestakov
1e60ba6516 Only delete CQuest in CMap destructor and not with IQuestObject
Quest information must remain accessible even if map object removed. Fix issue 2472
2016-09-13 01:30:47 +03:00
Piotr Wójcik
e1a1bc89c0 Extract PossibilityVisitor 2016-09-12 22:28:11 +02:00
ArseniyShestakov
2543e068ac Merge pull request #209 from vcmi/fix/saveDesyncs
Think I tested it enough to merge it
2016-09-11 21:36:42 +03:00
AlexVinS
49e2bde3c0 Mostly complete fix for http://bugs.vcmi.eu/view.php?id=2429 2016-09-11 16:02:45 +03:00
Arseniy Shestakov
fe6c0cf89b Use RandomGeneratorUtil::randomShuffle for reproducible gameplay 2016-09-11 00:10:52 +03:00
Arseniy Shestakov
c8faca8f39 Refactoring: only use RNGs explicitly to avoid bug prone code in future
Now server-side code should always use CRandomGenerator::getDefault which is serialized in GH.
CGameState::getRandomGenerator should be only used from GS code and CPackForClient-based applyGs.
2016-09-11 00:10:46 +03:00
Piotr Wójcik
40003460ca Check if building's dependencies are allowed 2016-09-10 19:38:49 +02:00
Arseniy Shestakov
70abae9b51 CGameState::battleGetBattlefieldType: use RNG by ref
For now I not sure about proper place for battleGetBattlefieldType so I left it in GS
2016-09-09 23:16:43 +03:00
Arseniy Shestakov
ea63497b19 Move CGameState::setupBattle code to CGameHandler::setupBattle
No reason to keep this code in GS.
2016-09-09 23:16:43 +03:00
Arseniy Shestakov
53502e84e3 Add PrepareHeroLevelUp netpack to keep secondary skills RNG in sync 2016-09-09 23:16:43 +03:00
Arseniy Shestakov
ca819b3cda CGHeroInstance::nextPrimarySkill: don't use GS RNG directly
Code used from both GS and CGameHandler.
2016-09-09 23:16:42 +03:00
Arseniy Shestakov
c8bcb14d34 CCallbackBase: add CRandomGenerator to all callbacks
This is easiest way to make server RNG available to CBattleInfoCallback.

Now server, client and gamestate have own RNG instance.
Only server and gamestate RNGs are serialized.
2016-09-09 23:16:42 +03:00
Arseniy Shestakov
85f49bc968 CGHeroInstance::initArmy: don't use GS RNG. Get RNG through a ref
This function used by both server-side and gamestate so it's must use appropriate random source.
2016-09-09 23:16:42 +03:00
Arseniy Shestakov
2ba3b20928 Multiple changes to RNG usage to both client and server
Server should never use RNG from CGameState directly.
Instead server get's own RNG that's state is secret for client.
2016-09-09 23:16:42 +03:00
Arseniy Shestakov
960d93ff5f CGameState: don't use RNG directly for easier desync debugging
Only access random generator via CGameState::getRandomGenerator
2016-09-09 23:16:42 +03:00
Arseniy Shestakov
9296382bc6 More fixes for clang warning... 2016-09-08 19:58:01 +03:00
Arseniy Shestakov
02f70464fb Fix mismatched-tags Clang warnings
They're not important at all, but sicne there only few of them left just fix them.
2016-09-08 19:42:59 +03:00
Arseniy Shestakov
d06d07a39b Add ChangeFormation netpack to avoid MP desyncs
Previous code was working fine for single client, but would cause desync in multiplayer. Fix issue 2460.
2016-09-08 19:29:15 +03:00
AlexVinS
a109580b91 Use const for ObjectTemplate 2016-09-08 18:06:28 +03:00
AlexVinS
114dac7e81 Added ObjectTemplate copy constructor and assignment operator 2016-09-08 17:02:59 +03:00
AlexVinS
42e7128acc Fixed possible use-after-free crash with artifacts registration in RMG. 2016-09-08 14:48:48 +03:00
AlexVinS
6dc47a2de0 Fixed use-after-free crash with quests registration in RMG.
* code taken from PR #200
2016-09-08 14:48:46 +03:00
AlexVinS
22f729a3fe CPlayerState serialize fix. 2016-09-04 13:43:09 +03:00
ArseniyShestakov
f4f170bf92 Merge pull request #202 from vcmi/noncopyableBonusSystemNode2
Didn't manage to find any crashes in newly created games. Merging.

Keep in mind that even if most of old saves will load properly some of them still corrupted beyond repair and after some turns they might eventually crash.
2016-09-04 11:06:05 +03:00
ArseniyShestakov
5fc1fd4daf Merge pull request #206 from Chocimier/fixes
genBuildingRequirements is tricky one, but in tests it's seems everything is okay
2016-09-04 09:02:34 +03:00
AlexVinS
437eadf1ed do not leak scenarioOpts in CMapInfo 2016-08-31 06:18:01 +03:00
Piotr Wójcik
044e2b9e51 Properly calculate building requirements
In OH3 you can't build Capitol when Tavern is not builded.
In VCMI up to now you could.
2016-08-30 22:15:24 +02:00
Piotr Wójcik
326be61ecb Show atrifact's name in message of Warrior's tomb 2016-08-30 20:50:03 +02:00
Piotr Wójcik
52797082aa Do not show whether Shrine is visited by hero, if was not visited by player yet 2016-08-30 20:48:03 +02:00
AlexVinS
cf1d5d0bc9 tweaks 2016-08-30 11:45:05 +03:00
AlexVinS
a50a32405d Use weak_ptr for TypeDescriptor cross-links. Fixed total TypeDescriptor memory leak. 2016-08-30 09:48:12 +03:00
AlexVinS
c6d257f328 Fixed CQuest leak 2016-08-30 09:48:10 +03:00
DjWarmonger
6791350975 Compile fix (operator = is ambiguous). 2016-08-30 07:50:38 +02:00
AlexVinS
ef05a56e49 cleanup 2016-08-30 05:13:45 +03:00
Arseniy Shestakov
668cd83ee5 More work on static variable desyncs 2016-08-29 23:07:52 +03:00
Alexander Shishkin
5e5ce0bb09 Merge pull request #203 from vcmi/logFormat
boost::format support for CLogger
2016-08-29 17:32:44 +04:00
Arseniy Shestakov
452e28d183 Remove some useless includes found by cppclean
This of course was tested and shouldn't break anything
2016-08-26 04:42:16 +03:00
Arseniy Shestakov
94bb5b9901 CGKeys::wasMyColorVisited: fix to not change playerKeyMap on client 2016-08-25 16:47:52 +03:00
Arseniy Shestakov
a90b657b86 Add reset to some static variables on client 2016-08-25 15:52:20 +03:00
Arseniy Shestakov
5a387cdaf1 Town: update appearance in applyGs to avoid desyncs. Fix issue 2464
Netpacks NewStructures and RazeStructures
2016-08-24 05:15:04 +03:00