summaryrefslogtreecommitdiff
path: root/src/mmo
diff options
context:
space:
mode:
authorBen Longbons <b.r.longbons@gmail.com>2014-07-01 13:53:26 -0700
committerBen Longbons <b.r.longbons@gmail.com>2014-07-01 15:50:28 -0700
commit8f44e6841f8be1d57ce859b60ecb616f6306c37c (patch)
treeadf3b91d1a60c1cdeeeb6e825aa48f3df3b53be5 /src/mmo
parent1bf79f46612f57d22647cfab515c85ee641601ca (diff)
downloadtmwa-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.cpp20
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)