Moves the weapon/item panel from the left side of the attack screen to the right of the character model.
// ==UserScript==
// @name Right Sided Combat
// @namespace right-sided-combat
// @version 1.0.3
// @author peas [3400805]
// @description Moves the weapon/item panel from the left side of the attack screen to the right of the character model.
// @match https://www.torn.com/page.php?sid=attack*
// @run-at document-end
// @license MIT
// ==/UserScript==
(function () {
'use strict';
function isAttackPage() {
return window.location.href.indexOf('sid=attack') !== -1;
}
var repositioned = false;
var pollTimer = null;
function reposition() {
if (repositioned || !isAttackPage()) return;
// The fight layout container uses CSS module naming: playerArea___HASH
// Match on the stable "playerArea" prefix — the hash suffix changes per deploy
var playerArea = document.querySelector('[class*="playerArea"]');
if (!playerArea || playerArea.children.length < 2) return;
// Identify which child is the weapons panel and which is the character/fight panel.
// The character panel contains "start fight"; the weapons panel doesn't.
var weaponsPanel = null;
var fightPanel = null;
for (var i = 0; i < playerArea.children.length; i++) {
var child = playerArea.children[i];
if (child.textContent.toLowerCase().indexOf('start fight') !== -1) {
fightPanel = child;
} else {
weaponsPanel = child;
}
}
if (!weaponsPanel || !fightPanel) return;
// Ensure container stays in horizontal flex layout
playerArea.style.flexDirection = 'row';
// appendChild moves weaponsPanel to the end → right side of character
playerArea.appendChild(weaponsPanel);
repositioned = true;
}
function startPolling() {
if (!isAttackPage()) return;
repositioned = false;
clearInterval(pollTimer);
pollTimer = setInterval(function () {
if (repositioned) { clearInterval(pollTimer); return; }
reposition();
}, 200);
setTimeout(function () { clearInterval(pollTimer); }, 15000);
}
function onNavigate() {
repositioned = false;
startPolling();
}
startPolling();
window.addEventListener('hashchange', onNavigate);
window.addEventListener('popstate', onNavigate);
var lastUrl = window.location.href;
setInterval(function () {
if (window.location.href !== lastUrl) {
lastUrl = window.location.href;
onNavigate();
}
}, 500);
})();