NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name TORN: Safe Crimes
// @version 1.0.2
// @author DeKleineKobini
// @description Help with doing safe crimes.
// @namespace dekleinekobini.safecrimes
// @updateURL https://openuserjs.org/meta/DeKleineKobini/TORN_Safe_Crimes.meta.js
// @downloadURL https://openuserjs.org/install/DeKleineKobini/TORN_Safe_Crimes.user.js
// @require https://openuserjs.org/src/libs/DeKleineKobini/DKK_Torn_Utilities.js
// @match https://www.torn.com/crimes.php*
// @license MIT
// @grant none
// ==/UserScript==
var settings = {
onlySafe: true
};
setDebug(false);
/* --------------------
CODE - EDIT ON OWN RISK
-------------------- */
setPrefixEasy("SC");
const SAFE_CRIMES = {
searchstreets : ["movie"],
shoplift: {
clothesshop: [ "jacket" ]
}, // special case
pickpocket: [ "kid", "oldwoman", "businessman" ],
robsweetshop: [ "thoroughrobbery" ],
virus: [ "stealthvirus" ],
assasination: [ "murdermobboss" ],
arson: [ "warehouse" ],
kidnapping: [ "napmayor" ],
}
const NERVE_CRIMES = {
2: 'searchstreets',
3: 'sellcopiedcds',
4: 'shoplift',
5: 'pickpocket',
6: 'larceny',
7: 'robsweetshop',
8: 'transportdrugs',
9: 'virus',
10: 'assasination',
11: 'arson',
12: 'gta',
13: 'pawnshop',
14: 'counterfeiting',
15: 'kidnapping',
16: 'armstraffic',
17: 'bombings',
18: 'hacking',
}
const MENU_TEXT = {
'Which item would you like to steal from the clothes shop?': "clothesshop"
}
observeMutations(document, ".specials-cont", true, function(obs){
applySafeCrimes();
observeMutations($(".content-wrapper")[0], ".specials-cont", false, function(obs){
applySafeCrimes();
});
}, { childList: true, subtree: true });
function applySafeCrimes() {
let action = $("form[name='crimes']:not([class])").attr("action");
action = action.substring(action.indexOf("step=") + 5);
if (action == "docrime") {
$(".specials-cont > li").each(function() {
let row = $(this).find("ul");
let crime = row.find(".choice-container > input").attr("value");
let safe = SAFE_CRIMES.hasOwnProperty(crime);
doAction(row, safe);
});
} else if (action == "docrime2") {
debug("No safe crimes here.")
} else if (action == "docrime3") {
let nerve = $(".specials-cont-wrap input[name='nervetake']").attr("value")
let crime = NERVE_CRIMES[nerve];
let crimesSafe = SAFE_CRIMES[crime];
$(".specials-cont > li").each(function() {
let row = $(this).find("ul");
let subcrime = row.find(".choice-container > input").attr("value");
let safe = crimesSafe.hasOwnProperty(subcrime);
doAction(row, safe);
});
} else if (action == "docrime4") {
let nerve = $(".specials-cont-wrap input[name='nervetake']").attr("value")
let crime = NERVE_CRIMES[nerve];
let crimesSafe = SAFE_CRIMES[crime];
if (!Array.isArray(crimesSafe)) {
let menu = MENU_TEXT[$(".info-msg .msg").html().split("\n")[1]];
debug($(".info-msg .msg").html().split("\n")[1]);
debug(MENU_TEXT[$(".info-msg .msg").html().split("\n")[1]]);
crimesSafe = crimesSafe[menu];
}
$(".specials-cont > li").each(function() {
let row = $(this).find("ul");
let subcrime = row.find(".choice-container > input").attr("value");
let safe = crimesSafe && crimesSafe.includes(subcrime);
doAction(row, safe);
});
}
}
function doAction(row, safe) {
if (settings.onlySafe && !safe) {
row.parent().hide();
} else if (!settings.onlySafe && safe){
row.css("background-color", "green");
}
}