{"id":676,"date":"2025-11-13T21:22:52","date_gmt":"2025-11-14T02:22:52","guid":{"rendered":"https:\/\/makeyour.life\/?page_id=676"},"modified":"2025-12-28T00:10:58","modified_gmt":"2025-12-28T05:10:58","slug":"idle-factory","status":"publish","type":"page","link":"https:\/\/makeyour.life\/index.php\/idle-factory\/","title":{"rendered":"Idle Factory"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"676\" class=\"elementor elementor-676\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a34e8dc e-flex e-con-boxed e-con e-parent\" data-id=\"a34e8dc\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-018e7a9 elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"018e7a9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div id=\"idleFactoryApp\"><\/div>\r\n\r\n<style>\r\n  :root{\r\n    --bg:#0b1220;\r\n    --card:rgba(255,255,255,.06);\r\n    --border:rgba(255,255,255,.12);\r\n    --text:rgba(255,255,255,.92);\r\n    --muted:rgba(255,255,255,.65);\r\n    --accent:#22c55e;\r\n    --accent2:#3b82f6;\r\n    --danger:#ef4444;\r\n    --r:18px;\r\n    --shadow:0 18px 55px rgba(0,0,0,.35);\r\n  }\r\n  #idleFactoryApp{max-width:980px;margin:0 auto;padding:18px 14px;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial}\r\n  .if-shell{\r\n    background:\r\n      radial-gradient(900px 420px at 15% 0%, rgba(34,197,94,.18), transparent 55%),\r\n      radial-gradient(900px 420px at 85% 0%, rgba(59,130,246,.14), transparent 55%),\r\n      linear-gradient(180deg,#020617, #0b1220 45%, #050b17);\r\n    border:1px solid var(--border);\r\n    border-radius:22px;\r\n    box-shadow:var(--shadow);\r\n    overflow:hidden;\r\n  }\r\n  .if-top{display:flex;gap:14px;align-items:center;justify-content:space-between;padding:16px 16px;border-bottom:1px solid var(--border)}\r\n  .if-brand{display:flex;flex-direction:column;gap:2px}\r\n  .if-brand h2{margin:0;color:var(--text);font-size:20px;letter-spacing:.2px}\r\n  .if-brand p{margin:0;color:var(--muted);font-size:13px}\r\n  .if-badges{display:flex;gap:8px;flex-wrap:wrap}\r\n  .badge{padding:6px 10px;border-radius:999px;border:1px solid var(--border);background:rgba(255,255,255,.04);color:var(--muted);font-size:12px}\r\n  .badge strong{color:var(--text)}\r\n  .if-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:14px;padding:16px}\r\n  @media (max-width:860px){.if-grid{grid-template-columns:1fr}}\r\n  .card{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:14px}\r\n  .card h3{margin:0 0 10px;color:var(--text);font-size:16px}\r\n  .statRow{display:grid;grid-template-columns:1fr 1fr;gap:10px}\r\n  @media (max-width:520px){.statRow{grid-template-columns:1fr}}\r\n  .stat{padding:12px;border:1px solid var(--border);border-radius:14px;background:rgba(255,255,255,.04)}\r\n  .stat .k{color:var(--muted);font-size:12px;margin-bottom:6px}\r\n  .stat .v{color:var(--text);font-weight:800;font-size:18px}\r\n  .btnRow{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}\r\n  .btn{\r\n    cursor:pointer;user-select:none;\r\n    padding:12px 14px;border-radius:14px;\r\n    border:1px solid var(--border);\r\n    background:rgba(255,255,255,.06);\r\n    color:var(--text);font-weight:800;\r\n    transition:transform .05s ease, filter .15s ease;\r\n  }\r\n  .btn:active{transform:translateY(1px)}\r\n  .btn.primary{background:linear-gradient(135deg, rgba(34,197,94,.22), rgba(34,197,94,.10));border-color:rgba(34,197,94,.35)}\r\n  .btn.blue{background:linear-gradient(135deg, rgba(59,130,246,.22), rgba(59,130,246,.10));border-color:rgba(59,130,246,.35)}\r\n  .btn.danger{background:linear-gradient(135deg, rgba(239,68,68,.22), rgba(239,68,68,.10));border-color:rgba(239,68,68,.35)}\r\n  .btn[disabled]{opacity:.5;cursor:not-allowed;filter:grayscale(30%)}\r\n  .shopItem{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px;border:1px solid var(--border);border-radius:14px;background:rgba(255,255,255,.04);margin-top:10px}\r\n  .shopItem .left{display:flex;flex-direction:column;gap:4px}\r\n  .shopItem .name{color:var(--text);font-weight:900}\r\n  .shopItem .desc{color:var(--muted);font-size:12px}\r\n  .if-foot{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:12px 16px;border-top:1px solid var(--border);color:var(--muted);font-size:12px}\r\n  .pulse{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 0 rgba(34,197,94,.65);animation:pulse 1.4s infinite}\r\n  @keyframes pulse{\r\n    0%{box-shadow:0 0 0 0 rgba(34,197,94,.55)}\r\n    70%{box-shadow:0 0 0 12px rgba(34,197,94,0)}\r\n    100%{box-shadow:0 0 0 0 rgba(34,197,94,0)}\r\n  }\r\n<\/style>\r\n\r\n<script>\r\n(function(){\r\n  const KEY=\"BQ_IDLE_FACTORY_V01\";\r\n  const fmt = (n)=>{\r\n    n = Number(n||0);\r\n    if (n<1000) return n.toFixed(0);\r\n    const units=[\"K\",\"M\",\"B\",\"T\"];\r\n    let u=-1;\r\n    while(n>=1000 && u<units.length-1){ n\/=1000; u++; }\r\n    return n.toFixed(n<10?2:n<100?1:0)+units[u];\r\n  };\r\n\r\n  const defaultState = ()=>{\r\n    return {\r\n      coins: 0,\r\n      clickPower: 1,\r\n      autoPerSec: 0,\r\n      multiplier: 1,\r\n      autoLevel: 0,\r\n      multiLevel: 0,\r\n      lastTs: Date.now()\r\n    };\r\n  };\r\n\r\n  const load = ()=>{\r\n    try{\r\n      const raw = localStorage.getItem(KEY);\r\n      if(!raw) return defaultState();\r\n      const s = JSON.parse(raw);\r\n      return Object.assign(defaultState(), s);\r\n    }catch(e){ return defaultState(); }\r\n  };\r\n\r\n  const save = (s)=>{\r\n    s.lastTs = Date.now();\r\n    localStorage.setItem(KEY, JSON.stringify(s));\r\n  };\r\n\r\n  let S = load();\r\n\r\n  \/\/ offline earnings (max 6 hours to prevent crazy jumps)\r\n  (function applyOffline(){\r\n    const now = Date.now();\r\n    const dt = Math.min(6*3600, Math.max(0, (now - (S.lastTs||now))\/1000));\r\n    const rate = (S.autoPerSec||0) * (S.multiplier||1);\r\n    S.coins += rate * dt;\r\n    S.lastTs = now;\r\n    save(S);\r\n  })();\r\n\r\n  const app = document.getElementById(\"idleFactoryApp\");\r\n  app.innerHTML = `\r\n    <div class=\"if-shell\">\r\n      <div class=\"if-top\">\r\n        <div class=\"if-brand\">\r\n          <h2>Idle Factory<\/h2>\r\n          <p>Prototype v0.1 \u2014 simple, fast, monetizable later.<\/p>\r\n        <\/div>\r\n        <div class=\"if-badges\">\r\n          <div class=\"badge\"><span class=\"pulse\"><\/span> Live<\/div>\r\n          <div class=\"badge\">Save: <strong>Auto<\/strong><\/div>\r\n          <div class=\"badge\">Mode: <strong>Web<\/strong><\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"if-grid\">\r\n        <div class=\"card\">\r\n          <h3>Production<\/h3>\r\n          <div class=\"statRow\">\r\n            <div class=\"stat\">\r\n              <div class=\"k\">Coins<\/div>\r\n              <div class=\"v\" id=\"coins\">0<\/div>\r\n            <\/div>\r\n            <div class=\"stat\">\r\n              <div class=\"k\">Income \/ sec<\/div>\r\n              <div class=\"v\" id=\"ips\">0<\/div>\r\n            <\/div>\r\n            <div class=\"stat\">\r\n              <div class=\"k\">Click Power<\/div>\r\n              <div class=\"v\" id=\"cp\">1<\/div>\r\n            <\/div>\r\n            <div class=\"stat\">\r\n              <div class=\"k\">Multiplier<\/div>\r\n              <div class=\"v\" id=\"mul\">1x<\/div>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <div class=\"btnRow\">\r\n            <button class=\"btn primary\" id=\"make\">Make (+)<\/button>\r\n            <button class=\"btn blue\" id=\"boost\">Quick Boost (+10% click for 20s)<\/button>\r\n            <button class=\"btn danger\" id=\"reset\">Reset<\/button>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"card\">\r\n          <h3>Upgrades<\/h3>\r\n\r\n          <div class=\"shopItem\">\r\n            <div class=\"left\">\r\n              <div class=\"name\">Auto Machine<\/div>\r\n              <div class=\"desc\">Adds +1 coin\/sec each level.<\/div>\r\n            <\/div>\r\n            <div class=\"right\">\r\n              <button class=\"btn blue\" id=\"buyAuto\">Buy<\/button>\r\n              <div class=\"badge\" style=\"margin-top:8px;text-align:center\">Lvl <strong id=\"autoLvl\">0<\/strong><\/div>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <div class=\"shopItem\">\r\n            <div class=\"left\">\r\n              <div class=\"name\">Multiplier<\/div>\r\n              <div class=\"desc\">Increases all income. +0.25x each level.<\/div>\r\n            <\/div>\r\n            <div class=\"right\">\r\n              <button class=\"btn primary\" id=\"buyMul\">Buy<\/button>\r\n              <div class=\"badge\" style=\"margin-top:8px;text-align:center\">Lvl <strong id=\"mulLvl\">0<\/strong><\/div>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <div class=\"shopItem\">\r\n            <div class=\"left\">\r\n              <div class=\"name\">Click Power<\/div>\r\n              <div class=\"desc\">+1 per level. Good early retention.<\/div>\r\n            <\/div>\r\n            <div class=\"right\">\r\n              <button class=\"btn\" id=\"buyClick\">Buy<\/button>\r\n              <div class=\"badge\" style=\"margin-top:8px;text-align:center\"><strong id=\"clickCost\">\u2014<\/strong><\/div>\r\n            <\/div>\r\n          <\/div>\r\n\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"if-foot\">\r\n        <div>Tip: later we add Ads \/ Gems \/ Skins without touching core loop.<\/div>\r\n        <div id=\"status\">Saved<\/div>\r\n      <\/div>\r\n    <\/div>\r\n  `;\r\n\r\n  const el = (id)=>document.getElementById(id);\r\n\r\n  let boostUntil = 0;\r\n\r\n  const costs = ()=>{\r\n    \/\/ exponential but gentle\r\n    const autoCost = Math.floor(10 * Math.pow(1.35, S.autoLevel));\r\n    const mulCost  = Math.floor(25 * Math.pow(1.55, S.multiLevel));\r\n    const clickCost= Math.floor(12 * Math.pow(1.40, (S.clickPower-1)));\r\n    return {autoCost, mulCost, clickCost};\r\n  };\r\n\r\n  const recalc = ()=>{\r\n    \/\/ base auto\/sec\r\n    S.autoPerSec = S.autoLevel * 1; \/\/ +1 per level\r\n    S.multiplier = 1 + (S.multiLevel * 0.25);\r\n\r\n    const now = Date.now();\r\n    const boostActive = now < boostUntil;\r\n    const clickEffective = S.clickPower * (boostActive ? 1.1 : 1);\r\n\r\n    el(\"coins\").textContent = fmt(S.coins);\r\n    el(\"ips\").textContent   = fmt(S.autoPerSec * S.multiplier);\r\n    el(\"cp\").textContent    = fmt(clickEffective);\r\n    el(\"mul\").textContent   = (S.multiplier).toFixed(2) + \"x\";\r\n    el(\"autoLvl\").textContent = S.autoLevel;\r\n    el(\"mulLvl\").textContent  = S.multiLevel;\r\n\r\n    const {autoCost, mulCost, clickCost} = costs();\r\n    el(\"buyAuto\").textContent = `Buy (${fmt(autoCost)})`;\r\n    el(\"buyMul\").textContent  = `Buy (${fmt(mulCost)})`;\r\n    el(\"buyClick\").textContent= `Buy (${fmt(clickCost)})`;\r\n    el(\"clickCost\").textContent = `Cost: ${fmt(clickCost)}`;\r\n\r\n    el(\"buyAuto\").disabled = S.coins < autoCost;\r\n    el(\"buyMul\").disabled  = S.coins < mulCost;\r\n    el(\"buyClick\").disabled= S.coins < clickCost;\r\n\r\n    el(\"status\").textContent = boostActive ? \"Boost active\u2026\" : \"Saved\";\r\n  };\r\n\r\n  const tick = ()=>{\r\n    \/\/ add auto earnings\r\n    const dt = 0.1; \/\/ 100ms\r\n    S.coins += (S.autoPerSec * S.multiplier) * dt;\r\n    recalc();\r\n  };\r\n\r\n  \/\/ actions\r\n  el(\"make\").addEventListener(\"click\", ()=>{\r\n    const now = Date.now();\r\n    const boostActive = now < boostUntil;\r\n    const clickEffective = S.clickPower * (boostActive ? 1.1 : 1);\r\n    S.coins += clickEffective;\r\n    save(S);\r\n    recalc();\r\n  });\r\n\r\n  el(\"boost\").addEventListener(\"click\", ()=>{\r\n    boostUntil = Date.now() + 20000; \/\/ 20s\r\n    recalc();\r\n  });\r\n\r\n  el(\"buyAuto\").addEventListener(\"click\", ()=>{\r\n    const {autoCost} = costs();\r\n    if(S.coins < autoCost) return;\r\n    S.coins -= autoCost;\r\n    S.autoLevel += 1;\r\n    save(S);\r\n    recalc();\r\n  });\r\n\r\n  el(\"buyMul\").addEventListener(\"click\", ()=>{\r\n    const {mulCost} = costs();\r\n    if(S.coins < mulCost) return;\r\n    S.coins -= mulCost;\r\n    S.multiLevel += 1;\r\n    save(S);\r\n    recalc();\r\n  });\r\n\r\n  el(\"buyClick\").addEventListener(\"click\", ()=>{\r\n    const {clickCost} = costs();\r\n    if(S.coins < clickCost) return;\r\n    S.coins -= clickCost;\r\n    S.clickPower += 1;\r\n    save(S);\r\n    recalc();\r\n  });\r\n\r\n  el(\"reset\").addEventListener(\"click\", ()=>{\r\n    if(!confirm(\"Reset all progress?\")) return;\r\n    S = defaultState();\r\n    save(S);\r\n    recalc();\r\n  });\r\n\r\n  \/\/ autosave every 5s\r\n  setInterval(()=>save(S), 5000);\r\n  \/\/ game loop\r\n  setInterval(tick, 100);\r\n  recalc();\r\n})();\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-676","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/makeyour.life\/index.php\/wp-json\/wp\/v2\/pages\/676","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/makeyour.life\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/makeyour.life\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/makeyour.life\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/makeyour.life\/index.php\/wp-json\/wp\/v2\/comments?post=676"}],"version-history":[{"count":17,"href":"https:\/\/makeyour.life\/index.php\/wp-json\/wp\/v2\/pages\/676\/revisions"}],"predecessor-version":[{"id":1146,"href":"https:\/\/makeyour.life\/index.php\/wp-json\/wp\/v2\/pages\/676\/revisions\/1146"}],"wp:attachment":[{"href":"https:\/\/makeyour.life\/index.php\/wp-json\/wp\/v2\/media?parent=676"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}