# About Achievements

**URL:** <https://forum.choiceofgames.com/t/about-achievements/28654>\
**Category:** ChoiceScript Help\
**Created:** [July 12, 2017, 10:26am UTC](https://forum.choiceofgames.com/t/about-achievements/28654 "2017-07-12T10:26:00Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![Avery\_Moore](https://sea3.discourse-cdn.com/choiceofgames/user_avatar/forum.choiceofgames.com/avery_moore/32/57275_2.png) [@Avery\_Moore](https://forum.choiceofgames.com/u/Avery_Moore)\
**Post date:** [July 12, 2017, 10:26am UTC](https://forum.choiceofgames.com/t/about-achievements/28654/1 "2017-07-12T10:26:00Z")

</div>

I’m wondering if there’s any way for achievements to track data across multiple playthroughs. For example, if a game had five possible endings, would it be possible to award an achievement for achieving all possible endings?

---

<div class="post-metadata">

**Author:** ![ParrotWatcher](https://sea3.discourse-cdn.com/choiceofgames/user_avatar/forum.choiceofgames.com/parrotwatcher/32/49963_2.png) [@ParrotWatcher](https://forum.choiceofgames.com/u/ParrotWatcher)\
**Post date:** [July 12, 2017, 10:30am UTC](https://forum.choiceofgames.com/t/about-achievements/28654/2 "2017-07-12T10:30:31Z")

</div>

There’s actually a command for this: [`*check_achievements`](http://choicescriptdev.wikia.com/wiki/Check_achievements)

Edit: the link doesn’t seem to work… It’s given on this thread, too:

> [@How do I make something permanent that will stay after replaying the game?](https://forum.choiceofgames.com/t/how-do-i-make-something-permanent-that-will-stay-after-replaying-the-game/22246/3):
>
> As fairygodfather said, you could do this by using the check achievements command. Simply add an achievement for finishing the game and check for it upon starting a new one.

---

<div class="post-metadata">

**Author:** ![Szaal](https://sea3.discourse-cdn.com/choiceofgames/user_avatar/forum.choiceofgames.com/szaal/32/112202_2.png) [@Szaal](https://forum.choiceofgames.com/u/Szaal)\
**Post date:** [July 12, 2017, 10:37am UTC](https://forum.choiceofgames.com/t/about-achievements/28654/3 "2017-07-12T10:37:01Z")

</div>

[The wiki is at here](http://choicescriptdev.wikia.com/wiki/Check_achievements) actually.

@ParrotWatcher the link doesn’t work probably because you included the backquote ( ` ) on the link 😬

---

<div class="post-metadata">

**Author:** ![ParrotWatcher](https://sea3.discourse-cdn.com/choiceofgames/user_avatar/forum.choiceofgames.com/parrotwatcher/32/49963_2.png) [@ParrotWatcher](https://forum.choiceofgames.com/u/ParrotWatcher)\
**Post date:** [July 12, 2017, 10:38am UTC](https://forum.choiceofgames.com/t/about-achievements/28654/4 "2017-07-12T10:38:44Z")

</div>

Nope, that doesn’t work, either. Or the asterisk… 😕

Okay, I needed the `http://` part…

---

<div class="post-metadata">

**Author:** ![Szaal](https://sea3.discourse-cdn.com/choiceofgames/user_avatar/forum.choiceofgames.com/szaal/32/112202_2.png) [@Szaal](https://forum.choiceofgames.com/u/Szaal)\
**Post date:** [July 12, 2017, 10:42am UTC](https://forum.choiceofgames.com/t/about-achievements/28654/5 "2017-07-12T10:42:30Z")

</div>

Huweeheehee 🤣  
At least we learn something new, everyday.

---

<div class="post-metadata">

**Author:** ![Avery\_Moore](https://sea3.discourse-cdn.com/choiceofgames/user_avatar/forum.choiceofgames.com/avery_moore/32/57275_2.png) [@Avery\_Moore](https://forum.choiceofgames.com/u/Avery_Moore)\
**Post date:** [July 13, 2017, 10:48am UTC](https://forum.choiceofgames.com/t/about-achievements/28654/6 "2017-07-13T10:48:42Z")

</div>

Thanks everybody! 🙂

---

<div class="post-metadata">

**Author:** ![Avery\_Moore](https://sea3.discourse-cdn.com/choiceofgames/user_avatar/forum.choiceofgames.com/avery_moore/32/57275_2.png) [@Avery\_Moore](https://forum.choiceofgames.com/u/Avery_Moore)\
**Post date:** [July 13, 2017, 11:16am UTC](https://forum.choiceofgames.com/t/about-achievements/28654/7 "2017-07-13T11:16:34Z")

</div>

Taking a look at that link though, it seems like it’s only possible to do this by tracking other achievements. So, if for example, I wanted to award an achievement for finding all possible endings, I would first have to award achievements for each individual ending.

Lets say, I don’t want to give an achievement for each individual ending. Would there still be a way of tracking that? For example, is there some kind of code for fake achievements? Something that wouldn’t award the player points or show up on the achievements screen, but could still be tracked across multiple playthroughs?

---

<div class="post-metadata">

**Author:** ![Vendetta](https://sea3.discourse-cdn.com/choiceofgames/user_avatar/forum.choiceofgames.com/vendetta/32/533_2.png) [@Vendetta](https://forum.choiceofgames.com/u/Vendetta)\
**Post date:** [July 13, 2017, 11:20am UTC](https://forum.choiceofgames.com/t/about-achievements/28654/8 "2017-07-13T11:20:28Z")

</div>

Nope, not that I’m aware of, but it’s an excellent idea for precisely the sort of thing you wish to do there.

---

<div class="post-metadata">

**Author:** ![Szaal](https://sea3.discourse-cdn.com/choiceofgames/user_avatar/forum.choiceofgames.com/szaal/32/112202_2.png) [@Szaal](https://forum.choiceofgames.com/u/Szaal)\
**Post date:** [July 13, 2017, 11:33am UTC](https://forum.choiceofgames.com/t/about-achievements/28654/9 "2017-07-13T11:33:07Z")

</div>

Hmm…  
I think your case can be circumvented (cheated), somehow. 🤔

What are you specifically trying to aim with tracking these achievements?  
Is it a content that’s locked behind an achievements?  
Or achievements that stored on cross platforms or something?

---

<div class="post-metadata">

**Author:** ![Avery\_Moore](https://sea3.discourse-cdn.com/choiceofgames/user_avatar/forum.choiceofgames.com/avery_moore/32/57275_2.png) [@Avery\_Moore](https://forum.choiceofgames.com/u/Avery_Moore)\
**Post date:** [July 13, 2017, 11:56am UTC](https://forum.choiceofgames.com/t/about-achievements/28654/10 "2017-07-13T11:56:36Z")

</div>

> [@Szaal](#):
>
> What are you specifically trying to aim with tracking these achievements?  
> Is it a content that’s locked behind an achievements?  
> Or achievements that stored on cross platforms or something?

No, there’s just a game I’m making where the player can choose several different paths to go down and I thought it would be cool if I could award an achievement for completing all of these possible paths (without giving an achievement for just completing one of the paths.) I think I might just award achievements for the individual paths though. Something like 5 points each, so it’s not too much of a reward.

---

<div class="post-metadata">

**Author:** ![Szaal](https://sea3.discourse-cdn.com/choiceofgames/user_avatar/forum.choiceofgames.com/szaal/32/112202_2.png) [@Szaal](https://forum.choiceofgames.com/u/Szaal)\
**Post date:** [July 13, 2017, 12:00pm UTC](https://forum.choiceofgames.com/t/about-achievements/28654/11 "2017-07-13T12:00:42Z")

</div>

AAh! I can see where you’re going with that one! 😨

Hmm… hmm… 🤔  
The problem with achievements is that they always go POP UP.  
And if you use stats or variables instead, they’ll always be reset for each playthrough.

Errhhhfgrffrfff… 🤔  
I don’t know 🤯  
Somebody lend me a hand here.

---

<div class="post-metadata">

**Author:** ![Avery\_Moore](https://sea3.discourse-cdn.com/choiceofgames/user_avatar/forum.choiceofgames.com/avery_moore/32/57275_2.png) [@Avery\_Moore](https://forum.choiceofgames.com/u/Avery_Moore)\
**Post date:** [July 20, 2017, 3:24pm UTC](https://forum.choiceofgames.com/t/about-achievements/28654/12 "2017-07-20T15:24:51Z")

</div>

New question! How about achievements that rely on variables? I’m sure this can be done as I think I’ve seen games that do this.

Say, for example, you wanted to award an achievement for getting your stat to a certain level? Like say, if your Strength reaches a score of 100, you get an achievement for it. I guess this could be done by adding “\*if (Strength = 100) achieve achievement” every time the character’s strength improves in the game, but is there an easier way of doing it than that?

---

<div class="post-metadata">

**Author:** ![Vendetta](https://sea3.discourse-cdn.com/choiceofgames/user_avatar/forum.choiceofgames.com/vendetta/32/533_2.png) [@Vendetta](https://forum.choiceofgames.com/u/Vendetta)\
**Post date:** [July 20, 2017, 4:29pm UTC](https://forum.choiceofgames.com/t/about-achievements/28654/13 "2017-07-20T16:29:27Z")

</div>

It really depends on your actual game design. For instance, if your game uses some sort of ‘transit’ file (a scene file it periodically reloads throughout the course of the game for one reason or another) then that _may_ be a handy place to consider placing this sort of check.

It may even be possible to place it in choicescript\_stats.txt, so it only checks / triggers when the player views that actual stat—but don’t quote me on this as I’ve not actually tested using it for this particular purpose, and I’m not sure I would even if it were possible.

Failing either of those, I would suggest just placing those checks in a \*gosub / \*return [subroutine](http://choicescriptdev.wikia.com/wiki/Gosub) and make use of that with every stat change, so \*achieve is triggered at the precise moment the condition is met.

[N.B. If using [fairmath](http://choicescriptdev.wikia.com/wiki/Arithmetic_operators#Fairmath), bear in mind that values will be in the range of 1-99 at any given time, so 100 would never actually _be_ achievable. 🙂 ]

---

<div class="post-metadata">

**Author:** ![Szaal](https://sea3.discourse-cdn.com/choiceofgames/user_avatar/forum.choiceofgames.com/szaal/32/112202_2.png) [@Szaal](https://forum.choiceofgames.com/u/Szaal)\
**Post date:** [July 20, 2017, 11:55pm UTC](https://forum.choiceofgames.com/t/about-achievements/28654/14 "2017-07-20T23:55:19Z")

</div>

> [@Avery\_Moore](#):
>
> but is there an easier way of doing it than that?

If what you mean by “easier way” is “can I award it regardless on which scene the player is,” than you’ll have to go `*if stats=100` on every increments you have on the game.

It’s actually not a tedious labor. Just use the search function and edit them 1 by 1.  
Ok, that sounds tedious 😅
