diff options
author | Ben Longbons <b.r.longbons@gmail.com> | 2014-07-01 13:53:26 -0700 |
---|---|---|
committer | Ben Longbons <b.r.longbons@gmail.com> | 2014-07-01 15:50:28 -0700 |
commit | 8f44e6841f8be1d57ce859b60ecb616f6306c37c (patch) | |
tree | adf3b91d1a60c1cdeeeb6e825aa48f3df3b53be5 /src/mmo | |
parent | 1bf79f46612f57d22647cfab515c85ee641601ca (diff) | |
download | tmwa-8f44e6841f8be1d57ce859b60ecb616f6306c37c.tar.gz tmwa-8f44e6841f8be1d57ce859b60ecb616f6306c37c.tar.bz2 tmwa-8f44e6841f8be1d57ce859b60ecb616f6306c37c.tar.xz tmwa-8f44e6841f8be1d57ce859b60ecb616f6306c37c.zip |
Savefile fixes
Diffstat (limited to 'src/mmo')
-rw-r--r-- | src/mmo/extract.cpp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/mmo/extract.cpp b/src/mmo/extract.cpp index 2f8b644..7a00c71 100644 --- a/src/mmo/extract.cpp +++ b/src/mmo/extract.cpp @@ -45,6 +45,13 @@ bool extract(XString str, AString *rv) bool extract(XString str, GlobalReg *var) { + // vars used to be stored signed + int compat_value; + if (extract(str, record<','>(&var->str, &compat_value))) + { + var->value = compat_value; + return true; + } return extract(str, record<','>(&var->str, &var->value)); } @@ -52,11 +59,12 @@ bool extract(XString str, GlobalReg *var) bool extract(XString str, Item *it) { XString ignored; - return extract(str, + XString corruption_hack_amount; + bool rv = extract(str, record<',', 11>( &ignored, &it->nameid, - &it->amount, + &corruption_hack_amount, &it->equip, &ignored, &ignored, @@ -66,6 +74,14 @@ bool extract(XString str, Item *it) &ignored, &ignored, &ignored)); + if (rv) + { + if (corruption_hack_amount == "-1"_s) + it->amount = 0; + else + rv = extract(corruption_hack_amount, &it->amount); + } + return rv; } bool extract(XString str, MapName *m) |