Commit graph

147 commits

Author SHA1 Message Date
Gleb Mazovetskiy
2c924e1ab1 🐞 pfile: Fix stale tables after leaving a game
In multiplayer, the hash and block tables are kept around between the
saves (presumably to improve performance).

When leaving the game, they should be cleared.

Clearing of the tables is handled by `Archive::Close` in `mpqapi.cpp`.

After 135f5e03c7,
which moved the archive closing inside `pfile_write_hero`, the tables
were no longer cleared on `pfile_flush_W` (because the archive was
already closed when it was called).

To fix the issue, this commit adds a `clear_tables` argument
to `pfile_write_hero` and removes the `pfile_flush_W` method.

Bug reported and root cause found by @Eider-McDuck:

> Example to reproduce: Have 2 vanilla savegames, join a game with the first,
> then leave, then join a game with the second, then drop an item on the floor.
2021-04-16 15:50:13 +02:00
Anders Jenbo
997c1dba55 🚚 Split up all.h in to proper header relations 2021-04-16 01:04:54 +02:00
Anders Jenbo
f450d6a125 🚚 Move defines to there proper files 2021-04-16 01:04:54 +02:00
qndel
2677cc14dc fix loading golem 2021-04-14 19:28:20 +02:00
Juliano Leal Goncalves
28ad9d43c5 🎨 Rename 'plr_class' enum to 'HeroClass'
Members were renamed as well for readability.
2021-04-12 20:00:53 +02:00
Juliano Leal Goncalves
7d95bfed39 ♻️ Convert 'plr_class' to a scoped enumeration 2021-04-12 20:00:53 +02:00
Gleb Mazovetskiy
135f5e03c7 Only write to the file once when saving 2021-04-12 10:44:36 +02:00
Stephen C. Wills
a80aa286d3
Fixed data type of quest _qmsg in save files. (#1475) 2021-04-11 09:39:46 +02:00
Anders Jenbo
e7ae8ddd04 🚚 Move all enums to there respective headers 2021-04-10 16:30:00 +02:00
Anders Jenbo
2732aea1b2 ♻️ Use GameInfo instead of individual globals 2021-04-10 07:30:12 +02:00
Anders Jenbo
61244c4d93 ♻️ Rearange and apply more enums 2021-04-10 05:24:01 +02:00
Anders Jenbo
20186e0370 🎨 Replace TRUE/FALSE with true/false
fix


Fix


fix
2021-04-09 15:13:02 +02:00
Anders Jenbo
93d42b62b8 ♻️ Change BOOL to bool 2021-04-09 15:13:02 +02:00
Gleb Mazovetskiy
cc75b7a948 loadsave: Fix off-by-one in RemoveEmptyLevelItems
Refs #1367
2021-04-09 07:28:51 +02:00
qndel
7a9aaed4b4 proper heroitems size 2021-04-08 22:10:32 +02:00
Gleb Mazovetskiy
7fd79c5c40 SaveLoad/Helper: Rename member fields 2021-04-08 21:51:55 +02:00
Anders Jenbo
bfb3c11c2b 🎨 Change namespace to devilution 2021-04-06 15:21:25 +02:00
Anders Jenbo
630e507f63 🚚 Apply namespace 2021-04-06 15:21:25 +02:00
Anders Jenbo
6f1498d315 🚚 Move structures to there respective headers 2021-04-06 12:41:00 +02:00
Juliano Leal Goncalves
9021f8daa5 ♻️ Pluralize global 'item' array variable 2021-04-06 11:45:28 +02:00
Anders Jenbo
28bb003601 🐛 use exact size of save format struct 2021-04-06 05:34:21 +02:00
Anders Jenbo
bba73ea20f Handle mixed item origins in multiplayer 2021-04-01 14:52:44 +02:00
Anders Jenbo
c221cdfeb1 🐛 Correct sinage on level load/save 2021-04-01 06:43:33 +02:00
Anders Jenbo
a69a76941e ♻️ Clean up InitCutscene 2021-03-24 21:50:19 +01:00
Anders Jenbo
8f09cc3034 [diablo] 🐛 Correct spelling of Sorcerer
Fixes #1074
2021-03-21 12:18:10 +01:00
Anders Jenbo
17803d5923 ♻️ Apply proper types to PlayerStruct 2021-03-14 15:38:23 +01:00
Anders Jenbo
def2253386 ♻️ Move monster.h related structs and enums and apply propper types 2021-03-11 03:36:32 +01:00
Anders Jenbo
d6ec6395e0 ♻️ change QuestTalkData in to an array of _speech_id
This gets rid of casting QuestTalkData to DWORD/int in various parts of
the code.
2021-03-11 01:40:13 +01:00
alanbirtles
d0c675b426 fix #1155 2021-03-10 20:50:21 +01:00
Anders Jenbo
1284333765 ♻️ Use explicit types and remove globals from save file logic 2021-03-09 22:27:11 +01:00
Anders Jenbo
a827420070 🐛 Stable "hotkeys" size calculation 2021-03-08 02:50:14 +01:00
qndel
12dddc4e8f Preserve active spell and hotkeys across games 2021-03-07 17:30:03 +01:00
Anders Jenbo
e8fb559e53 🐛 Correct saving/loading of enums 2021-03-06 17:35:19 +01:00
Anders Jenbo
783e4a70b1 ♻️ Strongly type items structures 2021-03-06 10:04:07 +01:00
Anders Jenbo
d37fb68809 Make header checks portable 2021-03-02 12:17:13 +01:00
Anders Jenbo
886ed4803a Do not try to convert levels for non avalible quests
Apparently previous saves can leave behind some quest levels in junk
states
2021-03-02 08:22:48 +01:00
Anders Jenbo
3593266ef7 Converte all Levels when cross loading saves 2021-02-27 14:51:37 +01:00
Anders Jenbo
5035ac8062 Strip Hellfire items in Diablo sessions 2021-02-27 14:51:37 +01:00
Anders Jenbo
7cf40d3c7c Clean up missile function names 2021-02-25 11:52:19 +01:00
qndel
ba37c8618f
fixtypos (#1053) 2021-02-25 10:14:02 +01:00
Anders Jenbo
b4e78c5e79 Remove some unused junk 2021-02-25 05:37:17 +01:00
Anders Jenbo
a5ca521f0d Fix item morphing in Hellfire 2021-02-22 00:12:23 +01:00
qndel
c0f5749728 Fix RNG diverging during level generation depending on the code path
The consequences has mostly mitigated after wards, but this will make things make more sens when analysing the state of the code.
2021-02-01 06:44:16 +01:00
Anders Jenbo
b69952d918 Correct monster light when loading old saves 2021-02-01 05:38:34 +01:00
qndel
7f42d0dd64 Fix vision staying behind from where you eited the level
This could be either the stairs one tile next to where you enter. Or a
compleatly different posistion if using a different entry point.
2021-01-31 17:46:15 +01:00
Anders Jenbo
06b7c78406 Notes of untimly header cleanups 2021-01-26 03:12:58 +01:00
Anders Jenbo
244c5437b4 Fix saving items 2021-01-17 15:03:34 +01:00
Anders Jenbo
d68c8c1cc8 Fix issues related to cross loading save games 2021-01-17 04:49:23 +01:00
Anders Jenbo
ccd0e7fd23 Merge branch 'master' of github.com:diasurgical/devilution 2021-01-16 02:10:25 +01:00
Anders Jenbo
4ffbb32952 [hellfire] Allow continuing Diablo saves in Hellfire and vice versa 2021-01-13 16:10:21 +01:00