Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function(context, args)
- {
- function nxtLockChk(t)
- {
- if (!t.ret.split('\n')[2]) //if this member is missing no more locks
- {
- #db.r({ledger:"locs", loc:t["loc"]});
- l.log("Done and removed from db.");
- }
- else
- {
- t["lock"] = t.ret.split('\n')[2].split(' ')[t.ret.split('\n')[2].split(' ').length-2].slice(1, -1);
- l.log("Going for next lock --- " + t["lock"]);
- release(t);
- }
- }
- function lWord(t)
- {
- var unl = ["open", "release", "unlock"];
- for (var i = 0; i < 3; i++)
- {
- t.params[t["lock"]] = unl[i];
- t.ret = t.call(t.params);
- if (t.ret.split(" ")[t.ret.split(" ").length-1].slice(0, -1) != "command")
- return true;
- }
- }
- function lNumber(t)
- {
- t.nxtParam = t.ret.split(" ")[t.ret.split(" ").length-3].slice(1,-1);
- for (var j = 0; j < 10; j++)
- {
- t.params[t.nxtParam] = j;
- t.ret = t.call(t.params);
- if (t.ret.split("\n")[0].substr(0, 15) == "!LOCK_UNLOCKED!")
- return true;
- }
- }
- function lPrime(t)
- {
- //Computing them took too much time, shuffling seems to help, no more timeouts on EZ_40s
- var primes = l.shuffle([2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97]);
- t.nxtParam = t.ret.split(" ")[t.ret.split(" ").length-3].slice(1,-1);
- for (var prime in primes)
- {
- t.params[t.nxtParam] = primes[prime];
- t.ret = t.call(t.params);
- if (t.ret.split("\n")[0].substr(0, 15) == "!LOCK_UNLOCKED!")
- return true;
- }
- }
- function cSeries(t)
- {
- function lTheory(selector) //t2 = 3, comp = 4, t1 = 5
- {
- var cIndex = clrs.indexOf(t.params[t["lock"]]);
- t.nxtParam = t.ret.split(" ")[t.ret.split(" ").length-3].slice(1,-1);
- //Using the ternary op to warp around the array max
- t.params[t.nxtParam] = clrs[(cIndex+selector)>7 ? (cIndex+selector)%8 : cIndex+selector];
- t.ret = t.call(t.params);
- }
- var clrs = ["red", "orange", "yellow", "lime", "green", "cyan", "blue", "purple"];
- for (var clr in clrs)
- {
- t.params[t["lock"]] = clrs[clr];
- t.ret = t.call(t.params);
- if (t.ret.split(" ")[t.ret.split(" ").length-1].slice(0, -1) != "name")
- break;
- }
- switch (t["lock"])
- {
- case "c001":
- lNumber(t);
- break;
- case "c002":
- lTheory(4);
- break;
- case "c003":
- lTheory(5);
- lTheory(3);
- }
- }
- function ezSeries(t)
- {
- lWord(t);
- if (t["lock"] == "EZ_40")
- lPrime(t);
- else
- lNumber(t);
- }
- function release(t)
- {
- l.log("Hitting -- " + t.loc + " -- " + t.lock);
- if (t["lock"].substr(0, 2) == "EZ")
- ezSeries(t);
- else
- cSeries(t);
- nxtLockChk(t);
- }
- var l = #s.scripts.lib();
- for (var targ in args)
- {
- var target =
- {
- loc:args[targ].name,
- call:args[targ].call,
- params:{},
- ret:"",
- lock:#db.f({ledger:"locs", loc:args[targ].name}).first().lock,
- nxtParam:""
- };
- if (target["lock"] == "UNK") //updates the db with lock types
- {
- target.ret = target.call({});
- if (target.ret.substr(0,12) != "+LOCK_ERROR+")
- #db.r({ledger: "locs", loc:target["loc"]});
- else
- {
- target["lock"] = target.ret.split(" ")[target.ret.split(" ").length-2].slice(1, -1);
- #db.u({ledger: "locs", loc:target["loc"]}, {$set:{lock:target["lock"]}});
- }
- } else
- release(target);
- }
- return { ok:true, msg:l.get_log() };
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement