- Nov 9, 2020
- 384
- 835
Found a bug in teh code that was sticking you in a loop. I have a bugfix up on the front page that addresses it. IF you use this save you should be good to go. Thanks for prining the bug to my attention.
The only people that are going to be working in the brothel for now are the girls that are getting recruited. When I get around to doing peoples public arcs, some of them might be willing to pick up shifts in the brothel once it's open. It'll be a character by character thing.Is it possible to pimp your sisters in the brothel?
If you dont have 7-zip, you might need to do it one by one and just merge them."If you need the full game, download all three packs, select them together and extract. They should extract into the same folder."
it doesnt work
var KBIntervalID = 0;
function UpdateLinks(e) {
if (!tags().includes("DisableKeyLinks")) {
var t,
n = void 0 === e ? (e = document, $("#passages a").toArray()) : $(e).find("a").toArray();
var b = void 0 === e ? (e = document, $("button[onclick*=\"<<goto\"").toArray()) : $(e).find("button[onclick*=\"<<goto\"").toArray();
b.sort(function(first, second) {
//sort by x, secondary by y
var x1 = parseFloat($(first).css("left"));
var y1 = parseFloat($(first).css("top"));
var x2 = parseFloat($(second).css("left"));
var y2 = parseFloat($(second).css("top"));
return y1 == y2 ? x1 - x2 : y1 - y2;
});
n.push(...b);
if (0 < n.length)
for (t = 0; t < n.length; t++)
"true" != n[t].getAttribute("data-nokey") &&
"true" != n[t].parentElement.getAttribute("data-nokey") &&
!n[t].parentElement.classList.contains("HomeButton") &&
!n[t].parentElement.classList.contains("TimeButton") ||
(n.deleteAt(t), t--);
if (1 === n.length)
n[0].id.includes("Link") || (n[0].id = "NextLink", $("<sup>[D]</sup>").appendTo(n[0]));
else if (1 <= n.length && n.length <= 20)
for (t = 0; t < n.length; t++){
//if(n[t].tagName == "button" && n[t].getAttribute("onclick").contains(""
n[t].id.includes("Link") || (t < 9 ? ($("<sup>[" + (t + 1) + "]</sup>").appendTo(n[t]), n[t].id = "Link" + (t + 1)) : 9 === t ? ($("<sup>[0]</sup>").appendTo(n[t]), n[t].id = "Link0") : ($("<sup>[" + "qwertyuiop".charAt(t - 10) + "]</sup>").appendTo(n[t]), n[t].id = "Link" + t))
}
}
}
function utilSlugify(e) {
var e = String(e).trim(),
t = e.replace(/[^\w\s\u2013\u2014-]+/g, "").replace(/[_\s\u2013\u2014-]+/g, "-").toLocaleLowerCase();
return /^-*$/.test(t) ? e.replace(/[\x00-\x20!-/:-@[-^`{-\x9f]+/g, "").replace(/[_\s\u2013\u2014-]+/g, "-") : t
}
$(document).on(":passagerender", function (e) {
clearInterval(KBIntervalID),
UpdateLinks(e.content),
KBIntervalID = setInterval(UpdateLinks, 300)
});
$(document).on("keyup", function (e) {
if (!tags().includes("DisableKeyLinks"))
switch (68 != e.keyCode && 39 != e.keyCode && 97 != e.keyCode || !$("#NextLink") || tags().includes("IgnoreArrowKeys") && "ArrowRight" == e.key || (e.preventDefault(), $("#NextLink").click()), 47 < e.keyCode && e.keyCode < 58 && $("#Link" + (e.keyCode - 48)) && (e.preventDefault(), $("#Link" + (e.keyCode - 48)).click()), 95 < e.keyCode && e.keyCode < 106 && $("#Link" + (e.keyCode - 96)) && (e.preventDefault(), $("#Link" + (e.keyCode - 96)).click()), 65 != e.keyCode && 37 != e.keyCode && 192 != e.keyCode || tags().includes("IgnoreArrowKeys") && 65 == e.keyCode || (e.preventDefault(), Engine.backward()), e.keyCode) {
case 81:
e.preventDefault(),
$("#Link10").click();
break;
case 87:
e.preventDefault(),
$("#Link11").click();
break;
case 69:
e.preventDefault(),
$("#Link12").click();
break;
case 82:
e.preventDefault(),
$("#Link13").click();
break;
case 84:
e.preventDefault(),
$("#Link14").click();
break;
case 89:
e.preventDefault(),
$("#Link15").click();
break;
case 85:
e.preventDefault(),
$("#Link16").click();
break;
case 73:
e.preventDefault(),
$("#Link17").click();
break;
case 79:
e.preventDefault(),
$("#Link18").click();
break;
case 80:
e.preventDefault(),
$("#Link19").click()
}
});
New version of this code, fixes an issue where you couldn't properly fill in text boxes because the back and forward shortcuts got a higher prioritySo, in the interest of making one-handed navigation of this game more feasible on computers (wink-wink), I decided to try my hand at importing the link+keyboard logic from College Daze. I then added logic that puts those links on the location buttons as well, except for the home and kill time shortcuts. The button link order is top-left to bottom-right, but some layouts end up being a little weird.
View attachment 3422369
Still, that's as much effort as I'm willing to put into this.
Since this code is generic and can be pulled into most twine/Sugarcube games, I'm not going to share a full HTML file, just the script.
You don't have permission to view the spoiler content. Log in or register now.
Credit for the vast majority of this logic goes to G28JavaScript:var KBIntervalID = 0; function UpdateLinks(e) { if (!tags().includes("DisableKeyLinks")) { var t, n = void 0 === e ? (e = document, $("#passages a").toArray()) : $(e).find("a").toArray(); var b = void 0 === e ? (e = document, $("button[onclick*=\"<<goto\"").toArray()) : $(e).find("button[onclick*=\"<<goto\"").toArray(); b.sort(function(first, second) { //sort by x, secondary by y var x1 = parseFloat($(first).css("left")); var y1 = parseFloat($(first).css("top")); var x2 = parseFloat($(second).css("left")); var y2 = parseFloat($(second).css("top")); return y1 == y2 ? x1 - x2 : y1 - y2; }); n.push(...b); if (0 < n.length) for (t = 0; t < n.length; t++) "true" != n[t].getAttribute("data-nokey") && "true" != n[t].parentElement.getAttribute("data-nokey") && !n[t].parentElement.classList.contains("HomeButton") && !n[t].parentElement.classList.contains("TimeButton") || (n.deleteAt(t), t--); if (1 === n.length) n[0].id.includes("Link") || (n[0].id = "NextLink", $("<sup>[D]</sup>").appendTo(n[0])); else if (1 <= n.length && n.length <= 20) for (t = 0; t < n.length; t++){ //if(n[t].tagName == "button" && n[t].getAttribute("onclick").contains("" n[t].id.includes("Link") || (t < 9 ? ($("<sup>[" + (t + 1) + "]</sup>").appendTo(n[t]), n[t].id = "Link" + (t + 1)) : 9 === t ? ($("<sup>[0]</sup>").appendTo(n[t]), n[t].id = "Link0") : ($("<sup>[" + "qwertyuiop".charAt(t - 10) + "]</sup>").appendTo(n[t]), n[t].id = "Link" + t)) } } } function utilSlugify(e) { var e = String(e).trim(), t = e.replace(/[^\w\s\u2013\u2014-]+/g, "").replace(/[_\s\u2013\u2014-]+/g, "-").toLocaleLowerCase(); return /^-*$/.test(t) ? e.replace(/[\x00-\x20!-/:-@[-^`{-\x9f]+/g, "").replace(/[_\s\u2013\u2014-]+/g, "-") : t } $(document).on(":passagerender", function (e) { clearInterval(KBIntervalID), UpdateLinks(e.content), KBIntervalID = setInterval(UpdateLinks, 300) }); $(document).on("keyup", function (e) { if (!tags().includes("DisableKeyLinks")) switch (68 != e.keyCode && 39 != e.keyCode && 97 != e.keyCode || !$("#NextLink") || tags().includes("IgnoreArrowKeys") && "ArrowRight" == e.key || (e.preventDefault(), $("#NextLink").click()), 47 < e.keyCode && e.keyCode < 58 && $("#Link" + (e.keyCode - 48)) && (e.preventDefault(), $("#Link" + (e.keyCode - 48)).click()), 95 < e.keyCode && e.keyCode < 106 && $("#Link" + (e.keyCode - 96)) && (e.preventDefault(), $("#Link" + (e.keyCode - 96)).click()), 65 != e.keyCode && 37 != e.keyCode && 192 != e.keyCode || tags().includes("IgnoreArrowKeys") && 65 == e.keyCode || (e.preventDefault(), Engine.backward()), e.keyCode) { case 81: e.preventDefault(), $("#Link10").click(); break; case 87: e.preventDefault(), $("#Link11").click(); break; case 69: e.preventDefault(), $("#Link12").click(); break; case 82: e.preventDefault(), $("#Link13").click(); break; case 84: e.preventDefault(), $("#Link14").click(); break; case 89: e.preventDefault(), $("#Link15").click(); break; case 85: e.preventDefault(), $("#Link16").click(); break; case 73: e.preventDefault(), $("#Link17").click(); break; case 79: e.preventDefault(), $("#Link18").click(); break; case 80: e.preventDefault(), $("#Link19").click() } });
You must be registered to see the linksetc, as I lifted most of it from his game
var KBIntervalID = 0;
function UpdateLinks(e) {
if (!tags().includes("DisableKeyLinks")) {
var t,
n = void 0 === e ? (e = document, $("#passages a").toArray()) : $(e).find("a").toArray();
var b = void 0 === e ? (e = document, $("button[onclick*=\"<<goto\"").toArray()) : $(e).find("button[onclick*=\"<<goto\"").toArray();
b.sort(function(first, second) {
//sort by x, secondary by y
var x1 = parseFloat($(first).css("left"));
var y1 = parseFloat($(first).css("top"));
var x2 = parseFloat($(second).css("left"));
var y2 = parseFloat($(second).css("top"));
return y1 == y2 ? x1 - x2 : y1 - y2;
});
n.push(...b);
if (0 < n.length)
for (t = 0; t < n.length; t++)
"true" != n[t].getAttribute("data-nokey") &&
"true" != n[t].parentElement.getAttribute("data-nokey") &&
!n[t].parentElement.classList.contains("HomeButton") &&
!n[t].parentElement.classList.contains("TimeButton") ||
(n.deleteAt(t), t--);
if (1 === n.length)
n[0].id.includes("Link") || (n[0].id = "NextLink", $("<sup>[D]</sup>").appendTo(n[0]));
else if (1 <= n.length && n.length <= 20)
for (t = 0; t < n.length; t++){
n[t].id.includes("Link") || (t < 9 ? ($("<sup>[" + (t + 1) + "]</sup>").appendTo(n[t]), n[t].id = "Link" + (t + 1)) : 9 === t ? ($("<sup>[0]</sup>").appendTo(n[t]), n[t].id = "Link0") : ($("<sup>[" + "qwertyuiop".charAt(t - 10) + "]</sup>").appendTo(n[t]), n[t].id = "Link" + t))
}
}
}
function utilSlugify(e) {
var e = String(e).trim(),
t = e.replace(/[^\w\s\u2013\u2014-]+/g, "").replace(/[_\s\u2013\u2014-]+/g, "-").toLocaleLowerCase();
return /^-*$/.test(t) ? e.replace(/[\x00-\x20!-/:-@[-^`{-\x9f]+/g, "").replace(/[_\s\u2013\u2014-]+/g, "-") : t
}
$(document).on(":passagerender", function (e) {
clearInterval(KBIntervalID),
UpdateLinks(e.content),
KBIntervalID = setInterval(UpdateLinks, 300)
});
$(document).on("keyup", function (e) {
if (!tags().includes("DisableKeyLinks") && e.target.type != "text")
switch (68 != e.keyCode && 39 != e.keyCode && 97 != e.keyCode || !$("#NextLink") || tags().includes("IgnoreArrowKeys") && "ArrowRight" == e.key || (e.preventDefault(), $("#NextLink").click()), 47 < e.keyCode && e.keyCode < 58 && $("#Link" + (e.keyCode - 48)) && (e.preventDefault(), $("#Link" + (e.keyCode - 48)).click()), 95 < e.keyCode && e.keyCode < 106 && $("#Link" + (e.keyCode - 96)) && (e.preventDefault(), $("#Link" + (e.keyCode - 96)).click()), 65 != e.keyCode && 37 != e.keyCode && 192 != e.keyCode || tags().includes("IgnoreArrowKeys") && 65 == e.keyCode || (e.preventDefault(), Engine.backward()), e.keyCode) {
case 81:
e.preventDefault(),
$("#Link10").click();
break;
case 87:
e.preventDefault(),
$("#Link11").click();
break;
case 69:
e.preventDefault(),
$("#Link12").click();
break;
case 82:
e.preventDefault(),
$("#Link13").click();
break;
case 84:
e.preventDefault(),
$("#Link14").click();
break;
case 89:
e.preventDefault(),
$("#Link15").click();
break;
case 85:
e.preventDefault(),
$("#Link16").click();
break;
case 73:
e.preventDefault(),
$("#Link17").click();
break;
case 79:
e.preventDefault(),
$("#Link18").click();
break;
case 80:
e.preventDefault(),
$("#Link19").click()
}
});
does this still work?? cause it keeps saying sugarcube in not definedHit F12 and your browser will pop up a Javascript console window to the right of the VN. I'm going to paste this screenshot of my chromium with the javascript console open. Note that I've already done the things that I will talk about next.
View attachment 1341295
The first thing I did was type "Sugarcube.State.variables.charge" at the ">" prompt in that window and hit enter. That returns a 0 which is the current charge on the phone as you can see in the content window as "Charge: 0". Note that as you type, the console will automatically populate a popdown list with possible completions. So after typing only "Sugar" I can just hit the right arrow key and it will fill that out as "SugarCube". Then I typed ".State.var" and that was enough to let me hit the right arrow key again to have it fill out "variables". So you don't have to type all this everytime and worry about it being incorrect.
I hit the "up arrow" key to recall all of that and just typed "=40" to set it to 40. Note that the content window on the left is in suspended animation while the console is open. So that "Charge: 0" won't change to "Charge: 40" until after I close the console window by clicking the "x" gadget in its upper right and then click something to go into the next passage.
I did "up arrow" again and then used backspace to erase the ".charge". This showed all of the variables in effect for the VN but as a "closed two line tree between "{" and "}" with a small ellipses "..." at the very right. To open it up as the full scrollable list I clicked on that "..." and we see the first page full of variables and values. I can now use "up arrow" and then type out individual variable names to peek and then use "=" with a new value to poke.
Congratulations. You now know how to hack 95% of Twine games since just about everybody uses SugarCube format and don't know how to change where the variable storage is hidden.
You need to use the correct capitalization. Sugarcube will not work. sugarcube will not work either. But SugarCube will work. So there is a typo in phpudup's instructions: the correct spelling/capitalization isdoes this still work?? cause it keeps saying sugarcube in not defined
SugarCube.State.variables.charge
Elliot (cousin or neighbor) can be turned into a sissy and will be more or less happy about it depending on your choices.what sisification have here
This game focuses on the MC corrupting women mostly for his own benefit. Even if you select the "public" route for the women that have it as an option, there are still several sex scenes with the MC.How is this game for someone who wants to corrupt women but not actually have sex with them. I'm more interested in watching them ruin their lives with other men.
Place all extracted parts into the same folder. You should end up with 1 folder called Sluttown USA that's about 4.9 gig.alright a lil help guys, i download all 3 parts but then i extract all and nothing happens, what should i do
its still messin up can u tell me how to do it step by step pleasePlace all extracted parts into the same folder. You should end up with 1 folder called Sluttown USA that's about 4.9 gig.