Welcome
To join our community, please login or register!
Internet Explorer
Internet Explorer is not supported. Please upgrade to a more modern browser.
johnnyjj45
johnnyjj45
The Grim Reaper
Moderator Voyager Member
I am the Founder and Creator of TSOL:R ("The Story Of Legends: Reborn, the name may change in the future), a soon-to-be somewhat D&D-styled Story that lets the "Players" create characters, items, and more within its community-driven narrative in which they will have full control over happens with their creations (and entirely control the characters they make and their actions) but of course we do have a few rules for creation and what they can do "In-Game" whenever we finish setting up that part. There's a "Server-Side Script" that only I will have access to for the NPC Interactions (if they choose an option that is given), for "Cutscene" sections (sections in the story where there is no player-based action), and to HOPEFULLY keep the players on track as they practically have complete freewill just with a few minor rules that will be explained once we set everything up; currently there is only one main storyline but we have plans for future side storylines in which we may also allow the players to make some of their own. Some notes for Character/Item/Other Creation: We may deny any creation with a valid reason if necessary, and if we feel something needs to be changed (due to rules or something else), we may ask to change it. If you do not know what each section in the info card is for, we are currently working on an "info card" explaining what they are all for. It also may take time for creations to be looked at due to various reasons. More notes will be available in our discord server: I am the Founder and Creator of TSOL:R ("The Story Of Legends: Reborn, the name may change in the future), a soon-to-be somewhat D&D-styled Story that lets the "Players" create characters, items, and more within its community-driven narrative in which they will have full control over happens with their creations (and entirely control the characters they make and their actions) but of course we do have a few rules for creation and what they can do "In-Game" whenever we finish setting up that part. There's a "Server-Side Script" that only I will have access to for the NPC Interactions (if they choose an option that is given), for "Cutscene" sections (sections in the story where there is no player-based action), and to HOPEFULLY keep the players on track as they practically have complete freewill just with a few minor rules that will be explained once we set everything up; currently there is only one main storyline but we have plans for future side storylines in which we may also allow the players to make some of their own. Some notes for Character/Item/Other Creation: We may deny any creation with a valid reason if necessary, and if we feel something needs to be changed (due to rules or something else), we may ask to change it. If you do not know what each section in the info card is for, we are currently working on an "info card" explaining what they are all for. It also may take time for creations to be looked at due to various reasons. More notes will be available in our discord server https://discord.gg/j9R6bMYE
8 months ago
  • Like ()
  • Reply (0)
  • REHHEEHHEE
    8 months ago
  • Like ()
  • Reply (0)
  • hello
    8 months ago
  • Like ()
  • Reply (0)
  • Registered:
    8 months ago
    Last Seen:
    2 months ago
    Profile Views:
    195
    Minecraft
    johnnyjj45
    Discord
    johnnyjj45
    I have several notepads containing information. Let me find them. Venture Code: 4842183832 A9E6-xC0dfYb9CXi3nyMIQxC RfsVaXm2yYwx9m3yy4nGpOqTMNPLBjmqTTJzLFZAqqvb2UW9WiEooDHIPEcEUymL An extra date, most likely related to the 2025 awards event, after decoding "48483921"<t:1751236140> or June 29, 2025, 3:29 PM PST
    3 months ago
    In this forum post, as a community, we will be dissecting and figuring out all of the Lore and little bits of information there is to be found about Venture.
    3 months ago
    That's right, folks! In this forum, we will discuss the latest Venture Lore leaks, and together, we will uncover the truth behind the world we call Venture.
    3 months ago
    LostOfficial: johnnyjj45: Okay people, I just had this CRAZY Idea for a rework of the first scene, trust but it's ACTUALLY fire, I explained a bit to official and hopefully I can make the script for that pretty soon ABSOLUTE CINEMA Me when I realize I forgot most of it
    3 months ago
    Okay people, I just had this CRAZY Idea for a rework of the first scene, trust but it's ACTUALLY fire, I explained a bit to official and hopefully I can make the script for that pretty soon
    5 months ago
    There was a problem loading the widget Minecraft Account: Unable to load template 'file:widgets/minecraft_account.tpl'
    // oneko.js: https://github.com/adryd325/oneko.js (webring variant) (function oneko() { const isReducedMotion = window.matchMedia(`(prefers-reduced-motion: reduce)`) === true || window.matchMedia(`(prefers-reduced-motion: reduce)`).matches === true; if (isReducedMotion) return; const nekoEl = document.createElement("div"); let nekoPosX = 32; let nekoPosY = 32; let mousePosX = 0; let mousePosY = 0; // please use data-neko="true" on your A elements that link to another site with oneko-webring.js instead of this // this is deprecated and will eventually be removed const nekoSites = [ "localhost", ]; try { const searchParams = location.search .replace("?", "") .split("&") .map((keyvaluepair) => keyvaluepair.split("=")); // This is so much repeated code, I don't like it tmp = searchParams.find((a) => a[0] == "catx"); if (tmp && tmp[1]) nekoPosX = parseInt(tmp[1]); tmp = searchParams.find((a) => a[0] == "caty"); if (tmp && tmp[1]) nekoPosY = parseInt(tmp[1]); tmp = searchParams.find((a) => a[0] == "catdx"); if (tmp && tmp[1]) mousePosX = parseInt(tmp[1]); tmp = searchParams.find((a) => a[0] == "catdy"); if (tmp && tmp[1]) mousePosY = parseInt(tmp[1]); } catch (e) { console.error("oneko.js: failed to parse query params."); console.error(e); } function onClick(event) { const target = event.target.closest("A"); if (target === null || !target.getAttribute("href")) { return; } let newLocation; try { newLocation = new URL(target.href); } catch (e) { return; } if ( (nekoSites.includes(newLocation.host) && newLocation.pathname == "/") || target.dataset.neko ) { newLocation.searchParams.append("catx", Math.floor(nekoPosX)); newLocation.searchParams.append("caty", Math.floor(nekoPosY)); newLocation.searchParams.append("catdx", Math.floor(mousePosX)); newLocation.searchParams.append("catdy", Math.floor(mousePosY)); event.preventDefault(); window.location.href = newLocation.toString(); } } document.addEventListener("click", onClick); let frameCount = 0; let idleTime = 0; let idleAnimation = null; let idleAnimationFrame = 0; const nekoSpeed = 10; const spriteSets = { idle: [[-3, -3]], alert: [[-7, -3]], scratchSelf: [ [-5, 0], [-6, 0], [-7, 0], ], scratchWallN: [ [0, 0], [0, -1], ], scratchWallS: [ [-7, -1], [-6, -2], ], scratchWallE: [ [-2, -2], [-2, -3], ], scratchWallW: [ [-4, 0], [-4, -1], ], tired: [[-3, -2]], sleeping: [ [-2, 0], [-2, -1], ], N: [ [-1, -2], [-1, -3], ], NE: [ [0, -2], [0, -3], ], E: [ [-3, 0], [-3, -1], ], SE: [ [-5, -1], [-5, -2], ], S: [ [-6, -3], [-7, -2], ], SW: [ [-5, -3], [-6, -1], ], W: [ [-4, -2], [-4, -3], ], NW: [ [-1, 0], [-1, -1], ], }; function init() { nekoEl.id = "oneko"; nekoEl.ariaHidden = true; nekoEl.style.width = "32px"; nekoEl.style.height = "32px"; nekoEl.style.position = "fixed"; nekoEl.style.pointerEvents = "none"; nekoEl.style.imageRendering = "pixelated"; nekoEl.style.left = `${nekoPosX - 16}px`; nekoEl.style.top = `${nekoPosY - 16}px`; nekoEl.style.zIndex = Number.MAX_VALUE; let nekoFile = "./oneko.gif" const curScript = document.currentScript if (curScript && curScript.dataset.cat) { nekoFile = curScript.dataset.cat } nekoEl.style.backgroundImage = `url(${nekoFile})`; document.body.appendChild(nekoEl); document.addEventListener("mousemove", function (event) { mousePosX = event.clientX; mousePosY = event.clientY; }); window.requestAnimationFrame(onAnimationFrame); } let lastFrameTimestamp; function onAnimationFrame(timestamp) { // Stops execution if the neko element is removed from DOM if (!nekoEl.isConnected) { return; } if (!lastFrameTimestamp) { lastFrameTimestamp = timestamp; } if (timestamp - lastFrameTimestamp > 100) { lastFrameTimestamp = timestamp frame() } window.requestAnimationFrame(onAnimationFrame); } function setSprite(name, frame) { const sprite = spriteSets[name][frame % spriteSets[name].length]; nekoEl.style.backgroundPosition = `${sprite[0] * 32}px ${sprite[1] * 32}px`; } function resetIdleAnimation() { idleAnimation = null; idleAnimationFrame = 0; } function idle() { idleTime += 1; // every ~ 20 seconds if ( idleTime > 10 && Math.floor(Math.random() * 200) == 0 && idleAnimation == null ) { let avalibleIdleAnimations = ["sleeping", "scratchSelf"]; if (nekoPosX < 32) { avalibleIdleAnimations.push("scratchWallW"); } if (nekoPosY < 32) { avalibleIdleAnimations.push("scratchWallN"); } if (nekoPosX > window.innerWidth - 32) { avalibleIdleAnimations.push("scratchWallE"); } if (nekoPosY > window.innerHeight - 32) { avalibleIdleAnimations.push("scratchWallS"); } idleAnimation = avalibleIdleAnimations[ Math.floor(Math.random() * avalibleIdleAnimations.length) ]; } switch (idleAnimation) { case "sleeping": if (idleAnimationFrame < 8) { setSprite("tired", 0); break; } setSprite("sleeping", Math.floor(idleAnimationFrame / 4)); if (idleAnimationFrame > 192) { resetIdleAnimation(); } break; case "scratchWallN": case "scratchWallS": case "scratchWallE": case "scratchWallW": case "scratchSelf": setSprite(idleAnimation, idleAnimationFrame); if (idleAnimationFrame > 9) { resetIdleAnimation(); } break; default: setSprite("idle", 0); return; } idleAnimationFrame += 1; } function frame() { frameCount += 1; const diffX = nekoPosX - mousePosX; const diffY = nekoPosY - mousePosY; const distance = Math.sqrt(diffX ** 2 + diffY ** 2); if (distance < nekoSpeed || distance < 48) { idle(); return; } idleAnimation = null; idleAnimationFrame = 0; if (idleTime > 1) { setSprite("alert", 0); // count down after being alerted before moving idleTime = Math.min(idleTime, 7); idleTime -= 1; return; } let direction; direction = diffY / distance > 0.5 ? "N" : ""; direction += diffY / distance < -0.5 ? "S" : ""; direction += diffX / distance > 0.5 ? "W" : ""; direction += diffX / distance < -0.5 ? "E" : ""; setSprite(direction, frameCount); nekoPosX -= (diffX / distance) * nekoSpeed; nekoPosY -= (diffY / distance) * nekoSpeed; nekoPosX = Math.min(Math.max(16, nekoPosX), window.innerWidth - 16); nekoPosY = Math.min(Math.max(16, nekoPosY), window.innerHeight - 16); nekoEl.style.left = `${nekoPosX - 16}px`; nekoEl.style.top = `${nekoPosY - 16}px`; } init(); })();