master
Raw Download raw file
 1function(context, args) {
 2    var l = #s.scripts.lib(), 
 3        d = #s.dtr.lib();
 4
 5    args = args || {};
 6    if (!(args.name || args.type || args.tier || args.class || args.cost)) {
 7        var balance = #s.accts.balance();
 8        args.cost = { "$lte": balance };
 9    }
10
11    var order = args.order || [ "tier", "type", "name", "rarity" ],
12        list = #s.market.browse(args),
13        market = {};
14
15    if (list.length === 0) {
16        return {
17            ok: false,
18            msg: "No suitable upgrades found.\nUsage: " + context.this_script + ' { name:"<upgrade name", type:"<lock, script_space, script>", tier:<1-4>, class:"<architect, executive, infitrator, scavenger>", cost:<num or GC str>, order:<array of properties> }'
19        };
20    }
21
22    l.each(list, function(_, item) {
23        var id = "" + item.rarity + "-" + item.name;
24        if (!(null === item.i || id in market)) {
25	    market[id] = item;
26	}
27    });
28
29    list = [];
30    for (var id in market) {
31        var item = #s.market.browse({ i: market[id].i });
32        for (var key in item.upgrade)
33            item[key] = item.upgrade[key];
34        item.class = item.up_class;
35        list.push(item);
36    }
37
38    list.sort(function(a, b) {
39        var result = 0;
40        for (var key in order) {
41	    key = order[key];
42	    result = a[key] < b[key] ? -1 : a[key] > b[key] ? 1 : 0;
43            if (0 !== result) break;
44        }
45        return result;
46    });
47
48    var classes = [ "architect", "infiltrator", "scavenger", "executive" ];
49
50    var titles = [
51        { name: "Name", key: "name" },
52        { name: "Rarity", key: "rarity", func: d.coloredRarityLevel },
53        { name: "Cost", key: "cost", dir: -1, func: d.expandGC },
54        { name: "Token", key: "i" },
55        { name: "Type", key: "type" },
56        { name: "Class", key: "class", func: function(value) {
57                                                 return classes[value] || "none";
58                                             }},
59        { name: "Tier", key: "tier", dir: 0 } ];
60
61    titles.sort(function(a, b) {
62        return order.indexOf(a.key) != -1 ? order.indexOf(b.key) != -1 ? order.indexOf(a.key) - order.indexOf(b.key) : -1 : order.indexOf(b.key) != -1 ? 1 : 0;
63    });
64
65    return {
66        ok: true,
67        msg: d.columns(list, titles, {})
68    };
69}