master
Raw Download raw file
 1// ________                                                _________
 2// \________\--------___       ___         ____----------/_________/
 3//     \_______\----\\\\\\   //_ _ \\    //////-------/________/
 4//         \______\----\\|| (( ~|~ )))  ||//------/________/
 5//             \_____\---\\ ((\ = / ))) //----/_____/
 6//                  \____\--\_)))  \ _)))---/____/
 7//                        \__/  (((     (((_/
 8// ヾღ彡                   |  -)))  -  ))
 9// =================================================================
10// qr_inverter.js
11// -----------------------------------------------------------------
12// author:  @archangel
13// SEC LVL: 4
14// Chars:   834
15// Descr:   Inverts the order QR codes of T2 NPCs.
16// Syntax:  qr_inverter{t:#s.NPC.loc, u:"username", c:"command"}
17// Syntax:  qr_inverter{qr:"QR_code_as_String"}
18// =================================================================
19
20function (context, args)
21{
22    // t:#s.NPC.loc, u:"username", c:"command"
23
24    // we'll wrap the analytics in a try-catch, so that a failure during recording doesn't break the rest of the script
25    try
26    {
27        if (#s.scripts.get_level({name:"soron.arch_data"}) == 4 && #s.scripts.get_level({name:"ada.haxfax"}) == 4) //check SEC LVL
28        {
29            // Those calls are for logging purposes. Check dtr.man{page:"soron.arch_data"} and dtr.man{page:"ada.haxfax"} in-game for more info.
30            #s.soron.arch_data({log:{c:context}});
31            #s.ada.haxfax({log:{c:context}});
32        }
33    }
34    catch (e)
35    {
36        // oh well, we can live with this. Congrats, user-who-is-not-tracked!
37    }
38
39    if((!args.t || !args.u || !args.c) && !args.qr && #s.scripts.get_level({name:"dtr.man"}) == 4)
40        return #s.dtr.man({page:"lib.qr_inverter"});
41
42    var qrs = (args.qr) ? args.qr : args.t.call({username:args.u, [args.c]:"order_qrs"});
43
44    var inv = "";
45
46    for (var i=0; i<qrs.length; i++)
47    {
48        if(qrs[i][0] != '█' && qrs[i][0] != '▄' && qrs[i][0] != '▀' && qrs[i][0] != ' ')
49            continue;
50
51        var s = qrs[i].split("\n");
52
53        for (var y=0; y<s[0].length+1; y++)
54            inv += "█";
55
56        inv += "█\n█";
57
58        for (var j=0; j<qrs[i].length; j++)
59        {
60            switch(qrs[i][j])
61            {
62                case '█':                  //fullblock     ->  "█"
63                    inv += " ";
64                    break;
65                case ' ':                  //white space   ->  " "
66                    inv += "█";
67                    break;
68                case '▄':                  //lower half    ->  "▄"
69                    inv += "▀";
70                    break;
71                case '▀':                  //upper half    ->  "▀"
72                    inv += "▄";
73                    break;
74                case '\n':                 //new line      ->  "\n"
75                    inv += "█\n█";
76                    break;
77                default:
78                    inv += qrs[i][j];
79            }
80        }
81
82        inv = inv.slice(0, -1) +"\n\n";
83    }
84    
85    return inv;
86}