pages/public/lit/docs/achievements.html

52 lines
38 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>Achievements | 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.B9MYFFit.css" as="style">
<script type="module" src="/assets/app.rr0cst18.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.DvHfxfnp.js">
<link rel="modulepreload" href="/assets/chunks/theme.CdFG_sJp.js">
<link rel="modulepreload" href="/assets/public_lit_docs_achievements.md.D0gRoIWt.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">
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
<meta name="og:title" content="Achievements">
<meta name="og:description" content="">
<meta name="og:image" content="https://www.thepaperpilot.org/paperpilot_thumb.png">
<meta name="og:site_name" content="The Paper Pilot's Digital Garden">
</head>
<body>
<div id="app"><div class="Layout" data-v-585b8ba7 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:#6F42C1;--shiki-dark:#B392F0;"> rows</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: # </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">of</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> rows,</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> cols</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: # </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">of</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> columns,</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 11</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </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:#24292E;--shiki-dark:#E1E4E8;"> more features</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>Each achievement should have an id where the first digit is the row and the second digit is the column.</p><p>Individual achievement can have these features:</p><ul><li><p>name: <strong>optional</strong>. displayed at the top of the achievement. The only visible text. 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 achievement should be awarded.</p></li><li><p>tooltip: Default tooltip for the achievement, appears when it is hovered over. Should convey the goal and any reward for completing the achievement. It can also be a function that returns updating text. Can use basic HTML. Setting this to &quot;&quot; disables the tooltip.</p></li><li><p>effect(): <strong>optional</strong>. A function that calculates and returns the current values of any bonuses from the achievement. Can return a value or an object containing multiple values.</p></li><li><p>unlocked(): <strong>optional</strong>. A function returning a bool to determine if the achievement is visible or not. Default is unlocked.</p></li><li><p>onComplete() - <strong>optional</strong>. this function will be called when the achievement is completed.</p></li><li><p>image: <strong>optional</strong>, puts the image from the given URL (relative or absolute) in the achievement</p></li><li><p>style: <strong>optional</strong>. Applies CSS to this achievement, 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>textStyle: <strong>optional</strong>. Applies CSS to the text, 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>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 achievement was stored under, for convenient access. The achievement in the example&#39;s id is 11.</p></li><li><p>goalTooltip: <strong>optional, deprecated</strong>. Appears when the achievement is hovered over and locked, overrides the basic tooltip. This is to display the goal (or a hint). It can also be a function that returns updating text. Can use basic HTML.</p></li><li><p>doneTooltip: <strong>optional, deprecated</strong>. Appears when the achievement is hovered over and completed, overrides the basic tooltip. This can display what the player achieved (the goal), and the rewards, if any. It can also be a function that returns updating text. Can use basic HTML.</p></li></ul><p>Disable achievement popups by adding <code>achievementsPopups: 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-585b8ba7><div data-v-585b8ba7>CC 2024 <a class="h-card" rel="me" href="/about" data-v-585b8ba7><img src="/me.jpg" alt="" data-v-585b8ba7>The Paper Pilot</a>. <a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/4.0/" data-v-585b8ba7>CC BY-NC-SA 4.0</a>.</div><div data-v-585b8ba7>Any and all opinions listed here are my own and not representative of my employers; future, past and present.</div><div data-v-585b8ba7><a href="https://resume.increment
<script>window.__VP_HASH_MAP__=JSON.parse("{\"garden_mbin_index.md\":\"BNsSwsWx\",\"garden_davey-wreden_index.md\":\"3SvfUHMm\",\"garden_mtx_index.md\":\"Dd4h9UKg\",\"garden_nostr_index.md\":\"DVWnHg1A\",\"garden_my-projects_index.md\":\"Ca-ys1xT\",\"garden_atproto_index.md\":\"BCYXC0to\",\"garden_guide-to-incrementals_navigating-criticism_index.md\":\"DXKJCd43\",\"garden_cinny_index.md\":\"CJpoLlEX\",\"garden_activitypub_index.md\":\"DDmFevpk\",\"garden_capture-the-citadel_index.md\":\"CCV0NE3k\",\"garden_babble-buds_index.md\":\"D5ugZVzA\",\"changelog_index.md\":\"BUV_cTEH\",\"garden_kronos_index.md\":\"ChGNKmLx\",\"garden_digital-gardens_index.md\":\"Be5xH3NK\",\"garden_fedi-v2_index.md\":\"DniyVohW\",\"about_index.md\":\"DNEsxkhw\",\"garden_chat-glue_index.md\":\"Dkp9maBT\",\"garden_matrix_index.md\":\"CRY8KxOn\",\"garden_planar-pioneers_index.md\":\"DswGqmHU\",\"garden_life-is-strange_index.md\":\"DvvGhSm_\",\"garden_social-media_index.md\":\"BCefaUld\",\"garden_garden-rss_index.md\":\"fUyRDsTg\",\"garden_synapse_index.md\":\"BegNqSHz\",\"garden_freeform_index.md\":\"BkExsvjG\",\"garden_game-dev-tree_index.md\":\"D__Q57ok\",\"garden_logseq_index.md\":\"DG7s0_6q\",\"garden_freeform-vs-chronological-dichotomy_index.md\":\"BijYTVcS\",\"garden_fediverse_index.md\":\"DxQE10P4\",\"garden_command-palettes_index.md\":\"DmgfwlxA\",\"garden_guide-to-incrementals_what-is-content_index.md\":\"DABYM3H9\",\"garden_incremental-social_index.md\":\"D8a7_RCt\",\"garden_guide-to-incrementals_appeal-to-developers_index.md\":\"BO6yGgKj\",\"garden_decentralized_index.md\":\"DMYu8cEm\",\"garden_advent-incremental_index.md\":\"DiMhSx-e\",\"public_gamedevtree_docs_infoboxes.md\":\"B4DD8BvC\",\"public_gamedevtree_docs_main-mod-info.md\":\"SBsEn9C7\",\"public_gamedevtree_docs_layer-features.md\":\"I54r8Buk\",\"garden_ivy-road_index.md\":\"C7uDDzvI\",\"garden_pre-order-bonuses_index.md\":\"DMeqyDoY\",\"garden_forgejo_index.md\":\"C3KgDtFH\",\"garden_federated-identity_index.md\":\"CCW9pAse\",\"garden_dice-armor_index.md\":\"NJ0L-bhj\",\"garden_my-personal-website_index.md\":\"BeeHwa0f\",\"garden_the-beginner-s-guide_index.md\":\"B7atDb7V\",\"public_kronos_docs_buyables.md\":\"0zoux8fQ\",\"public_gamedevtree_docs_!general-info.md\":\"DK2xr3yI\",\"public_gamedevtree_docs_achievements.md\":\"jhkjuzaR\",\"public_gamedevtree_docs_bars.md\":\"CBtj98pG\",\"public_gamedevtree_docs_basic-layer-breakdown.md\":\"Ykqytlzk\",\"garden_opti-speech_index.md\":\"CjDieRDV\",\"public_gamedevtree_docs_buyables.md\":\"C7aL_4eK\",\"public_gamedevtree_docs_clickables.md\":\"CwLsimiU\",\"public_gamedevtree_docs_milestones.md\":\"Idyk5tE3\",\"public_gamedevtree_docs_subtabs-and-microtabs.md\":\"BhlicLTn\",\"public_gamedevtree_docs_getting-started.md\":\"CyNrXhyL\",\"public_gamedevtree_docs_updating-tmt.md\":\"Clk0TMnI\",\"public_kronos_old things_2.0-format-changes.md\":\"BM0FXptY\",\"public_gamedevtree_docs_upgrades.md\":\"BspSzPzA\",\"public_gamedevtree_docs_challenges.md\":\"cvYq35wY\",\"public_kronos_readme.md\":\"zcQPLTsl\",\"garden_artificial-intelligence_index.md\":\"BrofDUyq\",\"garden_premium-currency_index.md\":\"CCC3xOOo\",\"garden_the-cozy-web_index.md\":\"rjN3H0C8\",\"garden_the-small-web_index.md\":\"BIff5ZrT\",\"garden_v-ecs_index.md\":\"5AydekFl\",\"garden_the-indieweb_signature-blocks_index.md\":\"DiJ9A9Vr\",\"garden_video-game-monetization_index.md\":\"CxE6NvSz\",\"garden_this-knowledge-hub_index.md\":\"CPRHZOBS\",\"garden_vitepress_index.md\":\"CPLm28R1\",\"guide-to-incrementals_design_criticism_index.md\":\"B6v371xb\",\"garden_wanderstop_index.md\":\"CXR17GUc\",\"guide-to-incrementals_index.md\":\"BDIw2r0j\",\"garden_weird_index.md\":\"CWVUzOIG\",\"guide-to-incrementals_ludology_appeal-developers_index.md\":\"DcS04Tze\",\"public_gamedevtree_readme.md\":\"DVS2_5Qr\",\"garden_the-indieweb_amplification_index.md\":\"mD7RNZbH\",\"now_index.md\":\"towQWDR6\",\"garden_guide-to-incrementals_defining-the-genre_index.md\":\"PpvVz-fM\",\"guide-to-incrementals_ludology_content_index.md\":\"CEcHoIrC\",\"public_gamedevtree_changelog.md\":\"Bp63oq83\",\"pub
</body>
</html>