7 Commits

Author SHA1 Message Date
TheCappn f32d74eed4 Updated README 2026-07-06 11:35:26 -04:00
TheCappn e88905d4df Removed old code 2026-07-06 11:28:56 -04:00
TheCappn 3960542eb6 Finalized placement of estimate container. For now... 2026-07-06 11:21:07 -04:00
TheCappn e04594dcec Adjusting position of time estimate 2026-07-06 01:18:29 -04:00
TheCappn fa12847249 Fixed typo with new container 2026-07-05 23:39:18 -04:00
TheCappn 6c6a630853 Fixed new container 2026-07-05 23:32:30 -04:00
TheCappn 3e0ba9a9dd Changed Version Number 2026-07-05 23:01:25 -04:00
2 changed files with 22 additions and 22 deletions
+9
View File
@@ -1,2 +1,11 @@
# Torn-Userscripts # Torn-Userscripts
## A script to help with trading/traveling
### Features
- Calculates your landing time while traveling, prints it in your local time
- Removes useless travel animation and fact wrapper
### Planned features
- Enumerate your travel inventory and provide a value based on W3B market data
- Show stock information about your travel destination
+12 -21
View File
@@ -1,7 +1,7 @@
// ==UserScript== // ==UserScript==
// @name Torn - Arrival Time Predictor // @name Torn - Arrival Time Predictor
// @namespace http://tampermonkey.net/ // @namespace http://tampermonkey.net/
// @version 1.0 // @version 1.02
// @description Calculates and displays the exact local time you will land while traveling // @description Calculates and displays the exact local time you will land while traveling
// @author You // @author You
// @match https://www.torn.com/page.php?sid=travel // @match https://www.torn.com/page.php?sid=travel
@@ -21,6 +21,7 @@
.pulse-text { .pulse-text {
animation: colorPulse 1s infinite ease-in-out; animation: colorPulse 1s infinite ease-in-out;
font-size: 2rem;
} }
`); `);
@@ -41,24 +42,19 @@
function initClockExtension(timerElement) { function initClockExtension(timerElement) {
// Create a custom UI box to display our text safely without breaking Torn's CSS // Create a custom UI box to display our text safely without breaking Torn's CSS
const travelRoot = document.querySelector("#travel-root"); const travelRoot = document.querySelector("#travel-root");
const parentContainer = travelRoot.querySelector('[class^="progressText"]');
// Remove travel fact // Remove travel fact
travelRoot.querySelector('[class^="factWrapper"]').remove(); travelRoot.querySelector('[class^="factWrapper"]').remove();
// Remove flight scene // Remove flight scene
travelRoot.querySelector('[class^="airspaceScene"]').remove(); travelRoot.querySelector('[class^="airspaceScene"]').remove();
const ogTimer = document.querySelector("#travel-root > div.viewport___cdEK9 > div.flightProgressSection___OEJoR > div.progressText___BEQ0k > div > span"); const ogTimer = document.querySelector("#travel-root > div.viewport___cdEK9 > div.flightProgressSection___OEJoR > div.progressText___BEQ0k > div > span");
if (ogTimer) { var timerContainer = null;
ogTimer.style.cssText = 'font-weight: bold; font-size: 1.5rem;'; const timeDisplay = document.createElement('div');
ogTimer.innerText = 'Calculating landing time...'; timeDisplay.style.cssText = 'padding: 10px; margin-top: 10px; color: #fff; text-align: center; border-radius: 5px; font-weight: bold; border: 1px solid #444; transition: color 0.5s ease; font-weight: bold; font-size: 1.5rem;';
} else { //timerElement.parentNode.insertBefore(timeDisplay, timerElement.nextSibling);
const timeDisplay = document.createElement('div'); parentContainer.insertAdjacentElement('beforebegin', timeDisplay);
timeDisplay.style.cssText = 'padding: 10px; margin-top: 10px; color: #fff; text-align: center; border-radius: 5px; font-weight: bold; border: 1px solid #444; transition: color 0.5s ease;'; timeDisplay.innerText = 'Calculating landing time...';
timerElement.parentNode.insertBefore(timeDisplay, timerElement.nextSibling); timerContainer = timeDisplay;
}
//const info = document.querySelector("#travel-root > div.viewport___cdEK9.stage0 > div.factWrapper___LvERA > div");
//info.remove();
// Insert our box right below Torn's native countdown timer
//
// Update the landing time prediction every single second // Update the landing time prediction every single second
setInterval(() => { setInterval(() => {
@@ -75,21 +71,16 @@
const msRemaining = ((hours * 60 * 60) + (minutes * 60) + seconds) * 1000; const msRemaining = ((hours * 60 * 60) + (minutes * 60) + seconds) * 1000;
// Blink the text if time left is < 2 minutes. // Blink the text if time left is < 2 minutes.
if (msRemaining <= 120000) { if (msRemaining <= 120000) {
//ogTimer.style.cssText += ' color: #aa0000;'
// Add the blinking class to the text. // Add the blinking class to the text.
ogTimer.classList.add('pulse-text'); timerContainer.classList.add('pulse-text');
} }
// Add the flight duration to the current system date/time // Add the flight duration to the current system date/time
const landingTime = new Date(Date.now() + msRemaining); const landingTime = new Date(Date.now() + msRemaining);
// Remove OG timer
//ogTimer.remove();
// Format the output neatly (e.g., "16:24:05") // Format the output neatly (e.g., "16:24:05")
ogTimer.innerText = `Estimated Landing: ${landingTime.toLocaleTimeString()}`; timerContainer.innerText = `Estimated Landing: ${landingTime.toLocaleTimeString()}`;
} }
}, 1000); }, 1000);
} }