master
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}