summaryrefslogtreecommitdiff
path: root/src/map/map.c
diff options
context:
space:
mode:
authorHaru <haru@dotalux.com>2020-01-12 16:16:02 +0100
committerGitHub <noreply@github.com>2020-01-12 16:16:02 +0100
commitd88ba2f882c92753a9093432daa55f06db8dec93 (patch)
tree0fe3cc037e846f9db765f271ec082d54b7cba11d /src/map/map.c
parentbf99547843038bc15dc1948748d969950e866465 (diff)
parentad7a25af13277c280fb4a7cbf134fe5d01de186d (diff)
downloadhercules-d88ba2f882c92753a9093432daa55f06db8dec93.tar.gz
hercules-d88ba2f882c92753a9093432daa55f06db8dec93.tar.bz2
hercules-d88ba2f882c92753a9093432daa55f06db8dec93.tar.xz
hercules-d88ba2f882c92753a9093432daa55f06db8dec93.zip
Merge pull request #2599 from 4144/updatepackets
Update packets up to 2020-01-08
Diffstat (limited to 'src/map/map.c')
-rw-r--r--src/map/map.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/map/map.c b/src/map/map.c
index 8d60d1672..9db868329 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -3769,8 +3769,29 @@ static int map_waterheight(char *mapname)
// read & convert fn
rsw = grfio_read(fn);
if (rsw) {
+ if (memcmp(rsw, "GRSW", 4) != 0) {
+ ShowWarning("Failed to find water level for %s (%s)\n", mapname, fn);
+ aFree(rsw);
+ return NO_WATER;
+ }
+ int major_version = rsw[4];
+ int minor_version = rsw[5];
+ if (major_version > 2 || (major_version == 2 && minor_version > 2)) {
+ ShowWarning("Failed to find water level for %s (%s)\n", mapname, fn);
+ aFree(rsw);
+ return NO_WATER;
+ }
+ if (major_version < 1 || (major_version == 1 && minor_version <= 4)) {
+ ShowWarning("Failed to find water level for %s (%s)\n", mapname, fn);
+ aFree(rsw);
+ return NO_WATER;
+ }
+ int offset = 166;
+ if (major_version == 2 && minor_version >= 2) {
+ offset = 167;
+ }
//Load water height from file
- int wh = (int) *(float*)(rsw+166);
+ int wh = (int)*(float*)(rsw + offset);
aFree(rsw);
return wh;
}