Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions chastity/belt/belt_clockmaker.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
const { getUserVar, setUserVar } = require("../../functions/usercontext")

// Clockmaker's Belt
// This belt acts similarly to the Eternal Denial Belt, but has a short window each minute that allows release
exports.growthCoefficient = (data) => { return 1 }
exports.decayCoefficient = (data) => { return 0.1 }
exports.minVibe = (data) => {
return Math.max(Math.min(Math.floor((Date.now() - (getUserVar(data.userID, "livingwoodbelt") ?? Date.now())) / 900000), 20), getUserVar(data.userID, "livingwoodvibe"))
}
// Note, we must use a regular function context to retrieve a this correctly.
exports.onOrgasm = function (data) {
setUserVar(data.userID, "livingwoodvibe", Math.max((this.minVibe(data) - 10), 0))
setUserVar(data.userID, "livingwoodbelt", Date.now());
}
exports.onFailedOrgasm = function (data) {
console.log(this);
setUserVar(data.userID, "livingwoodvibe", Math.min((this.minVibe(data) + 1), 20));
}
exports.onEquip = (data) => {
if (getUserVar(data.userID, "livingwoodvibe") == {}) setUserVar(data.userID, "livingwoodvibe", 0);
if (getUserVar(data.userID, "livingwoodbelt") == {}) setUserVar(data.userID, "livingwoodbelt", Date.now());
}
exports.onUnequip = (data) => {
// Check if user is wearing a Livingwood Bra otherwise Null Out Vars
if (getChastityBra(data.userID).chastitytype.includes("Livingwood")) {
setUserVar(data.userID, "livingwoodvibe", {});
setUserVar(data.userID, "livingwoodbelt", {});
}
}

exports.tags = ["living"]

// Name
exports.name = "Livingwood Belt"
8 changes: 5 additions & 3 deletions functions/textfunctions.js
Original file line number Diff line number Diff line change
Expand Up @@ -1333,20 +1333,20 @@ const texts_struggle = {
`USER_TAG twirls USER_THEIR hair absentmindedly. Someone should tie USER_THEM up with more bondage, tehe!~`,
{
required: (t) => {
return !(process.gags && process.gags[t.interactionuser.id]);
return process.gags[t.interactionuser.id].length == 0 && Math.random() > 0.75;
},
text: `USER_TAG clears USER_THEIR throat and then begins to speak: The FitnessGram Pacer Test is a multistage aerobic capacity test that progressively gets more difficult as it continues. The 20 meter pacer test will begin in 30 seconds. Line up at the start. The running speed starts slowly but gets faster each minute after you hear this signal bodeboop. A single lap should be completed every time you hear this sound. ding Remember to run in a straight line and run as long as possible. The second time you fail to complete a lap before the sound, your test is over. The test will begin on the word start. On your mark. Get ready!… Start.`,
},
`USER_TAG's mind is fantasizing about the cute characters in that last anime USER_THEY watched. Everyone should ask USER_THEM about it!`,
{
required: (t) => {
return !(process.gags && process.gags[t.interactionuser.id]);
return process.gags[t.interactionuser.id].length == 0 && Math.random() > 0.75;
},
text: `USER_TAG's voice echoes through the halls as USER_THEY monologueUSER_S: ***Tell me, for whom do you fight...***`,
},
{
required: (t) => {
return !(process.gags && process.gags[t.interactionuser.id]);
return process.gags[t.interactionuser.id].length == 0 && Math.random() > 0.75;
},
text: `USER_TAG pauses for a second, then begins to speak in a sultry tone: Hello Ladies~. Look at your outfit, now back to me, now back to your outfit, now back to me. Sadly, your outfit can't be mine~. But if you jumped into a Mimic instead of using the /wear command, it could look close to mine! Look down, back up, where are you? In my RP Thread! What's in your hand, back at me. I have it, it's the keys to your Collar and Belt! Look again, the keys are now vibes! Look down again, Back up. Where are you? Strapped in Display Stand! Now Cum for me~. Anything is possible when you dress using a Mimic and not by yourself! I'm on a (wooden) horse!`,
},
Expand All @@ -1366,6 +1366,8 @@ const texts_struggle = {
`USER_TAG wonders what it would be like to be a pet kitty. Or a pet doggo. USER_THEY_CAP blushUSER_ES a little at the thought~`,
`USER_TAG prepares for battle with a sword and flourishes it. USER_THEY_CAP USER_ISARE going to hunt the legendary sHE!`,
`USER_TAG sits and looks around patiently because USER_THEY USER_ISARE a **good USER_PRAISEOBJECT!**`,
`USER_TAG hears a strange sound, almost like something heavy was sliding across the floor. As USER_THEY turn around USER_THEY are left wondering if that chest has always been there`,
`USER_TAG glances around, spotting a strange mechanical looking door with a strange scanning mechanism and keypad. USER_THEY feel a strange mix of arousal and foreboding when thinking about what might lie beyond it, but deep down they have a feeling that if USER_THEY went in it wouldn't be USER_THEM coming back out~`,
// 2 hours in chastity
{
required: (t) => {
Expand Down