pages/public/lit/docs/milestones.html

48 lines
37 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<html lang="en-US" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Milestones | The Paper Pilot</title>
<meta name="description" content="The Paper Pilot's Digital Garden">
<meta name="generator" content="VitePress v1.2.2">
<link rel="preload stylesheet" href="/assets/style.6zfyhKTW.css" as="style">
<script type="module" src="/assets/app.DHQ5jht9.js"></script>
<link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="modulepreload" href="/assets/chunks/framework.VBE0TPts.js">
<link rel="modulepreload" href="/assets/chunks/theme.Cnqsc1-U.js">
<link rel="modulepreload" href="/assets/public_lit_docs_milestones.md.CKbDaByO.lean.js">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Itim&amp;family=Roboto+Mono:ital,wght@0,400;0,600;1,400&amp;display=block">
<link rel="manifest" href="/site.webmanifest">
<link rel="alternate" type="text/mf2+html" href="/changelog">
<link rel="alternate" type="application/rss+xml" title="Changelog" href="/changelog/rss">
<link rel="alternate" type="application/atom+xml" title="Changelog" href="/changelog/atom">
<link rel="alternate" type="application/json+xml" title="Changelog" href="/changelog/json">
<link rel="me" href="mailto:thepaperpilot@incremental.social">
<link rel="me" href="https://incremental.social/u/thepaperpilot">
<link rel="me" href="https://matrix.to/#/@thepaperpilot:incremental.social">
<link rel="me" href="https://code.incremental.social/thepaperpilot">
<link rel="me" href="https://www.linkedin.com/in/anthony-lawn/">
<link rel="me" href="https://mastodon.gamedev.place/@thepaperpilot">
<link rel="me" href="https://beehaw.org/u/thepaperpilot">
<link rel="me" href="https://www.reddit.com/user/ThePaperPilot/">
<link rel="me" href="https://github.com/thepaperpilot">
<link rel="me" href="https://twitter.com/ThePaperPilot">
<meta name="og:description" content="The Paper Pilot's Digital Garden">
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
</head>
<body>
<div id="app"><div class="Layout" data-v-37251ea1 data-v-5d98c3a5><!--[--><!--[--><!--]--><!----><!--]--><!--[--><span tabindex="-1" data-v-0f60ec36></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0f60ec36> Skip to content </a><!--]--><!----><header class="VPNav" data-v-5d98c3a5 data-v-ae24b3ad><div class="VPNavBar has-sidebar top" data-v-ae24b3ad data-v-ccf7ddec><div class="wrapper" data-v-ccf7ddec><div class="container" data-v-ccf7ddec><div class="title" data-v-ccf7ddec><div class="VPNavBarTitle has-sidebar" data-v-ccf7ddec data-v-ab179fa1><a class="title" href="/" data-v-ab179fa1><!--[--><!--]--><!----><span data-v-ab179fa1>The Paper Pilot</span><!--[--><!--]--></a></div></div><div class="content" data-v-ccf7ddec><div class="content-body" data-v-ccf7ddec><!--[--><!--]--><div class="VPNavBarSearch search" data-v-ccf7ddec><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-ccf7ddec data-v-7f418b0f><span id="main-nav-aria-label" class="visually-hidden" data-v-7f418b0f>Main Navigation</span><!--[--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://moddingtree.com" target="_blank" rel="noreferrer" tabindex="0" data-v-7f418b0f data-v-9c663999><!--[--><span data-v-9c663999>Profectus</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://incremental.social" target="_blank" rel="noreferrer" tabindex="0" data-v-7f418b0f data-v-9c663999><!--[--><span data-v-9c663999>Incremental Social</span><!--]--></a><!--]--><!--]--></nav><!----><!----><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-ccf7ddec data-v-0394ad82 data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://code.incremental.social/thepaperpilot" aria-label target="_blank" rel="noopener" data-v-7bc22406 data-v-eee4e7cb><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Forgejo</title><path d="M16.7773 0c1.6018 0 2.9004 1.2986 2.9004 2.9005s-1.2986 2.9004-2.9004 2.9004c-1.0854 0-2.0315-.596-2.5288-1.4787H12.91c-2.3322 0-4.2272 1.8718-4.2649 4.195l-.0007 2.1175a7.0759 7.0759 0 0 1 4.148-1.4205l.1176-.001 1.3385.0002c.4973-.8827 1.4434-1.4788 2.5288-1.4788 1.6018 0 2.9004 1.2986 2.9004 2.9005s-1.2986 2.9004-2.9004 2.9004c-1.0854 0-2.0315-.596-2.5288-1.4787H12.91c-2.3322 0-4.2272 1.8718-4.2649 4.195l-.0007 2.319c.8827.4973 1.4788 1.4434 1.4788 2.5287 0 1.602-1.2986 2.9005-2.9005 2.9005-1.6018 0-2.9004-1.2986-2.9004-2.9005 0-1.0853.596-2.0314 1.4788-2.5287l-.0002-9.9831c0-3.887 3.1195-7.0453 6.9915-7.108l.1176-.001h1.3385C14.7458.5962 15.692 0 16.7773 0ZM7.2227 19.9052c-.6596 0-1.1943.5347-1.1943 1.1943s.5347 1.1943 1.1943 1.1943 1.1944-.5347 1.1944-1.1943-.5348-1.1943-1.1944-1.1943Zm9.5546-10.4644c-.6596 0-1.1944.5347-1.1944 1.1943s.5348 1.1943 1.1944 1.1943c.6596 0 1.1943-.5347 1.1943-1.1943s-.5347-1.1943-1.1943-1.1943Zm0-7.7346c-.6596 0-1.1944.5347-1.1944 1.1943s.5348 1.1943 1.1944 1.1943c.6596 0 1.1943-.5347 1.1943-1.1943s-.5347-1.1943-1.1943-1.1943Z"/></svg></a><a class="VPSocialLink no-icon" href="https://matrix.to/#/@thepaperpilot:incremental.social" aria-label target="_blank" rel="noopener" data-v-7bc22406 data-v-eee4e7cb><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Matrix</title><path d="M.632.55v22.9H2.28V24H0V0h2.28v.55zm7.043 7.26v1.157h.033c.309-.443.683-.784 1.117-1.024.433-.245.936-.365 1.5-.365.54 0 1.033.107 1.481.314.448.208.785.582 1.02 1.108.254-.374.6-.706 1.034-.992.434-.287.95-.43 1.546-.43.453 0 .872.056 1.26.167.388.11.716.286.993.53.276.245.489.559.646.951.152.392.23.863.23 1.417v5.728h-2.349V11.52c0-.286-.01
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> requirementDescription: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;123 waffles&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> effectDescription: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;blah&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> done</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() { </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> player.w.points.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">gte</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">123</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) }</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> etc</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>You can use <code>hasMilestone(layer, id)</code> to determine if the player has a given milestone</p><p>Milestone features:</p><ul><li><p>requirementDescription: A string describing the requirement for unlocking this milestone. Suggestion: Use a &quot;total&quot;. It can also be a function that returns updating text. Can use basic HTML.</p></li><li><p>effectDescription: A string describing the reward for having the milestone. <em>You will have to implement the reward elsewhere.</em> It can also be a function that returns updating text. Can use basic HTML.</p></li><li><p>done(): A function returning a boolean to determine if the milestone should be awarded.</p></li><li><p>toggles: <strong>optional</strong>. Creates toggle buttons that appear on the milestone when it is unlocked. The toggles can toggle a given boolean value in a layer. It is defined as an array of paired items, one pair per toggle. The first is the internal name of the layer the value being toggled is stored in, and the second is the internal name of the variable to toggle. (e.g. [[&quot;b&quot;, &quot;auto&quot;], [&quot;g&quot;, &quot;auto&quot;])</p><p><strong>Tip:</strong> Toggles are not de-set if the milestone becomes locked! In this case, you should also check if the player has the milestone.</p></li><li><p>style: <strong>optional</strong>. Applies CSS to this milestone, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings).</p></li><li><p>unlocked(): <strong>optional</strong>. A function returning a boolean to determine if the milestone should be shown. If absent, it is always shown.</p></li><li><p>layer: <strong>assigned automagically</strong>. It&#39;s the same value as the name of this layer, so you can do <code>player[this.layer].points</code> or similar.</p></li><li><p>id: <strong>assigned automagically</strong>. It&#39;s the &quot;key&quot; which the milestone was stored under, for convenient access. The milestone in the example&#39;s id is 0.</p></li></ul><p>Disaable milestone popups by adding <code>milestonePopups: false</code> to the layer.</p></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-d4a0bba5><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-d4a0bba5><span class="visually-hidden" id="doc-footer-aria-label" data-v-d4a0bba5>Pager</span><div class="pager" data-v-d4a0bba5><!----></div><div class="pager" data-v-d4a0bba5><a class="VPLink link pager-link next" href="/garden/the-small-web" data-v-d4a0bba5><!--[--><span class="desc" data-v-d4a0bba5>Next page</span><span class="title" data-v-d4a0bba5>The Small Web</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><footer class="vp-doc" data-v-37251ea1><div data-v-37251ea1>CC 2024 <a class="h-card" rel="me" href="/about" data-v-37251ea1><img src="/me.jpg" alt="" data-v-37251ea1>The Paper Pilot</a>. <a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/4.0/" data-v-37251ea1>CC BY-NC-SA 4.0</a>.</div><div data-v-37251ea1>Any and all opinions listed here are my own and not representative of my employers; future, past and present.</div><div data-v-37251ea1><a href="https://resume.incremental.social/thepaperpilot/thepaperpilot" data-v-37251ea1>Resume</a> (not actively seeking new opportunities).</div><div data-v-37251ea1>Site built from <a href="https://code.incremental.social/thepaperpilot/pages/commit/5ac040e4c90a8c29635aec2017065e2dfd7e5a83" data-v-37251ea1>this commit</a> on <time data-v-37251ea1>Wednesday, June 26, 2024 at 09:56:04</time>. <a href="https://www.thepaperpilot.org/licenses.txt" data-v-37251ea1>Legal disclaimers</a>.</div></footer><!--]--></div></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"garden_babble-buds_index.md\":\"CBpp75R5\",\"garden_guide-to-incrementals_navigating-criticism_index.md\":\"DSQUJDh_\",\"garden_garden-rss_index.md\":\"C8mUa8no\",\"garden_incremental-social_index.md\":\"BlvyII-u\",\"garden_fedi-v2_index.md\":\"CD6h4imK\",\"garden_artificial-intelligence_index.md\":\"wIcRXeyQ\",\"garden_forgejo_index.md\":\"B30Z1Yr1\",\"garden_advent-incremental_index.md\":\"-tbM87Zu\",\"garden_davey-wreden_index.md\":\"DaaG6Rs_\",\"garden_freeform-vs-chronological-dichotomy_index.md\":\"C3s9vfOD\",\"garden_cinny_index.md\":\"DQF3y0pH\",\"garden_decentralized_index.md\":\"DtRHkn6l\",\"garden_guide-to-incrementals_index.md\":\"cpU6eWEv\",\"garden_digital-gardens_index.md\":\"C2T43DJs\",\"garden_guide-to-incrementals_defining-the-genre_index.md\":\"LdwcaNau\",\"garden_dice-armor_index.md\":\"Ci2yxT5y\",\"garden_nostr_index.md\":\"S73B3_lc\",\"garden_my-projects_index.md\":\"orLgJbDo\",\"garden_opti-speech_index.md\":\"DzToYZcI\",\"garden_open-source_index.md\":\"Ry9tIyR8\",\"garden_planar-pioneers_index.md\":\"CquZG8sc\",\"garden_pre-order-bonuses_index.md\":\"Dtp16no9\",\"garden_profectus_index.md\":\"BrzBdIDA\",\"garden_premium-currency_index.md\":\"DJCOONz2\",\"guide-to-incrementals_ludology_content_index.md\":\"Dch_mWbG\",\"garden_guide-to-incrementals_what-is-content_index.md\":\"dAiXa-8R\",\"garden_the-indieweb_signature-blocks_index.md\":\"BtkF7rPl\",\"garden_the-cozy-web_index.md\":\"l4hw9mTO\",\"garden_the-beginner-s-guide_index.md\":\"f6OfVTtb\",\"garden_vitepress_index.md\":\"D_RpxyRd\",\"garden_atproto_index.md\":\"CNntfcuw\",\"changelog_index.md\":\"DRCB2k65\",\"garden_matrix_index.md\":\"9CiO9JOd\",\"garden_ivy-road_index.md\":\"CxOvJQfN\",\"garden_chat-glue_index.md\":\"BguncNUl\",\"garden_activitypub_index.md\":\"j7446eQY\",\"about_index.md\":\"p-omr8fP\",\"garden_guide-to-incrementals_appeal-to-developers_index.md\":\"DlQB6Cv1\",\"garden_command-palettes_index.md\":\"D4LOaOQF\",\"garden_chronological_index.md\":\"BZZrWUNE\",\"garden_commune_index.md\":\"BnvEje6C\",\"garden_capture-the-citadel_index.md\":\"kOzNXLm1\",\"garden_game-dev-tree_index.md\":\"4OjEyXeq\",\"guide-to-incrementals_index.md\":\"C2n46o08\",\"garden_the-small-web_index.md\":\"MyHZheuD\",\"garden_the-indieweb_amplification_index.md\":\"D_VjglnR\",\"garden_webrings_index.md\":\"BhJTyD2M\",\"garden_weird_index.md\":\"DVRu5bsj\",\"guide-to-incrementals_design_criticism_index.md\":\"CxTo_if4\",\"garden_mbin_index.md\":\"TpDXM8Z_\",\"index.md\":\"BanIo7zz\",\"garden_social-media_index.md\":\"BXl8mCPt\",\"garden_kronos_index.md\":\"BJzenBdR\",\"guide-to-incrementals_ludology_definition_index.md\":\"9Qgsg6jI\",\"public_gamedevtree_2.0-format-changes.md\":\"DWZ5VgEH\",\"now_index.md\":\"DCyY6GLT\",\"public_gamedevtree_readme.md\":\"B6IoVQ-I\",\"public_gamedevtree_docs_!general-info.md\":\"B4kcWpV-\",\"public_gamedevtree_docs_achievements.md\":\"C6gZOG4E\",\"garden_mtx_index.md\":\"_m7kYEDv\",\"garden_my-personal-website_index.md\":\"BOwTbWh3\",\"public_gamedevtree_docs_basic-layer-breakdown.md\":\"DG6Q9mdT\",\"garden_this-knowledge-hub_index.md\":\"onjI-kcv\",\"public_gamedevtree_docs_challenges.md\":\"DJU5H6Rk\",\"garden_synapse_index.md\":\"DySWAYIQ\",\"public_gamedevtree_docs_getting-started.md\":\"DZiPQZAv\",\"public_gamedevtree_docs_infoboxes.md\":\"BtrpL17l\",\"public_gamedevtree_docs_custom-tab-layouts.md\":\"oOQumDgW\",\"garden_v-ecs_index.md\":\"YaBZ-b4B\",\"garden_wanderstop_index.md\":\"C9r14wL7\",\"public_gamedevtree_docs_layer-features.md\":\"DAMp8TY6\",\"garden_video-game-monetization_index.md\":\"DEobMnEV\",\"garden_federated-identity_index.md\":\"DxfavPQ_\",\"garden_freeform_index.md\":\"HZHMKFeP\",\"garden_fediverse_index.md\":\"BJth35Iy\",\"garden_guide-to-incrementals_appeal-to-players_index.md\":\"BiaB1toq\",\"public_gamedevtree_docs_subtabs-and-microtabs.md\":\"BUkbEA-K\",\"garden_logseq_index.md\":\"dHTC8SPL\",\"public_gamedevtree_docs_clickables.md\":\"DlF0g6fO\",\"public_gamedevtree_docs_main-mod-info.md\":\"DGfpmFPw\",\"public_kronos_docs_grids.md\":\"dby
</body>
</html>