2/10/2025, 4:39:44 PM
// ==UserScript==
// @name OLO player
// @namespace Violentmonkey Scripts
// @match https://johnbutlergames.com/games/opposite-day**/1-**-0/index.html*
// @grant none
// @version 1.0
// @author John Butler, ppougj
// @description 2/10/2025, 4:39:44 PM
// ==/UserScript==
(function() {
'use strict';
function modifyPlayerDraw() {
if (typeof player !== "undefined" && typeof player.draw === "function") {
console.log("Modifying player draw function...");
player.draw = function() {
let ctx = document.getElementById('canvas').getContext('2d');
var centerX = this.x + this.w / 2;
var centerY = this.y + this.h / 2;
var eyeSpacing = 11;
var eyeSize = 5;
var pupilSize = 2;
var pupilMovement = 1;
var strokeWidth = 2;
var noseWidth = 7;
var noseHeight = 10;
var nosePosition = {x:-2,y:5};
ctx.lineWidth = strokeWidth;
ctx.fillStyle = 'white';
ctx.fillRect(this.x, this.y, this.w, this.h);
ctx.strokeStyle = 'black';
ctx.strokeRect(this.x, this.y, this.w, this.h);
ctx.save();
ctx.translate(centerX,centerY);
ctx.fillStyle = 'black';
ctx.strokeStyle = 'black';
ctx.beginPath();
ctx.arc(-eyeSpacing,0,eyeSize,0,2*Math.PI);
ctx.stroke();
ctx.beginPath();
ctx.arc(eyeSpacing,0,eyeSize,0,2*Math.PI);
ctx.stroke();
ctx.save();
ctx.translate(nosePosition.x,nosePosition.y);
ctx.beginPath();
ctx.moveTo(0,-noseHeight);
ctx.lineTo(0,0);
ctx.lineTo(noseWidth,0);
ctx.stroke();
ctx.restore();
var dir = dirTo(0, 0, this.xmove, this.ymove);
var speed = distTo(0, 0, this.xmove, this.ymove);
speed = Math.min(speed, 5) * (eyeSize-strokeWidth)/5*pupilMovement;
var move = distToMove(speed, dir);
ctx.beginPath();
ctx.arc(-eyeSpacing+move.x,move.y,pupilSize,0,2*Math.PI);
ctx.fill();
ctx.beginPath();
ctx.arc(eyeSpacing+move.x,move.y,pupilSize,0,2*Math.PI);
ctx.fill();
ctx.restore();
};
} else {
setTimeout(modifyPlayerDraw, 500);
}
}
modifyPlayerDraw();
})();