From 5e04727a1b019c677c7a40ae33c75b4c8b1e3906 Mon Sep 17 00:00:00 2001 From: Idrees Hassan Date: Wed, 21 Jan 2026 23:23:00 -0500 Subject: [PATCH] Use chance to determine hat unlocks and add heart to menu title --- dist/extension.zip | Bin 154352 -> 154531 bytes dist/extension/birb.js | 30 ++++++++++++++++++++++++------ dist/obsidian/main.js | 30 ++++++++++++++++++++++++------ dist/userscript/birb.user.js | 30 ++++++++++++++++++++++++------ dist/web/birb.embed.js | 30 ++++++++++++++++++++++++------ dist/web/birb.js | 30 ++++++++++++++++++++++++------ src/application.js | 30 ++++++++++++++++++++++++------ 7 files changed, 144 insertions(+), 36 deletions(-) diff --git a/dist/extension.zip b/dist/extension.zip index 72e789a786483892ebbadfa19918875aefbd7579..70fc7357cdf908fa4499a71446505b702b222449 100644 GIT binary patch delta 31058 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 delta 30866 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 { @@ -2340,9 +2345,10 @@ setInterval(() => { const currentPath = getContext().getPath().split("?")[0]; if (currentPath !== lastPath) { - log("Path changed, updating sticky notes: " + currentPath); + log("Path changed from '" + lastPath + "' to '" + currentPath + "'"); lastPath = currentPath; drawStickyNotes(stickyNotes, save, deleteStickyNote); + determineHatUnlock(); } }, URL_CHECK_INTERVAL); @@ -2350,8 +2356,16 @@ focusOnElement(true); - // TODO: This is for testing - insertHat(); + determineHatUnlock(); + } + + function determineHatUnlock() { + if (Math.random() < (HAT_CHANCE * (isPetBoostActive() ? PET_HAT_BOOST : 1))) { + insertHat(); + } else if (location.hostname === "127.0.0.1") { + log("Inserting hat for debug purposes"); + insertHat(); + } } function update() { @@ -2385,7 +2399,7 @@ } // Double the chance of a feather if recently pet - const petMod = Date.now() - lastPetTimestamp < PET_BOOST_DURATION ? PET_FEATHER_BOOST : 1; + const petMod = isPetBoostActive() ? PET_FEATHER_BOOST : 1; if (birb.isVisible() && Math.random() < FEATHER_CHANCE * petMod) { lastPetTimestamp = 0; activateFeather(); @@ -3048,6 +3062,10 @@ } } + function isPetBoostActive() { + return Date.now() - lastPetTimestamp < PET_BOOST_DURATION; + } + /** * @param {number} x * @param {number} y diff --git a/dist/obsidian/main.js b/dist/obsidian/main.js index 716ca26..75e4461 100644 --- a/dist/obsidian/main.js +++ b/dist/obsidian/main.js @@ -2091,7 +2091,6 @@ module.exports = class PocketBird extends Plugin { // Timing constants (in milliseconds) const UPDATE_INTERVAL = 1000 / 60; // 60 FPS const AFK_TIME = isDebug() ? 0 : 1000 * 5; - const PET_BOOST_DURATION = 1000 * 60 * 5; const PET_MENU_COOLDOWN = 1000; const URL_CHECK_INTERVAL = 150; const HOP_DELAY = 500; @@ -2100,10 +2099,15 @@ module.exports = class PocketBird extends Plugin { const HOP_CHANCE = 1 / (60 * 2.5); // Every 2.5 seconds const FOCUS_SWITCH_CHANCE = 1 / (60 * 20); // Every 20 seconds const FEATHER_CHANCE = 1 / (60 * 60 * 60 * 2); // Every 2 hours + const HAT_CHANCE = 1 / 50; // Every 50 webpages // Feathers const FEATHER_FALL_SPEED = 1; + + // Petting boosts + const PET_BOOST_DURATION = 1000 * 60 * 5; // 5 minutes const PET_FEATHER_BOOST = 2; + const PET_HAT_BOOST = 1.5; // Focus element constraints const MIN_FOCUS_ELEMENT_WIDTH = 100; @@ -2354,7 +2358,8 @@ module.exports = class PocketBird extends Plugin { // Currently being pet, don't open menu return; } - insertMenu(menuItems, `${birdBirb().toLowerCase()}OS`, updateMenuLocation); + + insertMenu(menuItems, `${isPetBoostActive() ? " " : ""}${birdBirb().toLowerCase()}OS${isPetBoostActive() ? " ❤" : ""}`, updateMenuLocation); }); birbElement.addEventListener("mouseover", () => { @@ -2383,9 +2388,10 @@ module.exports = class PocketBird extends Plugin { setInterval(() => { const currentPath = getContext().getPath().split("?")[0]; if (currentPath !== lastPath) { - log("Path changed, updating sticky notes: " + currentPath); + log("Path changed from '" + lastPath + "' to '" + currentPath + "'"); lastPath = currentPath; drawStickyNotes(stickyNotes, save, deleteStickyNote); + determineHatUnlock(); } }, URL_CHECK_INTERVAL); @@ -2393,8 +2399,16 @@ module.exports = class PocketBird extends Plugin { focusOnElement(true); - // TODO: This is for testing - insertHat(); + determineHatUnlock(); + } + + function determineHatUnlock() { + if (Math.random() < (HAT_CHANCE * (isPetBoostActive() ? PET_HAT_BOOST : 1))) { + insertHat(); + } else if (location.hostname === "127.0.0.1") { + log("Inserting hat for debug purposes"); + insertHat(); + } } function update() { @@ -2428,7 +2442,7 @@ module.exports = class PocketBird extends Plugin { } // Double the chance of a feather if recently pet - const petMod = Date.now() - lastPetTimestamp < PET_BOOST_DURATION ? PET_FEATHER_BOOST : 1; + const petMod = isPetBoostActive() ? PET_FEATHER_BOOST : 1; if (birb.isVisible() && Math.random() < FEATHER_CHANCE * petMod) { lastPetTimestamp = 0; activateFeather(); @@ -3091,6 +3105,10 @@ module.exports = class PocketBird extends Plugin { } } + function isPetBoostActive() { + return Date.now() - lastPetTimestamp < PET_BOOST_DURATION; + } + /** * @param {number} x * @param {number} y diff --git a/dist/userscript/birb.user.js b/dist/userscript/birb.user.js index 83a501f..c20e185 100644 --- a/dist/userscript/birb.user.js +++ b/dist/userscript/birb.user.js @@ -2053,7 +2053,6 @@ // Timing constants (in milliseconds) const UPDATE_INTERVAL = 1000 / 60; // 60 FPS const AFK_TIME = isDebug() ? 0 : 1000 * 5; - const PET_BOOST_DURATION = 1000 * 60 * 5; const PET_MENU_COOLDOWN = 1000; const URL_CHECK_INTERVAL = 150; const HOP_DELAY = 500; @@ -2062,10 +2061,15 @@ const HOP_CHANCE = 1 / (60 * 2.5); // Every 2.5 seconds const FOCUS_SWITCH_CHANCE = 1 / (60 * 20); // Every 20 seconds const FEATHER_CHANCE = 1 / (60 * 60 * 60 * 2); // Every 2 hours + const HAT_CHANCE = 1 / 50; // Every 50 webpages // Feathers const FEATHER_FALL_SPEED = 1; + + // Petting boosts + const PET_BOOST_DURATION = 1000 * 60 * 5; // 5 minutes const PET_FEATHER_BOOST = 2; + const PET_HAT_BOOST = 1.5; // Focus element constraints const MIN_FOCUS_ELEMENT_WIDTH = 100; @@ -2316,7 +2320,8 @@ // Currently being pet, don't open menu return; } - insertMenu(menuItems, `${birdBirb().toLowerCase()}OS`, updateMenuLocation); + + insertMenu(menuItems, `${isPetBoostActive() ? " " : ""}${birdBirb().toLowerCase()}OS${isPetBoostActive() ? " ❤" : ""}`, updateMenuLocation); }); birbElement.addEventListener("mouseover", () => { @@ -2345,9 +2350,10 @@ setInterval(() => { const currentPath = getContext().getPath().split("?")[0]; if (currentPath !== lastPath) { - log("Path changed, updating sticky notes: " + currentPath); + log("Path changed from '" + lastPath + "' to '" + currentPath + "'"); lastPath = currentPath; drawStickyNotes(stickyNotes, save, deleteStickyNote); + determineHatUnlock(); } }, URL_CHECK_INTERVAL); @@ -2355,8 +2361,16 @@ focusOnElement(true); - // TODO: This is for testing - insertHat(); + determineHatUnlock(); + } + + function determineHatUnlock() { + if (Math.random() < (HAT_CHANCE * (isPetBoostActive() ? PET_HAT_BOOST : 1))) { + insertHat(); + } else if (location.hostname === "127.0.0.1") { + log("Inserting hat for debug purposes"); + insertHat(); + } } function update() { @@ -2390,7 +2404,7 @@ } // Double the chance of a feather if recently pet - const petMod = Date.now() - lastPetTimestamp < PET_BOOST_DURATION ? PET_FEATHER_BOOST : 1; + const petMod = isPetBoostActive() ? PET_FEATHER_BOOST : 1; if (birb.isVisible() && Math.random() < FEATHER_CHANCE * petMod) { lastPetTimestamp = 0; activateFeather(); @@ -3053,6 +3067,10 @@ } } + function isPetBoostActive() { + return Date.now() - lastPetTimestamp < PET_BOOST_DURATION; + } + /** * @param {number} x * @param {number} y diff --git a/dist/web/birb.embed.js b/dist/web/birb.embed.js index 9520421..46f338b 100644 --- a/dist/web/birb.embed.js +++ b/dist/web/birb.embed.js @@ -2033,7 +2033,6 @@ // Timing constants (in milliseconds) const UPDATE_INTERVAL = 1000 / 60; // 60 FPS const AFK_TIME = isDebug() ? 0 : 1000 * 5; - const PET_BOOST_DURATION = 1000 * 60 * 5; const PET_MENU_COOLDOWN = 1000; const URL_CHECK_INTERVAL = 150; const HOP_DELAY = 500; @@ -2042,10 +2041,15 @@ const HOP_CHANCE = 1 / (60 * 2.5); // Every 2.5 seconds const FOCUS_SWITCH_CHANCE = 1 / (60 * 20); // Every 20 seconds const FEATHER_CHANCE = 1 / (60 * 60 * 60 * 2); // Every 2 hours + const HAT_CHANCE = 1 / 50; // Every 50 webpages // Feathers const FEATHER_FALL_SPEED = 1; + + // Petting boosts + const PET_BOOST_DURATION = 1000 * 60 * 5; // 5 minutes const PET_FEATHER_BOOST = 2; + const PET_HAT_BOOST = 1.5; // Focus element constraints const MIN_FOCUS_ELEMENT_WIDTH = 100; @@ -2296,7 +2300,8 @@ // Currently being pet, don't open menu return; } - insertMenu(menuItems, `${birdBirb().toLowerCase()}OS`, updateMenuLocation); + + insertMenu(menuItems, `${isPetBoostActive() ? " " : ""}${birdBirb().toLowerCase()}OS${isPetBoostActive() ? " ❤" : ""}`, updateMenuLocation); }); birbElement.addEventListener("mouseover", () => { @@ -2325,9 +2330,10 @@ setInterval(() => { const currentPath = getContext().getPath().split("?")[0]; if (currentPath !== lastPath) { - log("Path changed, updating sticky notes: " + currentPath); + log("Path changed from '" + lastPath + "' to '" + currentPath + "'"); lastPath = currentPath; drawStickyNotes(stickyNotes, save, deleteStickyNote); + determineHatUnlock(); } }, URL_CHECK_INTERVAL); @@ -2335,8 +2341,16 @@ focusOnElement(true); - // TODO: This is for testing - insertHat(); + determineHatUnlock(); + } + + function determineHatUnlock() { + if (Math.random() < (HAT_CHANCE * (isPetBoostActive() ? PET_HAT_BOOST : 1))) { + insertHat(); + } else if (location.hostname === "127.0.0.1") { + log("Inserting hat for debug purposes"); + insertHat(); + } } function update() { @@ -2370,7 +2384,7 @@ } // Double the chance of a feather if recently pet - const petMod = Date.now() - lastPetTimestamp < PET_BOOST_DURATION ? PET_FEATHER_BOOST : 1; + const petMod = isPetBoostActive() ? PET_FEATHER_BOOST : 1; if (birb.isVisible() && Math.random() < FEATHER_CHANCE * petMod) { lastPetTimestamp = 0; activateFeather(); @@ -3033,6 +3047,10 @@ } } + function isPetBoostActive() { + return Date.now() - lastPetTimestamp < PET_BOOST_DURATION; + } + /** * @param {number} x * @param {number} y diff --git a/dist/web/birb.js b/dist/web/birb.js index 9520421..46f338b 100644 --- a/dist/web/birb.js +++ b/dist/web/birb.js @@ -2033,7 +2033,6 @@ // Timing constants (in milliseconds) const UPDATE_INTERVAL = 1000 / 60; // 60 FPS const AFK_TIME = isDebug() ? 0 : 1000 * 5; - const PET_BOOST_DURATION = 1000 * 60 * 5; const PET_MENU_COOLDOWN = 1000; const URL_CHECK_INTERVAL = 150; const HOP_DELAY = 500; @@ -2042,10 +2041,15 @@ const HOP_CHANCE = 1 / (60 * 2.5); // Every 2.5 seconds const FOCUS_SWITCH_CHANCE = 1 / (60 * 20); // Every 20 seconds const FEATHER_CHANCE = 1 / (60 * 60 * 60 * 2); // Every 2 hours + const HAT_CHANCE = 1 / 50; // Every 50 webpages // Feathers const FEATHER_FALL_SPEED = 1; + + // Petting boosts + const PET_BOOST_DURATION = 1000 * 60 * 5; // 5 minutes const PET_FEATHER_BOOST = 2; + const PET_HAT_BOOST = 1.5; // Focus element constraints const MIN_FOCUS_ELEMENT_WIDTH = 100; @@ -2296,7 +2300,8 @@ // Currently being pet, don't open menu return; } - insertMenu(menuItems, `${birdBirb().toLowerCase()}OS`, updateMenuLocation); + + insertMenu(menuItems, `${isPetBoostActive() ? " " : ""}${birdBirb().toLowerCase()}OS${isPetBoostActive() ? " ❤" : ""}`, updateMenuLocation); }); birbElement.addEventListener("mouseover", () => { @@ -2325,9 +2330,10 @@ setInterval(() => { const currentPath = getContext().getPath().split("?")[0]; if (currentPath !== lastPath) { - log("Path changed, updating sticky notes: " + currentPath); + log("Path changed from '" + lastPath + "' to '" + currentPath + "'"); lastPath = currentPath; drawStickyNotes(stickyNotes, save, deleteStickyNote); + determineHatUnlock(); } }, URL_CHECK_INTERVAL); @@ -2335,8 +2341,16 @@ focusOnElement(true); - // TODO: This is for testing - insertHat(); + determineHatUnlock(); + } + + function determineHatUnlock() { + if (Math.random() < (HAT_CHANCE * (isPetBoostActive() ? PET_HAT_BOOST : 1))) { + insertHat(); + } else if (location.hostname === "127.0.0.1") { + log("Inserting hat for debug purposes"); + insertHat(); + } } function update() { @@ -2370,7 +2384,7 @@ } // Double the chance of a feather if recently pet - const petMod = Date.now() - lastPetTimestamp < PET_BOOST_DURATION ? PET_FEATHER_BOOST : 1; + const petMod = isPetBoostActive() ? PET_FEATHER_BOOST : 1; if (birb.isVisible() && Math.random() < FEATHER_CHANCE * petMod) { lastPetTimestamp = 0; activateFeather(); @@ -3033,6 +3047,10 @@ } } + function isPetBoostActive() { + return Date.now() - lastPetTimestamp < PET_BOOST_DURATION; + } + /** * @param {number} x * @param {number} y diff --git a/src/application.js b/src/application.js index d136947..85ee48c 100644 --- a/src/application.js +++ b/src/application.js @@ -100,7 +100,6 @@ const HOP_DISTANCE = 35; // Timing constants (in milliseconds) const UPDATE_INTERVAL = 1000 / 60; // 60 FPS const AFK_TIME = isDebug() ? 0 : 1000 * 5; -const PET_BOOST_DURATION = 1000 * 60 * 5; const PET_MENU_COOLDOWN = 1000; const URL_CHECK_INTERVAL = 150; const HOP_DELAY = 500; @@ -109,10 +108,15 @@ const HOP_DELAY = 500; const HOP_CHANCE = 1 / (60 * 2.5); // Every 2.5 seconds const FOCUS_SWITCH_CHANCE = 1 / (60 * 20); // Every 20 seconds const FEATHER_CHANCE = 1 / (60 * 60 * 60 * 2); // Every 2 hours +const HAT_CHANCE = 1 / 50; // Every 50 webpages // Feathers const FEATHER_FALL_SPEED = 1; + +// Petting boosts +const PET_BOOST_DURATION = 1000 * 60 * 5; // 5 minutes const PET_FEATHER_BOOST = 2; +const PET_HAT_BOOST = 1.5; // Focus element constraints const MIN_FOCUS_ELEMENT_WIDTH = 100; @@ -363,7 +367,8 @@ function startApplication(birbPixels, featherPixels, hatsPixels) { // Currently being pet, don't open menu return; } - insertMenu(menuItems, `${birdBirb().toLowerCase()}OS`, updateMenuLocation); + + insertMenu(menuItems, `${isPetBoostActive() ? " " : ""}${birdBirb().toLowerCase()}OS${isPetBoostActive() ? " ❤" : ""}`, updateMenuLocation); }); birbElement.addEventListener("mouseover", () => { @@ -392,9 +397,10 @@ function startApplication(birbPixels, featherPixels, hatsPixels) { setInterval(() => { const currentPath = getContext().getPath().split("?")[0]; if (currentPath !== lastPath) { - log("Path changed, updating sticky notes: " + currentPath); + log("Path changed from '" + lastPath + "' to '" + currentPath + "'"); lastPath = currentPath; drawStickyNotes(stickyNotes, save, deleteStickyNote); + determineHatUnlock(); } }, URL_CHECK_INTERVAL); @@ -402,8 +408,16 @@ function startApplication(birbPixels, featherPixels, hatsPixels) { focusOnElement(true); - // TODO: This is for testing - insertHat(); + determineHatUnlock(); + } + + function determineHatUnlock() { + if (Math.random() < (HAT_CHANCE * (isPetBoostActive() ? PET_HAT_BOOST : 1))) { + insertHat(); + } else if (location.hostname === "127.0.0.1") { + log("Inserting hat for debug purposes"); + insertHat(); + } } function update() { @@ -437,7 +451,7 @@ function startApplication(birbPixels, featherPixels, hatsPixels) { } // Double the chance of a feather if recently pet - const petMod = Date.now() - lastPetTimestamp < PET_BOOST_DURATION ? PET_FEATHER_BOOST : 1; + const petMod = isPetBoostActive() ? PET_FEATHER_BOOST : 1; if (birb.isVisible() && Math.random() < FEATHER_CHANCE * petMod) { lastPetTimestamp = 0; activateFeather(); @@ -1114,6 +1128,10 @@ function startApplication(birbPixels, featherPixels, hatsPixels) { } } + function isPetBoostActive() { + return Date.now() - lastPetTimestamp < PET_BOOST_DURATION; + } + /** * @param {number} x * @param {number} y