A pizzeria roleplay game where you play as a nightguard, animatronic, chef, or janitor. Earn in-game currency to unlock characters, outfits, mini-games like prop hunt, and activities such as arcades and claw machines.


FONNIE :3


(function () { var MEMBERS = [ { name: "Zwei", username: "ZweiForgot", position: "Lead, Programmer, UI Artist", avatar: "https://cdn.arrival.studio/gg/site/zwei_bunny.png" }, { name: "Torre", username: "Torreleon234", position: "UI Artist, 2D Artist" }, { name: "Zen", username: "ZennFake", position: "General Bug Fixes, UI Artist", avatar: "https://cdn.arrival.studio/gg/site/zen.png" }, { name: "EnlargedQuack", username: "EnlargedQuack", position: "2D Artist, 3D Artist, Environment Artist" }, { name: "12GaugeOrchestra", username: "rermmnia", position: "Composer" }, { name: "Daivian", username: "Daivians", position: "3D Animator, QA Testing", avatar: "https://cdn.arrival.studio/gg/site/davian.png" }, { name: "M4X4", username: "M4X4O", position: "General Bug Fixes" }, { name: "G4V1N", username: "gavinzombieboy123", position: "General Bug Fixes, QA Testing" }, { name: "ChrisArrived", username: "ChrisArrived", position: "QA Testing, Web Developer" }, { name: "Polly", username: "YourPalPolly", position: "Marketing, QA Testing" }, ]; var SPEED = 42; var BATCH = 5; var MAX_WAIT = 4000; function displayName(member) { return member.name || member.username; } function profileUrl(username) { return "https://www.roblox.com/users/profile?username=" + encodeURIComponent(username); } function buildCard(member) { var card = document.createElement("a"); card.className = "rbxc-card"; card.setAttribute("data-username", member.username); card.href = profileUrl(member.username); card.target = "_blank"; card.rel = "noopener noreferrer"; var avatar = document.createElement("div"); avatar.className = "rbxc-avatar"; if (member.avatar) { var custom = document.createElement("img"); custom.alt = displayName(member); custom.src = member.avatar; avatar.appendChild(custom); } else { var fallback = document.createElement("span"); fallback.className = "rbxc-fallback"; fallback.textContent = displayName(member).charAt(0).toUpperCase(); avatar.appendChild(fallback); } var meta = document.createElement("div"); meta.className = "rbxc-meta"; var name = document.createElement("p"); name.className = "rbxc-name"; name.textContent = displayName(member); var role = document.createElement("p"); role.className = "rbxc-role"; role.textContent = member.position; meta.appendChild(name); meta.appendChild(role); card.appendChild(avatar); card.appendChild(meta); return card; } function fillLane(lane, members, minWidth) { lane.innerHTML = ""; lane.style.animationDuration = "0s"; var passes = 0; do { members.forEach(function (member) { lane.appendChild(buildCard(member)); }); passes++; } while (lane.offsetWidth < minWidth && passes < 24); Array.prototype.slice.call(lane.children).forEach(function (node) { var clone = node.cloneNode(true); clone.setAttribute("tabindex", "-1"); clone.setAttribute("aria-hidden", "true"); lane.appendChild(clone); }); lane.style.animationDuration = Math.max(12, lane.offsetWidth / 2 / SPEED) + "s"; } function lookup(data, username) { if (data[username]) return data[username]; var wanted = username.toLowerCase(); for (var key in data) { if (key.toLowerCase() === wanted) return data[key]; } return null; } function chunk(list, size) { var out = []; for (var i = 0; i < list.length; i += size) out.push(list.slice(i, i + size)); return out; } function preload(urls, done) { var pending = urls.length; if (!pending) return done(); urls.forEach(function (url) { var img = new Image(); img.onload = img.onerror = function () { if (--pending === 0) done(); }; img.src = url; }); } function applyEntry(root, member, entry) { var cards = root.querySelectorAll('[data-username="' + member.username + '"]'); Array.prototype.forEach.call(cards, function (card) { if (entry.id) card.href = "https://www.roblox.com/users/" + entry.id + "/profile"; if (member.avatar || !entry.avatar) return; var img = document.createElement("img"); img.alt = displayName(member); img.src = entry.avatar; var avatar = card.querySelector(".rbxc-avatar"); avatar.innerHTML = ""; avatar.appendChild(img); }); } function init(root) { var lanes = root.querySelectorAll(".rbxc-lane"); var top = MEMBERS.filter(function (m, i) { return i % 2 === 0; }); var bottom = MEMBERS.filter(function (m, i) { return i % 2 === 1; }); if (!bottom.length) bottom = top.slice(); var cache = null; var ready = false; var queued = false; function show() { root.setAttribute("data-visible", "1"); } function markReady() { if (ready) return; ready = true; if (queued) show(); } function reveal() { if (ready) show(); else queued = true; } function applyAll() { if (!cache) return; MEMBERS.forEach(function (member) { var entry = lookup(cache, member.username); if (entry) applyEntry(root, member, entry); }); } function layout() { var minWidth = root.clientWidth || 320; fillLane(lanes[0], top, minWidth); fillLane(lanes[1], bottom, minWidth); applyAll(); } function loadHeadshots() { var endpoint = root.getAttribute("data-endpoint"); if (!endpoint) return markReady(); var base = endpoint.replace(/\/$/, ""); var batches = chunk(MEMBERS, BATCH).map(function (group) { var query = group.map(function (m) { return encodeURIComponent(m.username); }).join(","); return fetch(base + "?usernames=" + query) .then(function (res) { return res.json(); }) .then(function (data) { if (data.error) throw new Error(data.error + " " + (data.detail || "")); return data; }) .catch(function (err) { console.warn("[rbxc] lookup failed for " + query + ":", err.message || err); return {}; }); }); Promise.all(batches).then(function (results) { cache = {}; results.forEach(function (data) { for (var key in data) cache[key] = data[key]; }); var missing = MEMBERS.filter(function (m) { return !lookup(cache, m.username); }) .map(function (m) { return m.username; }); if (missing.length) console.warn("[rbxc] no Roblox data for:", missing.join(", ")); var urls = MEMBERS.map(function (member) { var entry = lookup(cache, member.username); return member.avatar || (entry && entry.avatar); }).filter(Boolean); preload(urls, function () { applyAll(); markReady(); }); }); } var timer; var width = window.innerWidth; window.addEventListener("resize", function () { if (window.innerWidth === width) return; width = window.innerWidth; clearTimeout(timer); timer = setTimeout(layout, 250); }); layout(); loadHeadshots(); setTimeout(markReady, MAX_WAIT); if (!("IntersectionObserver" in window)) { root.setAttribute("data-onscreen", "1"); reveal(); return; } var full = root.offsetHeight > window.innerHeight * 0.9 ? 0.5 : 1; new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { root.setAttribute("data-onscreen", "1"); if (entry.intersectionRatio >= full - 0.01 && !root.hasAttribute("data-visible")) reveal(); } else { root.removeAttribute("data-onscreen"); } }); }, { threshold: [0, full] }).observe(root); } var tries = 0; function boot() { var roots = document.querySelectorAll(".rbxc:not([data-ready])"); if (roots.length) { Array.prototype.forEach.call(roots, function (root) { root.setAttribute("data-ready", "1"); init(root); }); return; } if (tries++ < 240) requestAnimationFrame(boot); } boot(); })();
(function() { const DATA = [ ['@GGallantGaming', '600k+ Subscribers', 'The Most ACCURATE Roblox FNAF Movie Game'], ]; const wrap = document.querySelector('.tm-wrap'); const slidesEl = wrap.querySelector('.tm-slides'); const dotsEl = wrap.querySelector('.tm-dots'); const track = wrap.querySelector('.tm-track'); const total = DATA.length; let cur = 0, timer = 0, resizeT = 0; function el(tag, cls) { const e = document.createElement(tag); if (cls) e.className = cls; return e; } DATA.forEach(([name, role, text], i) => { const slide = el('div', 'tm-slide' + (i === 0 ? ' on' : '')); const card = el('div', 'tm-card'); const p = el('p', 'tm-text'); p.innerHTML = text; const author = el('div', 'tm-author'); const aName = el('div', 'tm-author-name'); aName.innerHTML = name; const aRole = el('div', 'tm-author-role'); aRole.textContent = role; author.appendChild(aName); author.appendChild(aRole); card.appendChild(p); card.appendChild(author); slide.appendChild(card); slidesEl.appendChild(slide); const dot = el('button', 'tm-dot' + (i === 0 ? ' on' : '')); dot.dataset.i = i; dotsEl.appendChild(dot); }); const slides = slidesEl.children; const dots = dotsEl.children; setTimeout(() => wrap.classList.add('vis'), 50); function canAuto() { const h = location.hash; return !document.hidden && (!h || h === '#' || h === '#/'); } function update() { const sw = slides[0].offsetWidth; const gap = innerWidth <= 768 ? 16 : 24; const center = (track.offsetWidth - sw) / 2; slidesEl.style.transform = 'translateX(' + (center - cur * (sw + gap)) + 'px)'; for (let i = 0; i < total; i++) { const active = i === cur; slides[i].classList.toggle('on', active); dots[i].classList.toggle('on', active); } } function go(idx) { cur = ((idx % total) + total) % total; update(); } function autoStart() { clearInterval(timer); if (canAuto()) timer = setInterval(function() { canAuto() ? go(cur + 1) : clearInterval(timer); }, 5000); } wrap.querySelector('.tm-nav').addEventListener('click', function(e) { const btn = e.target.closest('.tm-btn'); const dot = e.target.closest('.tm-dot'); if (btn) go(cur + +btn.dataset.dir); else if (dot) go(+dot.dataset.i); else return; autoStart(); }); addEventListener('resize', function() { clearTimeout(resizeT); resizeT = setTimeout(update, 100); }); addEventListener('hashchange', function() { canAuto() ? autoStart() : clearInterval(timer); }); document.addEventListener('visibilitychange', function() { canAuto() ? autoStart() : clearInterval(timer); }); update(); autoStart(); })();


Contact Us


page not found!

Seems like the page you're looking for doesn't exist or has gone missing!