// ==UserScript==
// @name TusDino || BEST CHROME DINO GAME T-REX MOD MENU CHEAT - (0.16.2)
// @namespace https://github.com/nonumbershere/TusDino
// @homepageURL https://github.com/Case-Clicker-2-Utilities/TusDino-Chrome-Dino-Mod-Menu
// @supportURL https://github.com/Case-Clicker-2-Utilities/TusDino-Chrome-Dino-Mod-Menu/issues
// @homepage https://discord.gg/6eaDrx5J9s
// @version 0.16.2
// @description THE BEST CHROME DINO HACK: SET SPEED, KILL PLAYER, ESP, NO-CLIP, TRACERS, TELEPORT, FLY +MORE EXPLOITS
// @author Lapide (Lapide#0853), inon13 (inon13#0163)
// @license MIT
// @match *://chromedino.com/*
// @match *://dino-chrome.com/*
// @match *://tuckercraig.com/dino/*
// @match *://elgoog.im/t-rex/*
// @match *://www.dinogame.net/*
// @match chrome://dino
// @match *://elgoog.im/t-rex/v2/*
// @match *://nointernetgame.com/*
// @match *://chromedino.io/
// @match *://trex-runner.com/*
// @match *://24glo.com/game/dino-play.html
// @match *://fivesjs.skipser.com/trex-game/
// @require https://cdn.jsdelivr.net/npm/sweetalert2@11
// @icon https://github.com/Case-Clicker-2-Utilities/TusDino-Chrome-Dino-Mod-Menu/blob/main/assets/Logo.png?raw=true
// @run-at document-start
// @grant unsafeWindow
// @grant GM_info
// ==/UserScript==
(function() {
console.log("Running Tusdino...");
var showDiscord = true;
var info_ = GM_info;
// Loading
// Cheat
function cont() {
function applyScript(src) {
var b = document.createElement('script');
b.src = src;
document.body.append(b);
b.remove();
}
const HSLToRGB = (h, s, l) => {
s /= 100;
l /= 100;
const k = n => (n + h / 30) % 12;
const a = s * Math.min(l, 1 - l);
const f = n =>
l - a * Math.max(-1, Math.min(k(n) - 3, Math.min(9 - k(n), 1)));
return [255 * f(0), 255 * f(8), 255 * f(4)];
};
applyScript('https://cdn.jsdelivr.net/npm/toastify-js');
var oldKeyDown = Runner.instance_.onKeyDown;
var oldstartJump = Runner.instance_.tRex.startJump;
// Addons
var npso = 0;
unsafeWindow.tusdino = {
cheats: {
autoplayer: false,
fly: false,
walk:false,
allowFlyMode: false,
rainbowSquarePlayer: false,
esp: false,
objectEsp: false,
tracer: false,
notifier: false,
noobstacles: false,
invisibility: false,
noclip: false,
obstacleBypass: false,
obstacleFloat: false,
duckAndJump: false,
glow: false,
bhop: false,
rainbowglow: false,
obliterate: false,
mute: false,
forcepause: false,
stormcloud: false,
airjump: false,
duckjump: false,
watermark: true,
lazervisual: false,
lazer: false,
lazerv: false
},
alert: function alert_(title = '', description = '', alertonclick = function() {}) {
tusdino.logs.success("Showing alert box ("+title+")");
var styl = document.createElement('style');
styl.innerHTML = '*:not(body,head,center,script,html,.alertbox,#pages,.standard-nav,#loading,#menu) {filter:blur(1px);pointer-events:none}';
document.body.append(styl);
var i = document.createElement('div');
++npso;
i.className = 'alertbox'
i.innerHTML = `<div class="alertbox" style="
border-radius: 16px;
top: 50%;
left: 50%;
transform: translate(-50%, -50%) scale(0.8);
position: fixed;
font-weight: bolder;
z-index: 10000000;
transform-origin: center center;
width: 782px;
color: white;
background: #2c4470;
border: solid 0.1px blue;
"><br><center><h3 class="alertbox" style="
font-size: 33px;
margin:0;
">${title}</h3></center><center><hr class="alertbox" style="
width: 180px;
border-color: #ffffff;
"></center><br> <center><div class="alertbox alertboxbox" style="
font-size: 20px;
"><p class = "alertbox" style = "width: 509px;font-size: 19px">${description}</p><button class="alertbox" style="
background: #3737a9;
border: none;
margin-top: 20px;
padding: 13px;
color: white;
font-size: 18px;
border-radius: 11px;
padding-right: 36px;
padding-left: 36px;
font-weight:bolder;
cursor: pointer;
" id="remover${npso}">OK</button></div><br></center></div>`;
document.body.append(i);
i.style.left = innerWidth - (250 * 6 - 50) + "px";
document.getElementById('remover' + npso).addEventListener('click', function() {
styl.remove();
i.remove();
alertonclick();
});
},
hacked: {
Trex: function(canvas, spritePos) {
this.canvas = canvas;
this.canvasCtx = canvas.getContext('2d');
this.spritePos = this.spritePos || spritePos;
this.xPos = this.xPos || 0;
this.yPos = this.yPos || 0;
this.groundYPos = this.groundYPos || 0;
this.currentFrame = this.currentFrame || 0;
this.currentAnimFrames = this.currentAnimFrames || [];
this.blinkDelay = this.blinkDelay || 0;
this.animStartTime = this.animStartTime || 0;
this.timer = 0;
this.msPerFrame = 1000 / FPS;
this.config = tusdino.hacked.Trex.config;
this.status = tusdino.hacked.Trex.status.WAITING;
this.jumping = false;
this.ducking = false;
this.jumpVelocity = 0;
this.reachedMinHeight = false;
this.speedDrop = false;
this.jumpCount = 0;
this.jumpspotX = 0;
this.init()
},
gameOver: function() {
if (!tusdino.cheats.noclip) {
this.playSound(this.soundFx.HIT);
vibrate(200);
this.stop();
this.crashed = true;
this.distanceMeter.acheivement = false;
var cscr = document.getElementById("currentScore");
cscr.innerText = currentScore;
var sb = document.getElementById("shareBlock");
sb.style.display = 'none'; // block
this.tRex.update(100, Trex.status.CRASHED);
if (!this.gameOverPanel) {
this.gameOverPanel = new GameOverPanel(this.canvas, this.spriteDef.TEXT_SPRITE, this.spriteDef.RESTART, this.dimensions)
} else {
this.gameOverPanel.draw()
}
if (this.distanceRan > this.highestScore) {
this.highestScore = Math.ceil(this.distanceRan);
this.distanceMeter.setHighScore(this.highestScore);
currentScore = Math.round(this.highestScore * 0.025);
try {
cscr.innerText = currentScore;
} catch(e){
}
var score_d = 0;
if (document.getElementById("score-5") !== null) {
score_d = document.getElementById("score-5").innerHTML
}
try {
if (currentScore > score_d) {
var xhr = new XMLHttpRequest();
xhr.open('GET', '/inc/check.php?score=' + currentScore, false);
xhr.send();
if (xhr.status != 200) {} else {
if (xhr.responseText != '') {
if (user_name == '') {
user_name = prompt(xhr.responseText, 'Anonym');
if (user_name == 'null' || user_name == '') {
user_name = 'Anonym'
}
} else {
alert(xhr.responseText)
}
xhr.open('GET', '/inc/set.php?name=' + user_name + '&score=' + currentScore, false);
xhr.send();
//location.reload()
}
}
}
} catch(e){
}
}
this.time = getTimeStamp()
}
},
Obstacle: function(canvasCtx, type, spriteImgPos, dimensions, gapCoefficient, speed) {
this.canvasCtx = canvasCtx;
this.spritePos = spriteImgPos;
this.typeConfig = type;
this.gapCoefficient = gapCoefficient;
this.size = getRandomNum(1, Obstacle.MAX_OBSTACLE_LENGTH);
this.dimensions = dimensions;
this.remove = false;
this.xPos = 0;
this.yPos = 0;
this.width = 0;
this.collisionBoxes = [];
this.gap = 0;
this.speedOffset = 0;
this.currentFrame = 0;
this.timer = 0;
this.init(speed)
},
DistanceMeter: function DistanceMeter(canvas, spritePos, canvasWidth) {
this.canvas = canvas;
this.canvasCtx = canvas.getContext('2d');
this.image = Runner.imageSprite;
this.spritePos = spritePos;
this.x = 0;
this.y = 5;
this.currentDistance = 0;
this.maxScore = 0;
this.highScore = 0;
this.container = null;
this.digits = [];
this.acheivement = false;
this.defaultString = '';
this.flashTimer = 0;
this.flashIterations = 0;
this.config = DistanceMeter.config;
this.maxScoreUnits = this.config.MAX_DISTANCE_UNITS;
this.init(canvasWidth)
},
Horizon: function Horizon(canvas, spritePos, dimensions, gapCoefficient) {
this.canvas = canvas;
this.canvasCtx = this.canvas.getContext('2d');
this.config = Horizon.config;
this.dimensions = dimensions;
this.gapCoefficient = gapCoefficient;
this.obstacles = [];
this.obstacleHistory = [];
this.horizonOffsets = [0, 0];
this.cloudFrequency = this.config.CLOUD_FREQUENCY;
this.spritePos = spritePos;
this.clouds = [];
this.cloudSpeed = this.config.BG_CLOUD_SPEED;
this.horizonLine = null;
this.init()
}
},
onclick: function(id, func) {
console.log("Applying click to: "+id);
document.getElementById(id).addEventListener('click', function(e) {
func(e);
});
document.getElementById(id).addEventListener('focus', function() {
this.blur();
})
},
saved: {
clearCanvas: Runner.instance_.clearCanvas,
gameOver: Runner.instance_.gameOver,
update: Runner.instance_.update,
startGame: Runner.instance_.startGame,
trexDraw: Runner.instance_.tRex.draw,
playSound: Runner.instance_.playSound,
addNewObstacle: Runner.instance_.horizon.addNewObstacle,
CACTUS_LARGE: Runner.instance_.horizon.spritePos.CACTUS_LARGE,
CACTUS_SMALL: Runner.instance_.horizon.spritePos.CACTUS_SMALL,
PTERODACTYL: Runner.instance_.horizon.spritePos.PTERODACTYL,
TREX: Runner.instance_.horizon.spritePos.TREX
},
modules: {
onGround: false,
isPlaying: false
},
msg: function(text) {
Toastify({
text: text,
duration: 2000,
close: true,
gravity: "bottom", // `top` or `bottom`
position: "left", // `left`, `center` or `right`
stopOnFocus: true, // Prevents dismissing of toast on hover
style: {
background: "#343434",
},
onClick: function(){} // Callback after click
}).showToast();
},
setclick: function(id, func) {
document.getElementById(id, function(e) {
func(e);
})
},
config: {
hotkeys: {
togglemenu: "j"
}
},
logs: {
sent: [],
default: function(text) {
console.log('%c['+'%cTusDino'+'%c] '+'%c'+text, 'color: #2b6eba','color: #2ba5ba','color: #2b6eba', 'color: white');
this.sent.push({type: 'default', text: text});
},
success: function(text) {
console.log('%c['+'%cTusDinoSuccess'+'%c] '+'%c'+text, 'color: #58ba2b','color: #2bba62','color: #58ba2b', 'color: white');
this.sent.push({type: 'success', text: text});
},
error: function(text) {
console.log('%c['+'%cTusDinoError'+'%c] '+'%c'+text, 'color: #ba2b2b','color: #ba402b','color: #ba2b2b', 'color: white');
this.sent.push({type: 'error', text: text});
}
},
info: {
version: info_.script.version,
description: info_.script.description,
}
};
var d = document.createElement('link');
d.href = "https://cdn.jsdelivr.net/npm/toastify-js/src/toastify.min.css";
function getRandomNum(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min
}
function vibrate(duration) {
if (IS_MOBILE && window.navigator.vibrate) {
window.navigator.vibrate(duration)
}
}
function createCanvas(container, width, height, opt_classname) {
var canvas = document.createElement('canvas');
canvas.className = opt_classname ? Runner.classes.CANVAS + ' ' + opt_classname : Runner.classes.CANVAS;
canvas.width = width;
canvas.height = height;
container.appendChild(canvas);
return canvas
}
function decodeBase64ToArrayBuffer(base64String) {
var len = (base64String.length / 4) * 3;
var str = atob(base64String);
var arrayBuffer = new ArrayBuffer(len);
var bytes = new Uint8Array(arrayBuffer);
for (var i = 0; i < len; i++) {
bytes[i] = str.charCodeAt(i)
}
return bytes.buffer
}
function getTimeStamp() {
//return IS_IOS ? new Date().getTime() : performance.now()
return new Date().getTime(); // Safari 5.17 Fix 12.06.17
}
function GameOverPanel(canvas, textImgPos, restartImgPos, dimensions) {
this.canvas = canvas;
this.canvasCtx = canvas.getContext('2d');
this.canvasDimensions = dimensions;
this.textImgPos = textImgPos;
this.restartImgPos = restartImgPos;
this.draw()
};
GameOverPanel.dimensions = {
TEXT_X: 0,
TEXT_Y: 13,
TEXT_WIDTH: 191,
TEXT_HEIGHT: 11,
RESTART_WIDTH: 36,
RESTART_HEIGHT: 32
};
GameOverPanel.prototype = {
updateDimensions: function(width, opt_height) {
this.canvasDimensions.WIDTH = width;
if (opt_height) {
this.canvasDimensions.HEIGHT = opt_height
}
},
draw: function() {
var dimensions = GameOverPanel.dimensions;
var centerX = this.canvasDimensions.WIDTH / 2;
var textSourceX = dimensions.TEXT_X;
var textSourceY = dimensions.TEXT_Y;
var textSourceWidth = dimensions.TEXT_WIDTH;
var textSourceHeight = dimensions.TEXT_HEIGHT;
var textTargetX = Math.round(centerX - (dimensions.TEXT_WIDTH / 2));
var textTargetY = Math.round((this.canvasDimensions.HEIGHT - 25) / 3);
var textTargetWidth = dimensions.TEXT_WIDTH;
var textTargetHeight = dimensions.TEXT_HEIGHT;
var restartSourceWidth = dimensions.RESTART_WIDTH;
var restartSourceHeight = dimensions.RESTART_HEIGHT;
var restartTargetX = centerX - (dimensions.RESTART_WIDTH / 2);
var restartTargetY = this.canvasDimensions.HEIGHT / 2;
if (IS_HIDPI) {
textSourceY *= 2;
textSourceX *= 2;
textSourceWidth *= 2;
textSourceHeight *= 2;
restartSourceWidth *= 2;
restartSourceHeight *= 2
}
textSourceX += this.textImgPos.x;
textSourceY += this.textImgPos.y;
this.canvasCtx.drawImage(Runner.imageSprite, textSourceX, textSourceY, textSourceWidth, textSourceHeight, textTargetX, textTargetY, textTargetWidth, textTargetHeight);
this.canvasCtx.drawImage(Runner.imageSprite, this.restartImgPos.x, this.restartImgPos.y, restartSourceWidth, restartSourceHeight, restartTargetX, restartTargetY, dimensions.RESTART_WIDTH, dimensions.RESTART_HEIGHT)
}
};
d.rel = 'stylesheet';
document.body.append(d);
var window = unsafeWindow;
var Update = 2;
var startBhop = true;
var jum = true;
var duc = true
var xSpeed = 1;
var ySpeed = 1;
var goflydown = false;
var goflyup = false;
var goright = false;
var goleft = false;
var tt = true;
var y = Runner.instance_.tRex.yPos;
var x = Runner.instance_.tRex.xPos;
setInterval(function() {
tusdino.modules.onGround = Runner.instance_.tRex.yPos == Runner.instance_.tRex.groundYPos;
tusdino.modules.isPlaying = Runner.instance_.activated;
if (tusdino.cheats.bhop && startBhop) {
if (tusdino.modules.onGround && tusdino.modules.isPlaying) {
startBhop = false;
Runner.instance_.tRex.startJump(Runner.instance_.currentSpeed);
Runner.instance_.playSound(Runner.instance_.soundFx.BUTTON_PRESS);
}
}
if (!startBhop) {
if (!tusdino.modules.onGround) {
startBhop = true;
}
}
if (tusdino.cheats.stormcloud) {
Runner.instance_.horizon.addCloud()
}
if (tusdino.cheats.invisibility) {
Runner.instance_.tRex.spritePos={};
}
if (tusdino.cheats.noobstacles) {
Runner.instance_.horizon.spritePos.CACTUS_LARGE={};
Runner.instance_.horizon.spritePos.CACTUS_SMALL={};
Runner.instance_.horizon.spritePos.PTERODACTYL={};
Runner.instance_.horizon.obstacles = [];
}
if (tusdino.cheats.walk) {
if (goright) {
x += xSpeed;
}
if (goleft) {
x -= xSpeed;
}
Runner.instance_.tRex.xPos = x;
}
if (tusdino.cheats.fly) {
if (tt) {
if (Runner.instance_.tRex.yPos < 30) {
if (Runner.instance_.tRex.yPos != 30) {
y += 1
} else {
tt = false
}
} else {
if (Runner.instance_.tRex.yPos != 30) {
y -= 1;
} else {
tt = false
}
}
} else {
tusdino.cheats.allowFlyMode = true;
}
if (goflyup) {
y += ySpeed;
}
if (goflydown) {
y -= ySpeed;
}
Runner.instance_.tRex.yPos = y;
}
if (tusdino.cheats.autoplayer) {
var tRex = Runner.instance_.tRex;
var obstacles = Runner.instance_.horizon.obstacles;
if (Runner.instance_.horizon.obstacles[0] && Runner.instance_.horizon.obstacles[0].typeConfig.type == 'PTERODACTYL' && Runner.instance_.horizon.obstacles[0].yPos < 75) {
if (!tRex.jumping && (obstacles.length > 0) && (obstacles[0].xPos + obstacles[0].width) <= ((parseInt(Runner.instance_.currentSpeed - 0.1) - 5) * 34 + 160) && (obstacles[0].xPos + obstacles[0].width) > 20) {
if (duc) Runner.instance_.tRex.setDuck(true); duc = false;
setTimeout(()=>{Runner.instance_.tRex.setDuck(false); duc = true}, 1500);
}
} else {
if (obstacles[0] && !tRex.jumping && (obstacles.length > 0) && (obstacles[0].xPos + obstacles[0].width) <= ((parseInt(Runner.instance_.currentSpeed - 0.1) - 5) * 34 + 160) && (obstacles[0].xPos + obstacles[0].width) > 20) {
if (jum) {
if (duc) duc = false; Runner.instance_.tRex.setDuck(false); duc = true;
Runner.instance_.playSound(Runner.instance_.soundFx.BUTTON_PRESS);
tRex.startJump(Runner.instance_.currentSpeed);
}
}
}
}
}, Update);
Runner.instance_.horizon.addNewObstacle = function(currentSpeed) {
tusdino.saved.addNewObstacle.bind(this)(currentSpeed);
}
Runner.instance_.playSound = function(soundBuffer) {
if (!tusdino.cheats.mute) {
tusdino.saved.playSound.bind(this)(soundBuffer);
}
}
function checkForCollision(obstacle, tRex, opt_canvasCtx) {
var obstacleBoxXPos = Runner.defaultDimensions.WIDTH + obstacle.xPos;
var tRexBox = new CollisionBox(tRex.xPos + 1, tRex.yPos + 1, tRex.config.WIDTH - 2, tRex.config.HEIGHT - 2);
var obstacleBox = new CollisionBox(obstacle.xPos + 1, obstacle.yPos + 1, obstacle.typeConfig.width * obstacle.size - 2, obstacle.typeConfig.height - 2);
if (opt_canvasCtx) {
drawCollisionBoxes(opt_canvasCtx, tRexBox, obstacleBox)
}
if (boxCompare(tRexBox, obstacleBox)) {
var collisionBoxes = obstacle.collisionBoxes;
var tRexCollisionBoxes = tRex.ducking ? Trex.collisionBoxes.DUCKING : Trex.collisionBoxes.RUNNING;
for (var t = 0; t < tRexCollisionBoxes.length; t++) {
for (var i = 0; i < collisionBoxes.length; i++) {
var adjTrexBox = createAdjustedCollisionBox(tRexCollisionBoxes[t], tRexBox);
var adjObstacleBox = createAdjustedCollisionBox(collisionBoxes[i], obstacleBox);
var crashed = boxCompare(adjTrexBox, adjObstacleBox);
if (opt_canvasCtx) {
drawCollisionBoxes(opt_canvasCtx, adjTrexBox, adjObstacleBox)
}
if (crashed) {
return [adjTrexBox, adjObstacleBox]
}
}
}
}
return false
};
function createAdjustedCollisionBox(box, adjustment) {
return new CollisionBox(box.x + adjustment.x, box.y + adjustment.y, box.width, box.height)
};
function drawCollisionBoxes(canvasCtx, tRexBox, obstacleBox) {
canvasCtx.save();
canvasCtx.strokeStyle = '#f00';
canvasCtx.strokeRect(tRexBox.x, tRexBox.y, tRexBox.width, tRexBox.height);
canvasCtx.strokeStyle = '#0f0';
canvasCtx.strokeRect(obstacleBox.x, obstacleBox.y, obstacleBox.width, obstacleBox.height);
canvasCtx.restore()
};
function boxCompare(tRexBox, obstacleBox) {
var crashed = false;
var tRexBoxX = tRexBox.x;
var tRexBoxY = tRexBox.y;
var obstacleBoxX = obstacleBox.x;
var obstacleBoxY = obstacleBox.y;
if (tRexBox.x < obstacleBoxX + obstacleBox.width && tRexBox.x + tRexBox.width > obstacleBoxX && tRexBox.y < obstacleBox.y + obstacleBox.height && tRexBox.height + tRexBox.y > obstacleBox.y) {
crashed = true
}
return crashed
};
function CollisionBox(x, y, w, h) {
this.x = x;
this.y = y;
this.width = w;
this.height = h
};
Runner.instance_.gameOver = tusdino.hacked.gameOver;
tusdino.hacked.Trex.config = {
DROP_VELOCITY: -5,
GRAVITY: 0.6,
HEIGHT: 47,
HEIGHT_DUCK: 25,
INIITAL_JUMP_VELOCITY: -10,
INTRO_DURATION: 1500,
MAX_JUMP_HEIGHT: 30,
MIN_JUMP_HEIGHT: 30,
SPEED_DROP_COEFFICIENT: 3,
SPRITE_WIDTH: 262,
START_X_POS: 50,
WIDTH: 44,
WIDTH_DUCK: 59
};
tusdino.hacked.Trex.collisionBoxes = {
DUCKING: [new CollisionBox(1, 18, 55, 25)],
RUNNING: [new CollisionBox(22, 0, 17, 16), new CollisionBox(1, 18, 30, 9), new CollisionBox(10, 35, 14, 8), new CollisionBox(1, 24, 29, 5), new CollisionBox(5, 30, 21, 4), new CollisionBox(9, 34, 15, 4)]
};
tusdino.hacked.Trex.status = {
CRASHED: 'CRASHED',
DUCKING: 'DUCKING',
JUMPING: 'JUMPING',
RUNNING: 'RUNNING',
WAITING: 'WAITING'
};
if (!localStorage.joinedDiscordtusdino && showDiscord) {
var f = confirm("Do you wan't to join the Discord server? (You can request, report bugs or inform the owner about something)");
if (f) {
localStorage.setItem('joinedDiscordtusdino', true);
open('https://discord.gg/6eaDrx5J9s');
alert("Thank you for joining the Discord server!");
} else {
alert("Alright, we'll ask you next time. You can disable this in the userscript, replace true with false: var showDiscord = true;");
}
}
tusdino.hacked.Trex.BLINK_TIMING = 7000;
tusdino.hacked.Trex.animFrames = {
WAITING: {
frames: [44, 0],
msPerFrame: 1000 / 3
},
RUNNING: {
frames: [88, 132],
msPerFrame: 1000 / 12
},
CRASHED: {
frames: [220],
msPerFrame: 1000 / 60
},
JUMPING: {
frames: [0],
msPerFrame: 1000 / 60
},
DUCKING: {
frames: [262, 321],
msPerFrame: 1000 / 8
}
};
tusdino.hacked.Trex.prototype = {
init: function() {
this.blinkDelay = this.setBlinkDelay();
this.groundYPos = Runner.defaultDimensions.HEIGHT - this.config.HEIGHT - Runner.config.BOTTOM_PAD;
this.yPos = this.groundYPos;
this.minJumpHeight = this.groundYPos - this.config.MIN_JUMP_HEIGHT;
this.draw(0, 0);
this.update(0, Trex.status.WAITING)
},
setJumpVelocity: function(setting) {
this.config.INIITAL_JUMP_VELOCITY = -setting;
this.config.DROP_VELOCITY = -setting / 2
},
update: function(deltaTime, opt_status) {
this.timer += deltaTime;
if (opt_status) {
this.status = opt_status;
this.currentFrame = 0;
this.msPerFrame = Trex.animFrames[opt_status].msPerFrame;
this.currentAnimFrames = Trex.animFrames[opt_status].frames;
if (opt_status == Trex.status.WAITING) {
this.animStartTime = getTimeStamp();
this.setBlinkDelay()
}
}
if (this.playingIntro && this.xPos < this.config.START_X_POS) {
this.xPos += Math.round((this.config.START_X_POS / this.config.INTRO_DURATION) * deltaTime)
}
if (this.status == Trex.status.WAITING) {
this.blink(getTimeStamp())
} else {
this.draw(this.currentAnimFrames[this.currentFrame], 0)
}
if (this.timer >= this.msPerFrame) {
this.currentFrame = this.currentFrame == this.currentAnimFrames.length - 1 ? 0 : this.currentFrame + 1;
this.timer = 0
}
if (this.speedDrop && this.yPos == this.groundYPos) {
this.speedDrop = false;
this.setDuck(true)
}
},
draw: function(x, y) {
var sourceX = x;
var sourceY = y;
var sourceWidth = this.ducking && this.status != Trex.status.CRASHED ? this.config.WIDTH_DUCK : this.config.WIDTH;
var sourceHeight = this.config.HEIGHT;
if (IS_HIDPI) {
sourceX *= 2;
sourceY *= 2;
sourceWidth *= 2;
sourceHeight *= 2
}
sourceX += this.spritePos.x;
sourceY += this.spritePos.y;
if (this.ducking && this.status != Trex.status.CRASHED) {
this.canvasCtx.drawImage(Runner.imageSprite, sourceX, sourceY, sourceWidth, sourceHeight, this.xPos, this.yPos, this.config.WIDTH_DUCK, this.config.HEIGHT)
} else {
if (this.ducking && this.status == Trex.status.CRASHED) {
this.xPos++
}
this.canvasCtx.drawImage(Runner.imageSprite, sourceX, sourceY, sourceWidth, sourceHeight, this.xPos, this.yPos, this.config.WIDTH, this.config.HEIGHT)
}
},
setBlinkDelay: function() {
this.blinkDelay = Math.ceil(Math.random() * Trex.BLINK_TIMING)
},
blink: function(time) {
var deltaTime = time - this.animStartTime;
if (deltaTime >= this.blinkDelay) {
this.draw(this.currentAnimFrames[this.currentFrame], 0);
if (this.currentFrame == 1) {
this.setBlinkDelay();
this.animStartTime = time
}
}
},
startJump: function(speed) {
if (!this.jumping) {
this.update(0, Trex.status.JUMPING);
this.jumpVelocity = this.config.INIITAL_JUMP_VELOCITY - (speed / 10);
this.jumping = true;
this.reachedMinHeight = false;
this.speedDrop = false
}
},
endJump: function() {
if (this.reachedMinHeight && this.jumpVelocity < this.config.DROP_VELOCITY) {
this.jumpVelocity = this.config.DROP_VELOCITY
}
},
updateJump: function(deltaTime, speed) {
var msPerFrame = Trex.animFrames[this.status].msPerFrame;
var framesElapsed = deltaTime / msPerFrame;
if (this.speedDrop) {
this.yPos += Math.round(this.jumpVelocity * this.config.SPEED_DROP_COEFFICIENT * framesElapsed)
} else {
this.yPos += Math.round(this.jumpVelocity * framesElapsed)
}
this.jumpVelocity += this.config.GRAVITY * framesElapsed;
if (this.yPos < this.minJumpHeight || this.speedDrop) {
this.reachedMinHeight = true
}
if (this.yPos < this.config.MAX_JUMP_HEIGHT || this.speedDrop) {
this.endJump()
}
if (this.yPos > this.groundYPos) {
this.reset();
this.jumpCount++
}
this.update(deltaTime)
},
setSpeedDrop: function() {
this.speedDrop = true;
this.jumpVelocity = 1
},
setDuck: function(isDucking) {
if (isDucking && this.status != Trex.status.DUCKING) {
this.update(0, Trex.status.DUCKING);
this.ducking = true
} else if (this.status == Trex.status.DUCKING) {
this.update(0, Trex.status.RUNNING);
this.ducking = false
}
},
reset: function() {
this.yPos = this.groundYPos;
this.jumpVelocity = 0;
this.jumping = false;
this.ducking = false;
this.update(0, Trex.status.RUNNING);
this.midair = false;
this.speedDrop = false;
this.jumpCount = 0
}
};
function getTimeStamp() {
//return IS_IOS ? new Date().getTime() : performance.now()
return new Date().getTime(); // Safari 5.17 Fix 12.06.17
}
function hackedInit() {
this.horizon = new tusdino.hacked.Horizon(this.canvas, this.spriteDef, this.dimensions, this.config.GAP_COEFFICIENT);
this.distanceMeter = new tusdino.hacked.DistanceMeter(this.canvas, this.spriteDef.TEXT_SPRITE, this.dimensions.WIDTH);
this.tRex = new tusdino.hacked.Trex(this.canvas, this.spriteDef.TREX);
}
tusdino.hacked.Obstacle.MAX_GAP_COEFFICIENT = 1.5;
tusdino.hacked.Obstacle.MAX_OBSTACLE_LENGTH = 3;
tusdino.hacked.Obstacle.prototype = {
init: function(speed) {
this.cloneCollisionBoxes();
if (this.size > 1 && this.typeConfig.multipleSpeed > speed) {
this.size = 1
}
this.width = this.typeConfig.width * this.size;
this.xPos = this.dimensions.WIDTH - this.width;
if (Array.isArray(this.typeConfig.yPos)) {
var yPosConfig = IS_MOBILE ? this.typeConfig.yPosMobile : this.typeConfig.yPos;
this.yPos = yPosConfig[getRandomNum(0, yPosConfig.length - 1)]
} else {
this.yPos = this.typeConfig.yPos
}
this.draw();
if (this.size > 1) {
this.collisionBoxes[1].width = this.width - this.collisionBoxes[0].width - this.collisionBoxes[2].width;
this.collisionBoxes[2].x = this.width - this.collisionBoxes[2].width
}
if (this.typeConfig.speedOffset) {
this.speedOffset = Math.random() > 0.5 ? this.typeConfig.speedOffset : -this.typeConfig.speedOffset
}
this.gap = this.getGap(this.gapCoefficient, speed)
},
draw: function() {
var sourceWidth = this.typeConfig.width;
var sourceHeight = this.typeConfig.height;
if (IS_HIDPI) {
sourceWidth = sourceWidth * 2;
sourceHeight = sourceHeight * 2
}
var sourceX = (sourceWidth * this.size) * (0.5 * (this.size - 1)) + this.spritePos.x;
if (this.currentFrame > 0) {
sourceX += sourceWidth * this.currentFrame
}
this.canvasCtx.drawImage(Runner.imageSprite, sourceX, this.spritePos.y, sourceWidth * this.size, sourceHeight, this.xPos, this.yPos, this.typeConfig.width * this.size, this.typeConfig.height)
},
update: function(deltaTime, speed) {
if (!this.remove) {
if (this.typeConfig.speedOffset) {
speed += this.speedOffset
}
this.xPos -= Math.floor((speed * FPS / 1000) * deltaTime);
if (this.typeConfig.numFrames) {
this.timer += deltaTime;
if (this.timer >= this.typeConfig.frameRate) {
this.currentFrame = this.currentFrame == this.typeConfig.numFrames - 1 ? 0 : this.currentFrame + 1;
this.timer = 0
}
}
this.draw();
if (!this.isVisible()) {
this.remove = true
}
}
},
getGap: function(gapCoefficient, speed) {
var minGap = Math.round(this.width * speed + this.typeConfig.minGap * gapCoefficient);
var maxGap = Math.round(minGap * Obstacle.MAX_GAP_COEFFICIENT);
return getRandomNum(minGap, maxGap)
},
isVisible: function() {
return this.xPos + this.width > 0
},
cloneCollisionBoxes: function() {
var collisionBoxes = this.typeConfig.collisionBoxes;
for (var i = collisionBoxes.length - 1; i >= 0; i--) {
this.collisionBoxes[i] = new CollisionBox(collisionBoxes[i].x, collisionBoxes[i].y, collisionBoxes[i].width, collisionBoxes[i].height)
}
}
};
tusdino.hacked.Obstacle.types = [{
type: 'CACTUS_SMALL',
width: 17,
height: 35,
yPos: 105,
multipleSpeed: 4,
minGap: 120,
minSpeed: 0,
collisionBoxes: [new CollisionBox(0, 7, 5, 27), new CollisionBox(4, 0, 6, 34), new CollisionBox(10, 4, 7, 14)]
}, {
type: 'CACTUS_LARGE',
width: 25,
height: 50,
yPos: 90,
multipleSpeed: 7,
minGap: 120,
minSpeed: 0,
collisionBoxes: [new CollisionBox(0, 12, 7, 38), new CollisionBox(8, 0, 7, 49), new CollisionBox(13, 10, 10, 38)]
}, {
type: 'PTERODACTYL',
width: 46,
height: 40,
yPos: [100, 75, 50],
yPosMobile: [100, 50],
multipleSpeed: 999,
minSpeed: 8.5,
minGap: 150,
collisionBoxes: [new CollisionBox(15, 15, 16, 5), new CollisionBox(18, 21, 24, 6), new CollisionBox(2, 14, 4, 3), new CollisionBox(6, 10, 4, 7), new CollisionBox(10, 8, 6, 9)],
numFrames: 2,
frameRate: 1000 / 6,
speedOffset: .8
}];
var DEFAULT_WIDTH = 600;
Runner.instance_.horizon.addNewObstacle = function(currentSpeed) {
var obstacleTypeIndex = getRandomNum(0, Obstacle.types.length - 1);
var obstacleType = tusdino.hacked.Obstacle.types[obstacleTypeIndex];
if (this.duplicateObstacleCheck(obstacleType.type) || currentSpeed < obstacleType.minSpeed) {
this.addNewObstacle(currentSpeed)
} else {
var obstacleSpritePos = this.spritePos[obstacleType.type];
this.obstacles.push(new Obstacle(this.canvasCtx, obstacleType, obstacleSpritePos, this.dimensions, this.gapCoefficient, currentSpeed));
this.obstacleHistory.unshift(obstacleType.type);
if (this.obstacleHistory.length > 1) {
this.obstacleHistory.splice(Runner.config.MAX_OBSTACLE_DUPLICATION)
}
}
};
var FPS = 60;
var IS_HIDPI = window.devicePixelRatio > 1;
var IS_IOS = window.navigator.userAgent.indexOf('CriOS') > -1 || window.navigator.userAgent == 'UIWebViewForStaticFileContent';
var IS_MOBILE = window.navigator.userAgent.indexOf('Mobi') > -1 || IS_IOS;
var IS_TOUCH_ENABLED = 'ontouchstart' in window;
tusdino.hacked.Horizon.config = {
BG_CLOUD_SPEED: 0.2,
BUMPY_THRESHOLD: .3,
CLOUD_FREQUENCY: .5,
HORIZON_HEIGHT: 16,
MAX_CLOUDS: 6
};
tusdino.hacked.Horizon.prototype = {
init: function() {
this.addCloud();
this.horizonLine = new HorizonLine(this.canvas, this.spritePos.HORIZON)
},
update: function(deltaTime, currentSpeed, updateObstacles) {
this.runningTime += deltaTime;
this.horizonLine.update(deltaTime, currentSpeed);
this.updateClouds(deltaTime, currentSpeed);
if (updateObstacles) {
this.updateObstacles(deltaTime, currentSpeed)
}
},
updateClouds: function(deltaTime, speed) {
var cloudSpeed = this.cloudSpeed / 1000 * deltaTime * speed;
var numClouds = this.clouds.length;
if (numClouds) {
for (var i = numClouds - 1; i >= 0; i--) {
this.clouds[i].update(cloudSpeed)
}
var lastCloud = this.clouds[numClouds - 1];
if (numClouds < this.config.MAX_CLOUDS && (this.dimensions.WIDTH - lastCloud.xPos) > lastCloud.cloudGap && this.cloudFrequency > Math.random()) {
this.addCloud()
}
this.clouds = this.clouds.filter(function(obj) {
return !obj.remove
})
}
},
updateObstacles: function(deltaTime, currentSpeed) {
var updatedObstacles = this.obstacles.slice(0);
for (var i = 0; i < this.obstacles.length; i++) {
var obstacle = this.obstacles[i];
obstacle.update(deltaTime, currentSpeed);
if (obstacle.remove) {
updatedObstacles.shift()
}
}
this.obstacles = updatedObstacles;
if (this.obstacles.length > 0) {
var lastObstacle = this.obstacles[this.obstacles.length - 1];
if (lastObstacle && !lastObstacle.followingObstacleCreated && lastObstacle.isVisible() && (lastObstacle.xPos + lastObstacle.width + lastObstacle.gap) < this.dimensions.WIDTH) {
this.addNewObstacle(currentSpeed);
lastObstacle.followingObstacleCreated = true
}
} else {
this.addNewObstacle(currentSpeed)
}
},
addNewObstacle: function(currentSpeed) {
var obstacleTypeIndex = getRandomNum(0, Obstacle.types.length - 1);
var obstacleType = Obstacle.types[obstacleTypeIndex];
if (this.duplicateObstacleCheck(obstacleType.type) || currentSpeed < obstacleType.minSpeed) {
this.addNewObstacle(currentSpeed)
} else {
var obstacleSpritePos = this.spritePos[obstacleType.type];
this.obstacles.push(new Obstacle(this.canvasCtx, obstacleType, obstacleSpritePos, this.dimensions, this.gapCoefficient, currentSpeed));
this.obstacleHistory.unshift(obstacleType.type);
if (this.obstacleHistory.length > 1) {
this.obstacleHistory.splice(Runner.config.MAX_OBSTACLE_DUPLICATION)
}
}
},
duplicateObstacleCheck: function(nextObstacleType) {
var duplicateCount = 0;
for (var i = 0; i < this.obstacleHistory.length; i++) {
duplicateCount = this.obstacleHistory[i] == nextObstacleType ? duplicateCount + 1 : 0
}
return duplicateCount >= Runner.config.MAX_OBSTACLE_DUPLICATION
},
reset: function() {
this.obstacles = [];
this.horizonLine.reset()
},
resize: function(width, height) {
this.canvas.width = width;
this.canvas.height = height
},
addCloud: function() {
this.clouds.push(new Cloud(this.canvas, this.spritePos.CLOUD, this.dimensions.WIDTH))
}
}
function Cloud(canvas, spritePos, containerWidth) {
this.canvas = canvas;
this.canvasCtx = this.canvas.getContext('2d');
this.spritePos = spritePos;
this.containerWidth = containerWidth;
this.xPos = containerWidth;
this.yPos = 0;
this.remove = false;
this.cloudGap = getRandomNum(Cloud.config.MIN_CLOUD_GAP, Cloud.config.MAX_CLOUD_GAP);
this.init()
};
Cloud.config = {
HEIGHT: 14,
MAX_CLOUD_GAP: 400,
MAX_SKY_LEVEL: 30,
MIN_CLOUD_GAP: 100,
MIN_SKY_LEVEL: 71,
WIDTH: 46
};
Cloud.prototype = {
init: function() {
this.yPos = getRandomNum(Cloud.config.MAX_SKY_LEVEL, Cloud.config.MIN_SKY_LEVEL);
this.draw()
},
draw: function() {
this.canvasCtx.save();
var sourceWidth = Cloud.config.WIDTH;
var sourceHeight = Cloud.config.HEIGHT;
if (IS_HIDPI) {
sourceWidth = sourceWidth * 2;
sourceHeight = sourceHeight * 2
}
this.canvasCtx.drawImage(Runner.imageSprite, this.spritePos.x, this.spritePos.y, sourceWidth, sourceHeight, this.xPos, this.yPos, Cloud.config.WIDTH, Cloud.config.HEIGHT);
this.canvasCtx.restore()
},
update: function(speed) {
if (!this.remove) {
this.xPos -= Math.ceil(speed);
this.draw();
if (!this.isVisible()) {
this.remove = true
}
}
},
isVisible: function() {
return this.xPos + Cloud.config.WIDTH > 0
}
};
function HorizonLine(canvas, spritePos) {
this.spritePos = spritePos;
this.canvas = canvas;
this.canvasCtx = canvas.getContext('2d');
this.sourceDimensions = {};
this.dimensions = HorizonLine.dimensions;
this.sourceXPos = [this.spritePos.x, this.spritePos.x + this.dimensions.WIDTH];
this.xPos = [];
this.yPos = 0;
this.bumpThreshold = 0.5;
this.setSourceDimensions();
this.draw()
};
HorizonLine.dimensions = {
WIDTH: 600,
HEIGHT: 12,
YPOS: 127
};
HorizonLine.prototype = {
setSourceDimensions: function() {
for (var dimension in HorizonLine.dimensions) {
if (IS_HIDPI) {
if (dimension != 'YPOS') {
this.sourceDimensions[dimension] = HorizonLine.dimensions[dimension] * 2
}
} else {
this.sourceDimensions[dimension] = HorizonLine.dimensions[dimension]
}
this.dimensions[dimension] = HorizonLine.dimensions[dimension]
}
this.xPos = [0, HorizonLine.dimensions.WIDTH];
this.yPos = HorizonLine.dimensions.YPOS
},
getRandomType: function() {
return Math.random() > this.bumpThreshold ? this.dimensions.WIDTH : 0
},
draw: function() {
this.canvasCtx.drawImage(Runner.imageSprite, this.sourceXPos[0], this.spritePos.y, this.sourceDimensions.WIDTH, this.sourceDimensions.HEIGHT, this.xPos[0], this.yPos, this.dimensions.WIDTH, this.dimensions.HEIGHT);
this.canvasCtx.drawImage(Runner.imageSprite, this.sourceXPos[1], this.spritePos.y, this.sourceDimensions.WIDTH, this.sourceDimensions.HEIGHT, this.xPos[1], this.yPos, this.dimensions.WIDTH, this.dimensions.HEIGHT)
},
updateXPos: function(pos, increment) {
var line1 = pos;
var line2 = pos == 0 ? 1 : 0;
this.xPos[line1] -= increment;
this.xPos[line2] = this.xPos[line1] + this.dimensions.WIDTH;
if (this.xPos[line1] <= -this.dimensions.WIDTH) {
this.xPos[line1] += this.dimensions.WIDTH * 2;
this.xPos[line2] = this.xPos[line1] - this.dimensions.WIDTH;
this.sourceXPos[line1] = this.getRandomType() + this.spritePos.x
}
},
update: function(deltaTime, speed) {
var increment = Math.floor(speed * (FPS / 1000) * deltaTime);
if (this.xPos[0] <= 0) {
this.updateXPos(0, increment)
} else {
this.updateXPos(1, increment)
}
this.draw()
},
reset: function() {
this.xPos[0] = 0;
this.xPos[1] = HorizonLine.dimensions.WIDTH
}
};
function getRandomNum(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min
}
function vibrate(duration) {
if (IS_MOBILE && window.navigator.vibrate) {
window.navigator.vibrate(duration)
}
}
tusdino.hacked.DistanceMeter.dimensions = {
WIDTH: 10,
HEIGHT: 13,
DEST_WIDTH: 11
};
tusdino.hacked.DistanceMeter.yPos = [0, 13, 27, 40, 53, 67, 80, 93, 107, 120];
tusdino.hacked.DistanceMeter.config = {
MAX_DISTANCE_UNITS: 5,
ACHIEVEMENT_DISTANCE: 100,
COEFFICIENT: 0.025,
FLASH_DURATION: 1000 / 4,
FLASH_ITERATIONS: 3
};
tusdino.hacked.DistanceMeter.prototype = {
init: function(width) {
var maxDistanceStr = '';
this.calcXPos(width);
this.maxScore = this.maxScoreUnits;
for (var i = 0; i < this.maxScoreUnits; i++) {
this.draw(i, 0);
this.defaultString += '0';
maxDistanceStr += '9'
}
this.maxScore = parseInt(maxDistanceStr)
},
calcXPos: function(canvasWidth) {
this.x = canvasWidth - (DistanceMeter.dimensions.DEST_WIDTH * (this.maxScoreUnits + 1))
},
draw: function(digitPos, value, opt_highScore) {
var sourceWidth = DistanceMeter.dimensions.WIDTH;
var sourceHeight = DistanceMeter.dimensions.HEIGHT;
var sourceX = DistanceMeter.dimensions.WIDTH * value;
var sourceY = 0;
var targetX = digitPos * DistanceMeter.dimensions.DEST_WIDTH;
var targetY = this.y;
var targetWidth = DistanceMeter.dimensions.WIDTH;
var targetHeight = DistanceMeter.dimensions.HEIGHT;
if (IS_HIDPI) {
sourceWidth *= 2;
sourceHeight *= 2;
sourceX *= 2
}
sourceX += this.spritePos.x;
sourceY += this.spritePos.y;
this.canvasCtx.save();
if (opt_highScore) {
var highScoreX = this.x - (this.maxScoreUnits * 2) * DistanceMeter.dimensions.WIDTH;
this.canvasCtx.translate(highScoreX, this.y)
} else {
this.canvasCtx.translate(this.x, this.y)
}
this.canvasCtx.drawImage(this.image, sourceX, sourceY, sourceWidth, sourceHeight, targetX, targetY, targetWidth, targetHeight);
this.canvasCtx.restore()
},
getActualDistance: function(distance) {
return distance ? Math.round(distance * this.config.COEFFICIENT) : 0
},
update: function(deltaTime, distance) {
var paint = true;
var playSound = false;
if (!this.acheivement) {
distance = this.getActualDistance(distance);
if (distance > this.maxScore && this.maxScoreUnits == this.config.MAX_DISTANCE_UNITS) {
this.maxScoreUnits++;
this.maxScore = parseInt(this.maxScore + '9')
} else {
this.distance = 0
}
if (distance > 0) {
if (distance % this.config.ACHIEVEMENT_DISTANCE == 0) {
this.acheivement = true;
this.flashTimer = 0;
playSound = true
}
var distanceStr = (this.defaultString + distance).substr(-this.maxScoreUnits);
this.digits = distanceStr.split('')
} else {
this.digits = this.defaultString.split('')
}
} else {
if (this.flashIterations <= this.config.FLASH_ITERATIONS) {
this.flashTimer += deltaTime;
if (this.flashTimer < this.config.FLASH_DURATION) {
paint = false
} else if (this.flashTimer > this.config.FLASH_DURATION * 2) {
this.flashTimer = 0;
this.flashIterations++
}
} else {
this.acheivement = false;
this.flashIterations = 0;
this.flashTimer = 0
}
}
if (paint) {
for (var i = this.digits.length - 1; i >= 0; i--) {
this.draw(i, parseInt(this.digits[i]))
}
}
this.drawHighScore();
return playSound
},
drawHighScore: function() {
this.canvasCtx.save();
this.canvasCtx.globalAlpha = .8;
for (var i = this.highScore.length - 1; i >= 0; i--) {
this.draw(i, parseInt(this.highScore[i], 10), true)
}
this.canvasCtx.restore()
},
setHighScore: function(distance) {
distance = this.getActualDistance(distance);
var highScoreStr = (this.defaultString + distance).substr(-this.maxScoreUnits);
this.highScore = ['10', '11', ''].concat(highScoreStr.split(''))
},
reset: function() {
this.update(0);
this.acheivement = false
}
};
var Trex = tusdino.hacked.Trex;
var DistanceMeter = tusdino.hacked.DistanceMeter;
var Obstacle = tusdino.hacked.Obstacle;
var Horizon = tusdino.hacked.Horizon;
Runner.instance_.init = function() {
hackedInit.call(Runner.instance_);
}
Runner.instance_.init();
function customUpdate() {
if (document.getElementById("shareBlock")) {
var sb = document.getElementById("shareBlock");
sb.style.display = 'none';
}
this.drawPending = false;
var now = getTimeStamp();
var deltaTime = now - (this.time || now);
this.time = now;
if (this.activated) {
this.clearCanvas();
if (this.tRex.jumping) {
this.tRex.updateJump(deltaTime)
}
this.runningTime += deltaTime;
var hasObstacles = this.runningTime > this.config.CLEAR_TIME;
if (this.tRex.jumpCount == 1 && !this.playingIntro) {
this.playIntro()
}
if (this.playingIntro) {
this.horizon.update(0, this.currentSpeed, hasObstacles)
} else {
deltaTime = !this.started ? 0 : deltaTime;
this.horizon.update(deltaTime, this.currentSpeed, hasObstacles)
}
var collision = hasObstacles && checkForCollision(this.horizon.obstacles[0], this.tRex);
if (!collision) {
this.distanceRan += this.currentSpeed * deltaTime / this.msPerFrame;
if (this.currentSpeed < this.config.MAX_SPEED) {
this.currentSpeed += this.config.ACCELERATION
}
} else {
if (tusdino.cheats.obliterate) {
Runner.instance_.horizon.obstacles.length > 0 ? Runner.instance_.horizon.obstacles = Runner.instance_.horizon.obstacles.slice(1,Runner.instance_.horizon.obstacles.length) : "";
} else if (tusdino.cheats.obstacleBypass) {
Runner.instance_.tRex.xPos+=Runner.instance_.horizon.obstacles[0].xPos/2;
setTimeout(()=>{Runner.instance_.tRex.xPos = x;},100);
} else {
this.gameOver()
}
}
var playAcheivementSound = this.distanceMeter.update(deltaTime, Math.ceil(this.distanceRan));
if (playAcheivementSound) {
this.playSound(this.soundFx.SCORE)
}
}
if (!this.crashed) {
this.tRex.update(deltaTime);
if (this.raq) this.raq()
}
}
function customRestart() {
if (!this.raqId) {
this.playCount++;
this.runningTime = 0;
this.activated = true;
this.crashed = false;
this.distanceRan = 0;
this.setSpeed(this.config.SPEED);
this.time = getTimeStamp();
this.containerEl.classList.remove(Runner.classes.CRASHED);
this.clearCanvas();
this.distanceMeter.reset(this.highestScore);
this.horizon.reset();
this.tRex.reset();
this.playSound(this.soundFx.BUTTON_PRESS);
this.update();
x = Runner.instance_.tRex.xPos;
}
}
Runner.instance_.restart = function() {
customRestart.call(Runner.instance_);
}
if (Runner.instance_.started) {
Runner.instance_.restart();
}
Runner.instance_.startGame = function() {
this.runningTime = 0;
this.playingIntro = false;
this.tRex.playingIntro = false;
this.containerEl.style.webkitAnimation = '';
this.playCount++;
document.addEventListener(Runner.events.VISIBILITY, this.onVisibilityChange.bind(this));
window.addEventListener(Runner.events.BLUR, this.onVisibilityChange.bind(this));
window.addEventListener(Runner.events.FOCUS, this.onVisibilityChange.bind(this))
x = Runner.instance_.tRex.xPos;
}
Runner.instance_.tRex.draw = function(x, y) {
if (tusdino.cheats.rainbowglow) {
hslStart = true;
this.canvasCtx.shadowColor=hslCol;
this.canvasCtx.shadowOffsetX=0;
this.canvasCtx.shadowOffsetY=0;
this.canvasCtx.shadowBlur=15;
}
if (tusdino.cheats.glow) {
this.canvasCtx.shadowColor='yellow';
this.canvasCtx.shadowOffsetX=0;
this.canvasCtx.shadowOffsetY=0;
this.canvasCtx.shadowBlur=15;
}
var sourceX = x;
var sourceY = y;
var sourceWidth = this.ducking && this.status != Trex.status.CRASHED ? this.config.WIDTH_DUCK : this.config.WIDTH;
var sourceHeight = this.config.HEIGHT;
if (IS_HIDPI) {
sourceX *= 2;
sourceY *= 2;
sourceWidth *= 2;
sourceHeight *= 2
}
sourceX += this.spritePos.x;
sourceY += this.spritePos.y;
if (this.ducking && this.status != Trex.status.CRASHED) {
this.canvasCtx.drawImage(Runner.imageSprite, sourceX, sourceY, sourceWidth, sourceHeight, this.xPos, this.yPos, this.config.WIDTH_DUCK, this.config.HEIGHT)
} else {
if (this.ducking && this.status == Trex.status.CRASHED) {
this.xPos++
}
this.canvasCtx.drawImage(Runner.imageSprite, sourceX, sourceY, sourceWidth, sourceHeight, this.xPos, this.yPos, this.config.WIDTH, this.config.HEIGHT)
}
if (tusdino.cheats.rainbowglow) {
this.canvasCtx.shadowColor='';
this.canvasCtx.shadowOffsetX=0;
this.canvasCtx.shadowOffsetY=0;
this.canvasCtx.shadowBlur=0;
}
if (tusdino.cheats.glow) {
this.canvasCtx.shadowColor='';
this.canvasCtx.shadowOffsetX=0;
this.canvasCtx.shadowOffsetY=0;
this.canvasCtx.shadowBlur=0;
}
}
Runner.instance_.update = function() {
customUpdate.call(Runner.instance_);
if (!tusdino.cheats.forcepause) {
if (tusdino.cheats.obstacleFloat) {
if (Runner.instance_.horizon.obstacles[0]) {
for (var i in Runner.instance_.horizon.obstacles) {
Runner.instance_.horizon.obstacles[i].yPos = 25
}
}
}
if (tusdino.cheats.objectEsp) {
var ctx = Runner.instance_.canvasCtx;
if (Runner.instance_.horizon.obstacles[0]) {
for (var i in Runner.instance_.horizon.obstacles) {
ctx.beginPath();
ctx.strokeStyle = '#EB5834'
ctx.strokeRect(Runner.instance_.horizon.obstacles[i].xPos-1, Runner.instance_.horizon.obstacles[i].yPos-0.5, Runner.instance_.horizon.obstacles[i].width+3, Runner.instance_.horizon.obstacles[i].typeConfig.height+2);
ctx.stroke();
}
}
}
if (tusdino.cheats.rainbowSquarePlayer) {
Runner.instance_.canvasCtx.beginPath();
hslStart = true;
Runner.instance_.canvasCtx.fillStyle = hslCol;
Runner.instance_.canvasCtx.fillRect(Runner.instance_.tRex.xPos, Runner.instance_.tRex.ducking ? Runner.instance_.tRex.yPos+15 : Runner.instance_.tRex.yPos, Runner.instance_.tRex.ducking ? Runner.instance_.tRex.config.WIDTH_DUCK+2 : Runner.instance_.tRex.config.WIDTH+2, Runner.instance_.tRex.ducking ? Runner.instance_.tRex.config.HEIGHT_DUCK+2 : Runner.instance_.tRex.config.HEIGHT+2);
Runner.instance_.canvasCtx.closePath();
}
if (tusdino.cheats.watermark) {
var ctx = Runner.instance_.canvasCtx;
function ff() {
ctx.beginPath();
ctx.globalAlpha=0.6
ctx.fillStyle = '#212121';
ctx.fillRect(4,4,70,30);
ctx.globalAlpha=1;
ctx.closePath();
}
function dd() {
ctx.beginPath();
ctx.globalAlpha=0.6
ctx.strokeStyle = "#425AF5";
ctx.strokeRect(3,3,72,32);
ctx.globalAlpha=1
ctx.closePath();
}
function hh() {
ctx.beginPath();
ctx.globalAlpha=1
ctx.fillStyle = "#FFFFFF";
ctx.font = 'bolder 15px sans-serif'
ctx.fillText(atob('VHVzRGlubw=='),10, 24, 25252);
ctx.globalAlpha=1
ctx.closePath();
}
dd();
ff();
hh()
}
if (Runner.instance_.horizon.obstacles[0] && tusdino.cheats.tracer) {
for (var i in Runner.instance_.horizon.obstacles) {
Runner.instance_.canvasCtx.beginPath();
hslStart = true;
Runner.instance_.canvasCtx.moveTo(Runner.instance_.tRex.xPos+23,Runner.instance_.tRex.yPos+10);
Runner.instance_.canvasCtx.lineTo(Runner.instance_.horizon.obstacles[i].xPos+10,Runner.instance_.horizon.obstacles[i].yPos+10);
Runner.instance_.canvasCtx.strokeStyle = hslCol;
Runner.instance_.canvasCtx.stroke();
}
}
if (Runner.instance_.horizon.obstacles[0] && tusdino.cheats.lazervisual) {
if (!laz) laz = Runner.instance_.horizon.obstacles[0]
Runner.instance_.canvasCtx.beginPath();
Runner.instance_.canvasCtx.moveTo(Runner.instance_.tRex.xPos+23,Runner.instance_.tRex.yPos+10);
Runner.instance_.canvasCtx.lineTo(laz.xPos+10,laz.yPos+10);
Runner.instance_.canvasCtx.strokeStyle = 'Red';
Runner.instance_.canvasCtx.stroke();
if(tusdino.cheats.lazer) Runner.instance_.horizon.obstacles.length > 0 ? Runner.instance_.horizon.obstacles = Runner.instance_.horizon.obstacles.slice(1,Runner.instance_.horizon.obstacles.length) : "";
tusdino.cheats.lazer = false;
}
if (Runner.instance_.horizon.obstacles[0] && tusdino.cheats.notifier) {
for (var i in Runner.instance_.horizon.obstacles) {
Runner.instance_.canvasCtx.beginPath();
Runner.instance_.canvasCtx.moveTo(Runner.instance_.horizon.obstacles[i].xPos-70,130);
Runner.instance_.canvasCtx.lineTo(Runner.instance_.horizon.obstacles[i].xPos-40,130);
Runner.instance_.canvasCtx.strokeStyle = 'Blue';
Runner.instance_.canvasCtx.stroke();
}
}
if (tusdino.cheats.esp) {
Runner.instance_.canvasCtx.beginPath();
Runner.instance_.canvasCtx.strokeStyle = 'Red';
Runner.instance_.canvasCtx.rect(Runner.instance_.tRex.xPos, Runner.instance_.tRex.ducking ? Runner.instance_.tRex.yPos+15 : Runner.instance_.tRex.yPos, Runner.instance_.tRex.ducking ? Runner.instance_.tRex.config.WIDTH_DUCK+2 : Runner.instance_.tRex.config.WIDTH+2, Runner.instance_.tRex.ducking ? Runner.instance_.tRex.config.HEIGHT_DUCK+2 : Runner.instance_.tRex.config.HEIGHT+2);
Runner.instance_.canvasCtx.stroke();
}
}
}
// Style and UI
var StylePanel = document.createElement('style');
StylePanel.innerHTML = `
#tradingmenu hr {
border: solid 0.1px white;
border-radius: 66px;
}
#tradingpagesettings button {
border-radius: 0;
color: #adadad;
border: solid 2px #adadad;
}
.tradingshow button {
background: none;
border: solid 1px #a7a7ff;
color: #a7a7ff;
padding: 7px;
transition: 0.5s;
cursor: pointer;
height: 30px;
float: initial;
border-radius: 20px;
padding-left: 18px;
padding-right: 18px;
}
#tradingmenuheader {
line-height: 1.13;
}
.tradingshow .tradingcheckbox {
background: none;
border: solid 1px #1212a5;
color: #0101ab;
margin-bottom:5px;
padding: 7px;
transition: 0.5s;
cursor: pointer;
border-radius: 90px;
padding-left: 18px;
padding-right: 18px;
}
.tradingshow .tradingcheckbox:hover {
background: none;
border: solid 1px #1313b9;
color: #0404cb;
padding: 7px;
transition: 0.5s;
cursor: pointer;
border-radius: 90px;
padding-left: 18px;
padding-right: 18px;
}
.swal2-container {
z-index: 100000000000000000000;
}
.tradingshow button:hover {
border: solid 1px #7d7dff;
transition: 0.5s;
color: #8080ff;
}
.tradingshow input::placeholder {
color: #8272bf;
opacity:0.8;
transition:1s;
}
.tradingshow input:focus::placeholder {
color: #86c7ff;
transition:1s;
}
.tradingshow input:focus {
border-color: #86c7ff;
transition: 1s;
}
.tradingshow input {
padding: 7px;
transition: 1s;
outline: none;
margin-bottom:5px;
border-radius: 20px;
border: solid 1px #a7a7ff;
color: #a7a7ff;
background: transparent;
}
.tradingtab {
font-weight: 700;
padding: 0px;
border-radius: 0px;
height: -webkit-fill-available;
width: 100px;
line-height: 2;
font-family: system-ui;
margin:0;
background: transparent;
font-size: 15px;
cursor: pointer;
border: none;
border-left: solid 1px #9191ff;
border-right: solid 1px #9191ff;
color: #855dff;
}
.tradingpage {
text-align: left;
z-index: -1;
display: none;
}
.tradingshow {
z-index: 1;
padding: 10px;
font-weight: 400;
display: block;
}
.tradinginputset {
display: inline-flex;
}
.tradinginputset button {
margin-bottom:5px;
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
}
.tradinginputset select {
background: none;
border: solid 1px #a7a7ff;
color: #a7a7ff;
padding: 7px;
transition: 0.5s;
cursor: pointer;
width: 120px;
outline: none;
height: 30px;
float: initial;
text-align: center;
border-radius: 20px;
border-bottom-left-radius: 0px;
border-top-left-radius: 0px;
padding-left: 18px;
padding-right: 18px;
}
#tradingborder {
background: linear-gradient(45deg, #a9b8ff, #4b10ff);
height: 2px;
animation: an 30s ease infinite;
background-size: 1000% 1000%;
}
.tradingactive {
filter: brightness(1.2);
font-weight: 400;
}
#tradingmenu {
color: white;
font-weight: 400;
font-size: initial;
font-family: sans-serif;
}
#tradingmenu *:not(button, input, .tradingtab) {
cursor:default;
margin:0;
box-sizing: revert;
}
#tradingmenu a {
color: white;
text-decoration: underline;
cursor: pointer;
}
.tradingshow input {
margin:0;
border-top-left-radius: 0px;
border-bottom-left-radius: 0px;
font-size: 13px;
box-sizing: revert;
line-height: 14px;
cursor: text;
margin-bottom:5px;
}
.tradingshow button {
margin:0;
font-size: 13px;
line-height: 14px;
box-sizing: revert;
cursor: pointer;
margin-bottom:5px;
}`;
var Panel = document.createElement('div');
Panel.innerHTML = `<div style="transform: scale(0.8); top: 98px; position: fixed; left: 309px; z-index: 2147483647;" id="tradingmenu">
<div style="
height: 353px;
font-weight: bolder;
width: 599px;
background: #1a1a1a;
">
<div style="">
<div style="
font-size: 20px;
font-family: revert;
padding-top: 6px;
padding-left: 6px;
padding-bottom: 4px;
" id="tradingmenuheader">${atob('VHVzRGlubw==')} - <i style="
font-size: 16px;
">${tusdino.info.version} [By ${atob('TGFwaWRl')}]</i><a href="https://discord.gg/6eaDrx5J9s" style="
font-size: 17px;
color: lightblue;
float: right;
margin-right: 11px;
cursor: pointer;
">Discord</a><a href="https://github.com/Case-Clicker-2-Utilities/TusDino-Chrome-Dino-Mod-Menu" style="
font-size: 17px;
color: lightblue;
float: right;
margin-right: 10px;
cursor: pointer;
">Github</a><a href="https://www.youtube.com/channel/UCRA3KXViuDmsmfuP0RF45_w?sub_confirmation=1" style="
font-size: 17px;
color: lightblue;
float: right;
margin-right: 10px;
cursor: pointer;
">YouTube</a>
</div>
<div id="tradingborder" style="
"></div>
<div id="trading_contents" style="">
<div style="
height: 44px;
outline: none;
display: flex;
overflow-x: auto;
background: #16161a;
border-bottom: solid 2px #6e6dc7;
">
<button tab="main" title="Cheats that effect the player" class="tradingtab tradingactive">Player</button>
<button tab="game" title="Cheats that effect the whole game" class="tradingtab">Game</button>
<button tab="movement" title="Cheats that effect the movement" class="tradingtab">Movement</button>
<button tab="visual" title="Cheats that effect the visuals of the game" class="tradingtab">Visuals</button>
<button tab="dev" title="Cheats and utilities to better edit the game" class="tradingtab">Developer</button>
<button tab="other" title="Cheats that can help out in the game or for fun. There will also be unkown cheats in this tab" class="tradingtab">Others</button>
<button tab="settings" title="Change the settings of cheats or the UI. Or TusDino in general [COMING SOON]" class="tradingtab">Settings</button>
</div>
<div style="
background: #161616;
height: 265px;
overflow-y: auto;
" id="tradingtabs">
<div class="tradingshow" id="tradingpagemain" style="">
<button id="invisibilitycheat" class="tradingcheckbox" title="Makes the player invisible">Invisibility - OFF</button>
<button id="bhop" class="tradingcheckbox" title="Makes the player jump automatically">Bhop - OFF</button>
<div class="tradinginputset"><button id="setxaxis" title="Changes the players X axis">Teleport X axis</button><input id="setxaxischeatinput" style="
width: 78px;" value = "0" placeholder="0"></div>
<div class="tradinginputset"><button id="setyaxis" title="Changes the players Y axis">Teleport Y axis</button><input id="setyaxischeatinput" style="
width: 78px;" value = "93" placeholder="93"></div>
<button id="killplayer" title="Instantly kills your T-Rex player">Kill Player</button>
<button id="autoplayer" class="tradingcheckbox" title="Make a bot play for you">Autoplayer - OFF</button>
<div class="tradinginputset"><button id="setgravity" title="Change the gravity of the tRex to whatever you want">Set Gravity</button><input id="setgravitycheatinput" style="
width: 78px;" value = "0.6" placeholder="0.6"></div>
<div class="tradinginputset"><button id="setskin" title="Changes the dino skin to a list of skins, this will soon be customizable">Set Skin (Buggy)</button><select id="setskincheatselect">
<option value="default">Default</option>
<option value="batman">Batman Colored</option>
<option value="sonic">Sonic</option>
<option value="soniccol">Sonic Colored</option>
<option value="soniccol2">Sonic Colored (2)</option>
<option value="dinocol">Dino Colored</option>
<option value="dinocol2">Dino Colored (2)</option>
<option value="godzilla">Godzilla Colored</option>
<option value="joker">Joker Colored</option>
<option value="mario">Mario</option>
<option value="mariocol">Mario Colored</option>
<option value="mario2">Mario (2)</option>
<option value="mariocol2">Mario Colored (2)</option>
<option value="minecraft">Minecraft</option>
<option value="naruto">Naruto Colored</option>
<option value="noface">Noface Halloween</option>
<option value="nyancat">Nyan Cat</option>
<option value="pikachu">Pikachu</option>
<option value="santa">Santa Colored</option>
<option value="pikachucol">Pikachu Colored</option>
</select>
</div>
</div>
<div class="tradingpage" id="tradingpageother" style="">
<button id="rainbowbackground" class="tradingcheckbox" title="Make the background become rainbow.">Rainbow Background - OFF</button>
<button id="rainbowsquareplayer" class="tradingcheckbox" title="Make the player become rainbow square.">Rainbow Square Player - OFF</button>
<button id="stormcloud" class="tradingcheckbox" title="Continuously spam clouds in the sky">Storm Cloud - OFF</button>
<button id="noobstacle" class="tradingcheckbox" title="Removes all nearby obstacles">No Obstacle - OFF</button>
<button id="obstacleFloat" class="tradingcheckbox" title="Makes all near-by obstacles go up in the air">Obstacle Float - OFF</button>
<button id="lazervison" title="It remove the nearest obstacle, with a lazer">Lazer Vision</button>
<button id="lazervisonkey" class="tradingcheckbox" title="If you press L, it will active lazer vison">Lazer Vision Key (L) - OFF</button>
<button id="noclip" class="tradingcheckbox" title="You can phase thru any object and enemy">No Clip - OFF</button>
<button id="obliterate" class="tradingcheckbox" title="When the player collides with the obstacle, the obstacle gets destroyed instead of the player">Obliterate Obstacles - OFF</button>
<button id="addcloud" title="Forces a cloud into the game">Add Cloud</button>
<button id="removecloud" title="Removes the newest cloud">Remove Cloud</button>
<button id="removeallcloud" title="Removes all clouds">Remove All Clouds</button>
<button id="removeallobstacle" title="Removes all near-by obstacles">Remove Near Obstacles</button>
<button id="removeobstacle" title="Removes the nearest obstacle">Remove Obstacle</button>
<button id="addobstacle" title="Creates a new obstacle">Add Obstacle</button>
<p>
</div>
<div class="tradingpage" id="tradingpagesettings" style="">
<div style="margin-bottom: 19px;">
<h2><img src="https://cdn.glitch.global/4aba5d04-d76d-4769-bec8-f2da58f4b0ac/SettingsIcon.png?v=1680464901415" height="30" style="
position: relative;
top: 7px;
">Settings</h2>
</div><div><button id="tradingcredits">Credits</button></div>
<br>
<hr><br><a href="https://github.com/Fault-Utilities/TusDino-Chrome-Dino-Mod-Menu/issues/new">Report an issue</a> • <a href="https://github.com/Case-Clicker-2-Utilities/TusDino-Chrome-Dino-Mod-Menu/discussions/new?category=suggestions">Suggest option</a> • <a href="https://github.com/Fault-Utilities/TusDino-Chrome-Dino-Mod-Menu/fork">Fork the Github</a>
</div>
<div class="tradingpage" id="tradingpagedev" style="">
<h3>Currently being developed (WIP)...</h3>
</div>
<div class="tradingpage" id="tradingpagemovement" style="">
<div class="tradinginputset"><button id="setspeed" title="Sets your players speed, if you put too much it can bug out">Set Speed</button><input id="setspeedcheatinput" style="
width: 78px;" value = "6.5" placeholder="6.5"></div>
<button id="fly" class="tradingcheckbox" title="You now have the ability to fly! You can use 'W' to go higher and 'S' to go lower">Fly - OFF</button>
<button id="highjump" class="tradingcheckbox" title="Makes you jump higher">High Jump - OFF</button>
<button id="fastfall" class="tradingcheckbox" title="You can fall more faster">Fast Fall - OFF</button>
<button id="walk" class="tradingcheckbox" title="You now have the ability to get out of the window and walk use 'A' to go left and 'D' to go right">Walk - OFF</button>
<button id="obstacleBypass" class="tradingcheckbox" title="This cheat makes you zoom thru the obstacles">Obstacle Bypass - OFF</button>
<div class="tradinginputset"><button id="setwalkspeed" title="Set the walk cheats speed">Set Walk Speed (Walk Cheat)</button><input id="setwalkspeedcheatinput" style="
width: 78px;" value = "1" placeholder="1"></div>
<div class="tradinginputset"><button id="setflyspeed" title="Set the fly cheats speed">Set Fly Speed (Fly Cheat)</button><input id="setflyspeedcheatinput" style="
width: 78px;" value = "1" placeholder="1"></div>
<button id="blockyjump" class="tradingcheckbox" title="You can have a robotic jump">Blocky Jump - OFF</button>
<button id="airjump" class="tradingcheckbox" title="You can jump forever non-stop">Airjump - OFF</button>
</div>
<div class="tradingpage" id="tradingpagevisual" style="">
<button id="esp" class="tradingcheckbox" title="This cheat shows a box around you">ESP - OFF</button>
<button id="tracers" class="tradingcheckbox" title="Lines go from you to all the obstacles">Tracers - OFF</button>
<button id="glow" class="tradingcheckbox" title="Makes the player have a yellow glow around them">Glow - OFF</button>
<button id="rainbowglow" class="tradingcheckbox" title="Makes the player have a rainbow glow around them">Rainbow Glow - OFF</button>
<button id="jumpnotifier" class="tradingcheckbox" title="Small lines on the screen tell you where to jump">Jump Notifier - OFF</button>
<button id="watermark" class="tradingcheckbox" title="A watermark to show you're using TusDino">Watermark - ON </button>
<button id="obstacleesp" class="tradingcheckbox" title="ESP for obstacles">Obstacle ESP - OFF</button>
</div>
<div class="tradingpage" id="tradingpagegame" style="">
<div class="tradinginputset"><button id="setgamespeed" title="Sets your games speed, if you put too much it can bug out">Set Game Speed</button><input id="setgamespeedcheatinput" style="
width: 78px;" value = "0.001" placeholder="0.001"></div>
<button id="duckAndJump" class="tradingcheckbox" title="You can still jump when ducking">Duck and Jump - OFF</button>
<button id="playingIntro" class="tradingcheckbox" title="Still get scored while your player is inactive">Playing Intro - OFF</button>
<div style=""class="tradinginputset"><button id="setscore" title="Sets your players score" style="">Set Score</button><input id="setscorecheatinput" style="
width: 78px;" value = "999999" placeholder="999999"></div>
<button id="mutegame" class="tradingcheckbox" title="Use this if you're tired of hearing the sound">Mute Game - OFF</button>
<button id="forcepausegame" class="tradingcheckbox" title="Need to pause the game and everything in the game? Use this">Force Pause Game - OFF</button>
<button id="pausegame" class="tradingcheckbox" title="Need to pause the game and everything in the game? Use this">Pause - OFF</button>
<button id="restartgame" title="Need a restart? Try this">Restart</button>
<div class="tradinginputset"><button id="setscorespeed" title="This will change how fast your score adds up">Set Score Speed</button><input id="setscorespeedcheatinput" style="
width: 78px;" value = "1" placeholder="1"></div>
<div class="tradinginputset"><button id="setgroundy" title="Change the Y position of the ground">Set Ground Y</button><input id="setgroundycheatinput" style="
width: 78px;" value = "93" placeholder="93"></div>
</div>
</div>
</div>
</div>
</div>
<div style="
height: 359px;
width: 603px;
top: -3px;
left: -2px;
z-index: -1;
position: inherit;
background: linear-gradient(45deg, #a9b8ff, #4b10ff);
"></div>
</div>`;
document.body.prepend(Panel);
document.body.prepend(StylePanel);
function dragElement(elmnt) {
var pos1 = 0,
pos2 = 0,
pos3 = 0,
pos4 = 0;
if (document.getElementById(elmnt.id + "header")) {
document.getElementById(elmnt.id + "header").onmousedown = dragMouseDown;
} else {
elmnt.onmousedown = dragMouseDown;
}
function dragMouseDown(e) {
e = e || window.event;
e.preventDefault();
pos3 = e.clientX;
pos4 = e.clientY;
document.onmouseup = closeDragElement;
document.onmousemove = elementDrag;
}
function elementDrag(e) {
e = e || window.event;
e.preventDefault();
pos1 = pos3 - e.clientX;
pos2 = pos4 - e.clientY;
pos3 = e.clientX;
pos4 = e.clientY;
elmnt.style.top = (elmnt.offsetTop - pos2) + "px";
elmnt.style.left = (elmnt.offsetLeft - pos1) + "px";
}
function closeDragElement() {
document.onmouseup = null;
document.onmousemove = null;
}
}
var hslI = 0;
var hslCol = 'rgb(0, 74 55)';
var hslUp = false;
var hslUp2 = false;
var laz = false;
var hslStart = false;
setInterval(()=>{
if (hslStart) {
hslUp = hslUp ? hslI > -1 : hslI < 361;
hslCol = 'rgb('+HSLToRGB(hslI, 74, 55).join(', ')+')';
if (hslUp) {
++hslI;
} else {
--hslI;
}
}
});
Runner.instance_.clearCanvas=function(){
tusdino.saved.clearCanvas.call(this);
};
for (var i = 0; i < document.getElementsByClassName('tradingtab').length; ++i) {
document.getElementsByClassName('tradingtab')[i].addEventListener('click', function() {
for (var gg = 0; gg < document.getElementsByClassName('tradingshow').length; ++gg) {
document.getElementsByClassName('tradingshow')[gg].className = ('tradingpage');
}
for (var bb = 0; bb < document.getElementsByClassName('tradingactive').length; ++bb) {
document.getElementsByClassName('tradingactive')[bb].className = ('tradingtab');
}
// console.log(this);
this.classList.add('tradingactive')
document.getElementById('tradingpage' + this.getAttribute('tab')).className = ('tradingshow');
})
}
dragElement(Panel.children[0]);
var show = false;
document.addEventListener('keydown', function(e) {
//console.log(e);
if (e.key == tusdino.config.hotkeys.togglemenu && (e.path ? e.path[0].tagName != "INPUT" : e)) {
show = !show;
Panel.style.display = show ? 'block' : 'none';
}
if (tusdino.cheats.lazerv) {
if (e.key == 'l') {
tusdino.cheats.lazervisual = true;
tusdino.cheats.lazer = true;
setTimeout(()=>{tusdino.cheats.lazervisual = false; laz = false;},50);
}
}
if (tusdino.cheats.allowFlyMode) {
if (e.key == 'w' && (e.path ? e.path[0].tagName != "INPUT" : e)) {
goflydown = true;
}
if (e.key == 's' && (e.path ? e.path[0].tagName != "INPUT" : e)) {
goflyup = true;
}
}
if (tusdino.cheats.walk) {
if (e.key == 'd' && (e.path ? e.path[0].tagName != "INPUT" : e)) {
goright = true;
}
if (e.key == 'a' && (e.path ? e.path[0].tagName != "INPUT" : e)) {
goleft = true;
}
}
})
document.addEventListener('keyup', function(e) {
if (tusdino.cheats.allowFlyMode) {
if (e.key == 'w' && (e.path ? e.path[0].tagName != "INPUT" : e)) {
goflydown = false;
}
if (e.key == 's' && (e.path ? e.path[0].tagName != "INPUT" : e)) {
goflyup = false;
}
}
if (tusdino.cheats.walk) {
if (e.key == 'd' && (e.path ? e.path[0].tagName != "INPUT" : e)) {
goright = false;
}
if (e.key == 'a' && (e.path ? e.path[0].tagName != "INPUT" : e)) {
goleft = false;
}
}
})
// Listeners / Clicks
tusdino.onclick('killplayer', function() {
var n = Runner.instance_.gameOver;
Runner.instance_.gameOver = tusdino.saved.gameOver;
if (Runner.instance_.gameOver.toString() !== 'function() {}') {
Runner.instance_.gameOver();
tusdino.msg("Killed player");
} else {
swal.fire({
icon: 'error',
title: 'Can\'t kill player',
text: 'Unable to kill player, can be due to a cheat preventing this being enabled.'
})
tusdino.logs.error("Unable to kill dino (killplayer)");
}
Runner.instance_.gameOver = n;
});
tusdino.onclick('setspeed', function() {
var inp = parseFloat(document.getElementById('setspeedcheatinput').value);
if (!isNaN(inp)) {
Runner.instance_.setSpeed(inp);
tusdino.msg("Set speed to "+inp);
}
});
tusdino.onclick('setgamespeed', function() {
var inp = parseFloat(document.getElementById('setgamespeedcheatinput').value);
if (!isNaN(inp)) {
Runner.instance_.config.ACCELERATION=(inp);
tusdino.msg("Set game speed to "+inp);
}
});
tusdino.onclick('setscore', function() {
var inp = parseFloat(document.getElementById('setscorecheatinput').value);
if (!isNaN(inp)) {
Runner.instance_.distanceRan = inp / Runner.instance_.distanceMeter.config.COEFFICIENT;
tusdino.msg("Set score to "+inp);
}
});
tusdino.onclick('setgroundy', function() {
var inp = parseFloat(document.getElementById('setgroundycheatinput').value);
if (!isNaN(inp)) {
Runner.instance_.tRex.groundYPos = inp;
Runner.instance_.tRex.startJump(0.5);
tusdino.msg("Set ground Y to "+inp);
}
});
tusdino.onclick('setscorespeed', function() {
var inp = parseFloat(document.getElementById('setscorespeedcheatinput').value);
if (!isNaN(inp)) {
Runner.instance_.msPerFrame=inp/2;
tusdino.msg("Set score speed to "+inp);
}
});
tusdino.onclick('setxaxis', function() {
var inp = parseFloat(document.getElementById('setxaxischeatinput').value);
if (!isNaN(inp)) {
Runner.instance_.tRex.xPos = inp;
tusdino.msg("Set X axis to "+inp);
}
});
tusdino.onclick('setyaxis', function() {
var inp = parseFloat(document.getElementById('setyaxischeatinput').value);
if (!isNaN(inp)) {
Runner.instance_.tRex.yPos = inp;
tusdino.msg("Set Y axis to "+inp);
}
});
tusdino.onclick('setgravity', function() {
var inp = parseFloat(document.getElementById('setgravitycheatinput').value);
if (!isNaN(inp)) {
Runner.instance_.tRex.config.GRAVITY=inp
tusdino.msg("Set gravity to "+inp);
}
});
tusdino.onclick('setwalkspeed', function() {
var inp = parseFloat(document.getElementById('setwalkspeedcheatinput').value);
if (!isNaN(inp)) {
xSpeed=inp
tusdino.msg("Set walk speed to "+inp);
}
});
tusdino.onclick('setflyspeed', function() {
var inp = parseFloat(document.getElementById('setflyspeedcheatinput').value);
if (!isNaN(inp)) {
ySpeed=inp
tusdino.msg("Set fly speed to "+inp);
}
});
let setSkin = function(x1, x2) {
let x_1 = document.getElementById('offline-resources-1x');
let x_2 = document.getElementById('offline-resources-2x');
if (x1) x_1.src = x1;
if (x2) x_2.src = x2;
}
var skins = {
'default': 'https://github.com/Case-Clicker-2-Utilities/TusDino-Chrome-Dino-Mod-Menu/blob/main/skins/default.png?raw=true',
'batman': 'https://github.com/Case-Clicker-2-Utilities/TusDino-Chrome-Dino-Mod-Menu/blob/main/skins/batman%20colored.png?raw=true',
'dinocol2': 'https://github.com/Case-Clicker-2-Utilities/TusDino-Chrome-Dino-Mod-Menu/blob/main/skins/dino%20colored%202.png?raw=true',
'dinocol': 'https://github.com/Case-Clicker-2-Utilities/TusDino-Chrome-Dino-Mod-Menu/blob/main/skins/dino%20colored.png?raw=true',
'godzilla': 'https://github.com/Case-Clicker-2-Utilities/TusDino-Chrome-Dino-Mod-Menu/blob/main/skins/godzilla.png?raw=true',
'joker': 'https://github.com/Case-Clicker-2-Utilities/TusDino-Chrome-Dino-Mod-Menu/blob/main/skins/joker.png?raw=true',
'mario2': 'https://github.com/Case-Clicker-2-Utilities/TusDino-Chrome-Dino-Mod-Menu/blob/main/skins/mario%202.png?raw=true',
'mariocol2': 'https://github.com/Case-Clicker-2-Utilities/TusDino-Chrome-Dino-Mod-Menu/blob/main/skins/mario%20colored%202.png?raw=true',
'mariocol': 'https://github.com/Case-Clicker-2-Utilities/TusDino-Chrome-Dino-Mod-Menu/blob/main/skins/mario%20colored.png?raw=true',
'mario': 'https://github.com/Case-Clicker-2-Utilities/TusDino-Chrome-Dino-Mod-Menu/blob/main/skins/mario.png?raw=true',
'minecraft': 'https://github.com/Case-Clicker-2-Utilities/TusDino-Chrome-Dino-Mod-Menu/blob/main/skins/minecraft.png?raw=true',
'naruto': 'https://github.com/Case-Clicker-2-Utilities/TusDino-Chrome-Dino-Mod-Menu/blob/main/skins/naruto%20colored.png?raw=true',
'noface': 'https://github.com/Case-Clicker-2-Utilities/TusDino-Chrome-Dino-Mod-Menu/blob/main/skins/noface%20halloween.png?raw=true',
'nyancat': 'https://github.com/Case-Clicker-2-Utilities/TusDino-Chrome-Dino-Mod-Menu/blob/main/skins/nyan%20cat.png?raw=true',
'pikachu': 'https://github.com/Case-Clicker-2-Utilities/TusDino-Chrome-Dino-Mod-Menu/blob/main/skins/pikachu.png?raw=true',
'santa': 'https://github.com/Case-Clicker-2-Utilities/TusDino-Chrome-Dino-Mod-Menu/blob/main/skins/santa%20colored.png?raw=true',
'soniccol2': 'https://github.com/Case-Clicker-2-Utilities/TusDino-Chrome-Dino-Mod-Menu/blob/main/skins/sonic%20colored%202.png?raw=true',
'soniccol': 'https://github.com/Case-Clicker-2-Utilities/TusDino-Chrome-Dino-Mod-Menu/blob/main/skins/sonic%20colored.png?raw=true',
'sonic': 'https://github.com/Case-Clicker-2-Utilities/TusDino-Chrome-Dino-Mod-Menu/blob/main/skins/sonic.png?raw=true'
};
function setSki(i) {
setSkin(skins[i]);
}
tusdino.onclick('setskin', function() {
var inp = (document.getElementById('setskincheatselect').value);
setSki(inp);
var jsf = false;
for (var i in document.querySelector("#setskincheatselect").children) {
if (document.querySelector("#setskincheatselect").children[i].value == document.querySelector("#setskincheatselect").value) {
jsf = document.querySelector("#setskincheatselect").children[i].innerText;
}
}
if (jsf) {
tusdino.msg('Set skin to '+jsf+' [NOTE: SKINS MIGHT BE BUGGY]');
}
});
var noclip = false;
tusdino.onclick('noclip', function() {
noclip = !noclip;
if (noclip) {
tusdino.cheats.noclip = true;
document.getElementById('noclip').innerText = "No Clip - ON ";
tusdino.msg("Enabled No-Clip");
} else {
tusdino.cheats.noclip = false;
document.getElementById('noclip').innerText = "No Clip - OFF";
tusdino.msg("Disabled No-Clip");
}
});
var blockyjump = false;
tusdino.onclick('blockyjump', function() {
blockyjump = !blockyjump;
if (blockyjump) {
Runner.instance_.tRex.config.DROP_VELOCITY = 2;
document.getElementById('blockyjump').innerText = "Blocky Jump - ON ";
tusdino.msg("Enabled Blocky Jump");
} else {
Runner.instance_.tRex.config.DROP_VELOCITY = -5;
document.getElementById('blockyjump').innerText = "Blocky Jump - OFF";
tusdino.msg("Disabled Blocky Jump");
}
});
var highjump = false;
tusdino.onclick('highjump', function() {
highjump = !highjump;
if (highjump) {
Runner.instance_.tRex.setJumpVelocity(14)
document.getElementById('highjump').innerText = "High Jump - ON ";
tusdino.msg("Enabled High Jump");
} else {
Runner.instance_.tRex.setJumpVelocity(10);
document.getElementById('highjump').innerText = "High Jump - OFF";
tusdino.msg("Disabled High Jump");
}
});
var pausegame = false;
tusdino.onclick('pausegame', function() {
pausegame = !pausegame;
if (pausegame) {
Runner.instance_.stop();
document.getElementById('pausegame').innerText = "Pause - ON ";
tusdino.msg("Enabled Pause");
} else {
Runner.instance_.play();
document.getElementById('pausegame').innerText = "Pause - OFF";
tusdino.msg("Disabled Pause");
}
});
tusdino.onclick('forcepausegame', function() {
tusdino.cheats.forcepause = !tusdino.cheats.forcepause;
if (tusdino.cheats.forcepause) {
document.getElementById('forcepausegame').innerText = "Force Pause - ON ";
tusdino.msg("Enabled Force Pause");
} else {
Runner.instance_.play();
document.getElementById('forcepausegame').innerText = "Force Pause - OFF";
tusdino.msg("Disabled Force Pause");
}
});
tusdino.onclick('restartgame', function() {
Runner.instance_.restart();
tusdino.msg("Restarted the gmae")
});
tusdino.onclick('mutegame', function() {
tusdino.cheats.mute = !tusdino.cheats.mute;
if (tusdino.cheats.mute) {
document.getElementById('mutegame').innerText = "Mute Game - ON ";
tusdino.msg("Enabled Mute");
} else {
document.getElementById('mutegame').innerText = "Mute Game - OFF";
tusdino.msg("Disabled Mute");
}
});
tusdino.onclick('rainbowsquareplayer', function() {
tusdino.cheats.rainbowSquarePlayer = !tusdino.cheats.rainbowSquarePlayer;
if (tusdino.cheats.rainbowSquarePlayer) {
document.getElementById('rainbowsquareplayer').innerText = "Rainbow Square Player - ON ";
tusdino.msg("Enabled Rainbow Square Player");
} else {
hslStart = false;
document.getElementById('rainbowsquareplayer').innerText = "Rainbow Square Player - OFF";
tusdino.msg("Disabled Rainbow Square Player");
}
});
var rainbowbackground = false;
var oldtrans = document.body.transition;
var oldbg = document.body.background;
function flash() {
if (rainbowbackground) {
document.body.style.transition = '2s ease 0s';
document.body.style.background = 'red';
setTimeout(function () {
if (rainbowbackground) {
document.body.style.background = 'red';
}
}, 1000);
setTimeout(function () {
if (rainbowbackground) {
document.body.style.background = 'orange';
}
}, 2000);
setTimeout(function () {
if (rainbowbackground) {
document.body.style.background = 'yellow';
}
}, 3000);
setTimeout(function () {
if (rainbowbackground) {
document.body.style.background = 'white';
}
}, 4000);
setTimeout(function () {
if (rainbowbackground) {
document.body.style.background = 'green';
}
}, 5000);
setTimeout(function () {
if (rainbowbackground) {
document.body.style.background = 'blue';
}
}, 6000);
setTimeout(function () {
if (rainbowbackground) {
document.body.style.background = 'darkblue';
}
}, 7000);
setTimeout(function () {
if (rainbowbackground) {
document.body.style.background = 'black';
}
}, 8000);
setTimeout(function () {
if (rainbowbackground) {
document.body.style.background = 'red';
}
}, 9000);
setTimeout(function () {
if (rainbowbackground) {
flash();
}
}, 9000);
}
}
tusdino.onclick('rainbowbackground', function() {
rainbowbackground = !rainbowbackground;
if (rainbowbackground) {
flash();
document.getElementById('rainbowbackground').innerText = "Rainbow Background - ON ";
tusdino.msg("Enabled Rainbow Background");
} else {
window.oldbg = oldbg;
document.body.style.background = oldbg;
document.body.style.transition = oldtrans;
document.getElementById('rainbowbackground').innerText = "Rainbow Background - OFF";
tusdino.msg("Disabled Rainbow Background");
}
});
var fastfall = false;
Runner.instance_.tRex.startJump = function(speed) {
if (this.airjump) {
this.jumping = false;
if (!this.jumping) {
this.update(0, 'JUMPING');
// Tweak the jump velocity based on the speed.
this.jumpVelocity = this.config.INIITAL_JUMP_VELOCITY - (speed / 10);
this.jumping = true;
this.reachedMinHeight = false;
this.speedDrop = false;
}
} else {
this.jumping = false;
if (!this.jumping) {
this.update(0, 'JUMPING');
// Tweak the jump velocity based on the speed.
this.jumpVelocity = this.config.INIITAL_JUMP_VELOCITY - (speed / 10);
this.jumping = true;
this.reachedMinHeight = false;
this.speedDrop = false;
}
}
}
tusdino.onclick('fastfall', function() {
fastfall = !fastfall;
if (fastfall) {
Runner.instance_.tRex.config.DROP_VELOCITY = 12;
document.getElementById('fastfall').innerText = "Fast Fall - ON ";
tusdino.msg("Enabled Fast Fall");
} else {
Runner.instance_.tRex.config.DROP_VELOCITY = -5;
document.getElementById('fastfall').innerText = "Fast Fall - OFF";
tusdino.msg("Disabled Fast Fall");
}
});
var IS_HIDPI = window.devicePixelRatio > 1;
/** @const */
var IS_IOS = window.navigator.userAgent.indexOf('CriOS') > -1 ||
window.navigator.userAgent == 'UIWebViewForStaticFileContent';
/** @const */
var IS_MOBILE = window.navigator.userAgent.indexOf('Mobi') > -1 || IS_IOS;
/** @const */
var IS_TOUCH_ENABLED = 'ontouchstart' in window;
Runner.instance_.onKeyDown = function(e) {
// Prevent native page scrolling whilst tapping on mobile.
if (IS_MOBILE) {
e.preventDefault();
}
// if (e.target != this.detailsButton) {
if (!this.crashed && (Runner.keycodes.JUMP[e.keyCode] ||
e.type == Runner.events.TOUCHSTART || e.type == Runner.events.GAMEPADCONNECTED)) {
if (!this.activated) {
this.loadSounds();
this.activated = true;
// errorPageController.trackEasterEgg();
}
if ((tusdino.cheats.airjump ? true : !this.tRex.jumping) && (tusdino.cheats.duckAndJump ? true : !this.tRex.ducking)) {
this.playSound(this.soundFx.BUTTON_PRESS);
this.tRex.startJump(this.currentSpeed);
}
}
if (this.crashed && e.type == Runner.events.TOUCHSTART &&
e.currentTarget == this.containerEl) {
this.restart();
}
// }
if (this.activated && !this.crashed && Runner.keycodes.DUCK[e.keyCode]) {
e.preventDefault();
if (this.tRex.jumping) {
// Speed drop, activated only when jump key is not pressed.
this.tRex.setSpeedDrop();
} else if (!this.tRex.ducking) {
// Duck.
this.tRex.setDuck(true);
}
}
}
tusdino.onclick('airjump', function() {
tusdino.cheats.airjump = !tusdino.cheats.airjump;
if (tusdino.cheats.airjump) {
document.getElementById('airjump').innerText = "Airjump - ON ";
tusdino.msg("Enabled Airjump");
} else {
document.getElementById('airjump').innerText = "Airjump - OFF";
tusdino.msg("Disabled Airjump");
}
});
tusdino.onclick('autoplayer', function() {
tusdino.cheats.autoplayer = !tusdino.cheats.autoplayer;
if (tusdino.cheats.autoplayer) {
document.getElementById('autoplayer').innerText = "Autoplayer - ON ";
tusdino.msg("Enabled Autoplayer");
} else {
document.getElementById('autoplayer').innerText = "Autoplayer - OFF";
tusdino.msg("Disabled Autoplayer");
}
});
tusdino.onclick('jumpnotifier', function() {
tusdino.cheats.notifier = !tusdino.cheats.notifier;
if (tusdino.cheats.notifier) {
document.getElementById('jumpnotifier').innerText = "Jump Notifier - ON ";
tusdino.msg("Enabled Jump Notifier");
} else {
document.getElementById('jumpnotifier').innerText = "Jump Notifier - OFF";
tusdino.msg("Disabled Jump Notifier");
}
});
tusdino.onclick('walk', function() {
tusdino.cheats.walk = !tusdino.cheats.walk;
if (tusdino.cheats.walk) {
document.getElementById('walk').innerText = "Walk - ON ";
tusdino.msg("Enabled Walk");
} else {
x = Runner.instance_.tRex.xPos;
document.getElementById('walk').innerText = "Walk - OFF";
tusdino.msg("Disabled Walk");
}
});
tusdino.onclick('obstacleesp', function() {
tusdino.cheats.objectEsp = !tusdino.cheats.objectEsp;
if (tusdino.cheats.objectEsp) {
document.getElementById('obstacleesp').innerText = "Obstacle ESP - ON ";
tusdino.msg("Enabled Obstacle ESP");
} else {
document.getElementById('obstacleesp').innerText = "Obstacle ESP - OFF";
tusdino.msg("Disabled Obstacle ESP");
}
});
tusdino.onclick('tracers', function() {
tusdino.cheats.tracer = !tusdino.cheats.tracer;
if (tusdino.cheats.tracer) {
document.getElementById('tracers').innerText = "Tracers - ON ";
tusdino.msg("Enabled Tracers");
} else {
hslStart = false;
document.getElementById('tracers').innerText = "Tracers - OFF";
tusdino.msg("Disabled Tracers");
}
});
tusdino.onclick('lazervisonkey', function() {
tusdino.cheats.lazerv = !tusdino.cheats.lazerv;
if (tusdino.cheats.lazerv) {
document.getElementById('lazervisonkey').innerText = "Lazer Vison Key (L) - ON ";
tusdino.msg("Enabled Lazer Vison Key");
} else {
hslStart = false;
document.getElementById('lazervisonkey').innerText = "Lazer Vison Key (L) - OFF";
tusdino.msg("Disabled Lazer Vison Key");
}
});
tusdino.onclick('lazervison', function() {
tusdino.cheats.lazervisual = true;
tusdino.cheats.lazer = true;
setTimeout(()=>{tusdino.cheats.lazervisual = false; laz = false;},50);
tusdino.msg("Shot a lazer");
});
tusdino.onclick('esp', function() {
tusdino.cheats.esp = !tusdino.cheats.esp;
if (tusdino.cheats.esp) {
document.getElementById('esp').innerText = "ESP - ON ";
tusdino.msg("Enabled ESP");
} else {
document.getElementById('esp').innerText = "ESP - OFF";
tusdino.msg("Disabled ESP");
}
});
tusdino.onclick('fly', function() {
tusdino.cheats.fly = !tusdino.cheats.fly;
if (tusdino.cheats.fly) {
y = Runner.instance_.tRex.yPos;
x = Runner.instance_.tRex.xPos;
document.getElementById('fly').innerText = "Fly - ON ";
tusdino.msg("Enabled Fly");
} else {
tt = true;
Runner.instance_.tRex.startJump(0.5);
y = 96;
document.getElementById('fly').innerText = "Fly - OFF";
tusdino.msg("Disabled Fly");
}
});
tusdino.onclick('stormcloud', function() {
tusdino.cheats.stormcloud = !tusdino.cheats.stormcloud;
if (tusdino.cheats.stormcloud) {
document.getElementById('stormcloud').innerText = "Storm Cloud - ON ";
tusdino.msg("Enabled Storm Cloud");
} else {
document.getElementById('stormcloud').innerText = "Storm Cloud - OFF";
tusdino.msg("Disabled Storm Cloud");
}
});
tusdino.onclick('noobstacle', function() {
tusdino.cheats.noobstacles = !tusdino.cheats.noobstacles;
if (tusdino.cheats.noobstacles) {
document.getElementById('noobstacle').innerText = "No Obstacle - ON ";
tusdino.msg("Enabled No Obstacle");
} else {
Runner.instance_.horizon.spritePos.CACTUS_LARGE=tusdino.saved.CACTUS_LARGE;
Runner.instance_.horizon.spritePos.CACTUS_SMALL=tusdino.saved.CACTUS_SMALL;
Runner.instance_.horizon.spritePos.PTERODACTYL=tusdino.saved.PTERODACTYL;
document.getElementById('noobstacle').innerText = "No Obstacle - OFF";
tusdino.msg("Disabled No Obstacle");
}
});
tusdino.onclick('obliterate', function() {
tusdino.cheats.obliterate = !tusdino.cheats.obliterate;
if (tusdino.cheats.obliterate) {
document.getElementById('obliterate').innerText = "Obliterate Obstacles - ON ";
tusdino.msg("Enabled Obliterate Obstacles");
} else {
document.getElementById('obliterate').innerText = "Obliterate Obstacles - OFF";
tusdino.msg("Disabled Obliterate Obstacles");
}
});
tusdino.onclick('invisibilitycheat', function() {
tusdino.cheats.invisibility = !tusdino.cheats.invisibility;
if (tusdino.cheats.invisibility) {
document.getElementById('invisibilitycheat').innerText = "Invisibility - ON ";
tusdino.msg("Enabled Invisibility");
} else {
Runner.instance_.tRex.spritePos={x: 677, y: 2}
document.getElementById('invisibilitycheat').innerText = "Invisibility - OFF";
tusdino.msg("Disabled Invisibility");
}
});
tusdino.onclick('obstacleBypass', function() {
tusdino.cheats.obstacleBypass = !tusdino.cheats.obstacleBypass;
if (tusdino.cheats.obstacleBypass) {
document.getElementById('obstacleBypass').innerText = "Obstacle Bypass - ON ";
tusdino.msg("Enabled Obstacle Bypass");
} else {
Runner.instance_.tRex.spritePos={x: 677, y: 2}
document.getElementById('obstacleBypass').innerText = "Obstacle Bypass - OFF";
tusdino.msg("Disabled Obstacle Bypass");
}
});
tusdino.onclick('duckAndJump', function() {
tusdino.cheats.duckAndJump = !tusdino.cheats.duckAndJump;
if (tusdino.cheats.duckAndJump) {
document.getElementById('duckAndJump').innerText = "Duck and Jump - ON ";
tusdino.msg("Enabled Duck and Jump");
} else {
document.getElementById('duckAndJump').innerText = "Duck and Jump - OFF";
tusdino.msg("Disabled Duck and Jump");
}
});
tusdino.onclick('playingIntro', function() {
Runner.instance_.playingIntro = !Runner.instance_.playingIntro;
if (Runner.instance_.playingIntro) {
document.getElementById('playingIntro').innerText = "Playing Intro - ON ";
tusdino.msg("Enabled Playing Intro");
} else {
document.getElementById('playingIntro').innerText = "Playing Intro - OFF";
tusdino.msg("Disabled Playing Intro");
}
});
tusdino.onclick('watermark', function() {
tusdino.cheats.watermark = !tusdino.cheats.watermark;
if (tusdino.cheats.watermark) {
document.getElementById('watermark').innerText = "Watermark - ON ";
tusdino.msg("Enabled Watermark");
} else {
document.getElementById('watermark').innerText = "Watermark - OFF";
tusdino.msg("Disabled Watermark");
}
});
tusdino.onclick('obstacleFloat', function() {
tusdino.cheats.obstacleFloat = !tusdino.cheats.obstacleFloat;
if (tusdino.cheats.obstacleFloat) {
document.getElementById('obstacleFloat').innerText = "Obstacle Float - ON ";
tusdino.msg("Enabled Obstacle Float");
} else {
document.getElementById('obstacleFloat').innerText = "Obstacle Float - OFF";
tusdino.msg("Disabled Obstacle Float");
}
});
tusdino.onclick('rainbowglow', function() {
tusdino.cheats.rainbowglow = !tusdino.cheats.rainbowglow;
if (tusdino.cheats.rainbowglow) {
document.getElementById('rainbowglow').innerText = "Rainbow Glow - ON ";
tusdino.msg("Enabled Rainbow Glow");
} else {
document.getElementById('rainbowglow').innerText = "Rainbow Glow - OFF";
tusdino.msg("Disabled Rainbow Glow");
}
});
tusdino.onclick('glow', function() {
tusdino.cheats.glow = !tusdino.cheats.glow;
if (tusdino.cheats.glow) {
document.getElementById('glow').innerText = "Glow - ON ";
tusdino.msg("Enabled Glow");
} else {
document.getElementById('glow').innerText = "Glow - OFF";
tusdino.msg("Disabled Glow");
}
});
tusdino.onclick('bhop', function() {
tusdino.cheats.bhop = !tusdino.cheats.bhop;
if (tusdino.cheats.bhop) {
document.getElementById('bhop').innerText = "Bhop - ON ";
tusdino.msg("Enabled Bhop");
} else {
document.getElementById('bhop').innerText = "Bhop - OFF";
tusdino.msg("Disabled Bhop");
}
});
tusdino.onclick('tradingcredits', function() {
tusdino.alert("TusDino Credits", "Owners & Developers\n_____________________\nLapide: Main Developer & Coder\n\nContributors\n_____________________\ninon13: Created and suggested a few modules.".replaceAll('\n', '<br>'))
});
tusdino.onclick('removeallcloud', function() {
Runner.instance_.horizon.clouds=[];
tusdino.msg("Removed all clouds");
});
tusdino.onclick('addcloud', function() {
Runner.instance_.horizon.addCloud();
tusdino.msg("Added one cloud");
});
tusdino.onclick('removecloud', function() {
Runner.instance_.horizon.clouds.length > 0 ? Runner.instance_.horizon.clouds = Runner.instance_.horizon.clouds.slice(0,Runner.instance_.horizon.clouds.length-1) : "";
tusdino.msg("Removed one cloud");
});
tusdino.onclick('removeallobstacle', function() {
Runner.instance_.horizon.obstacles=[]
tusdino.msg("Removed all obstacles");
});
tusdino.onclick('addobstacle', function() {
Runner.instance_.horizon.addNewObstacle(Runner.instance_.currentSpeed);
tusdino.msg("Added one obstacle");
});
tusdino.onclick('removeobstacle', function() {
Runner.instance_.horizon.obstacles.length > 0 ? Runner.instance_.horizon.obstacles = Runner.instance_.horizon.obstacles.slice(1,Runner.instance_.horizon.obstacles.length) : "";
tusdino.msg("Removed one obstacle");
});
tusdino.logs.success("Successfully loaded "+atob("VHVzRGlubw==")+"!");
}
setTimeout(()=>{
// Detects if Runner exists when the script has loaded. If not, it will wait for the page to load.
if (typeof Runner != typeof undefined) {
cont();
} else {
window.addEventListener('load', function() {
cont();
});
}
},500);
// Code to run when page loaded
window.addEventListener('load', function() {
});
})();