diff options
author | Jared Adams <jaxad0127@gmail.com> | 2009-02-15 12:37:03 +0000 |
---|---|---|
committer | Jared Adams <jaxad0127@gmail.com> | 2009-02-15 12:37:03 +0000 |
commit | b152e7e73348473517a58f3ad005fbc3d89fc541 (patch) | |
tree | 7ac8b227fb6ab4e89902769906382ae5330259d7 /src/map/npc.c | |
parent | 6841ab57286c04fce48224c91142d48503ab4cc1 (diff) | |
download | tmwa-b152e7e73348473517a58f3ad005fbc3d89fc541.tar.gz tmwa-b152e7e73348473517a58f3ad005fbc3d89fc541.tar.bz2 tmwa-b152e7e73348473517a58f3ad005fbc3d89fc541.tar.xz tmwa-b152e7e73348473517a58f3ad005fbc3d89fc541.zip |
Allow shop parsing to continue after bad item name
Diffstat (limited to 'src/map/npc.c')
-rw-r--r-- | src/map/npc.c | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/src/map/npc.c b/src/map/npc.c index 932bb6b..2cdcf00 100644 --- a/src/map/npc.c +++ b/src/map/npc.c @@ -1236,19 +1236,22 @@ static int npc_parse_shop(char *w1,char *w2,char *w3,char *w4) if (sscanf(p, "%d:%d", &nameid, &value) == 2) { } else if (sscanf(p, "%s :%d", name, &value) == 2) { id = itemdb_searchname(name); - if (id == NULL) break; - nameid = id->nameid; + if (id == NULL) nameid = -1; + else nameid = id->nameid; } else break; - nd->u.shop_item[pos].nameid = nameid; - if (value < 0) { - int temp = abs(value); - if (id == NULL) id = itemdb_search(nameid); - value = id->value_buy; - if (temp % 2) value = value / ((temp + 1) / 2); - else value = value * (temp / 2); + + if (nameid > 0) { + nd->u.shop_item[pos].nameid = nameid; + if (value < 0) { + int temp = abs(value); + if (id == NULL) id = itemdb_search(nameid); + value = id->value_buy; + if (temp % 2) value = value / ((temp + 1) / 2); + else value = value * (temp / 2); + } + nd->u.shop_item[pos].value = value; + pos++; } - nd->u.shop_item[pos].value = value; - pos++; p=strchr(p,','); } if (pos == 0) { |