Counter does not change

Hello Again.
I'm sorry, but I only started programming two days ago.
I find myself in a situation where, on page 2 and page 10, I ask a counter set to 5 to decrease by 1. On page 10, the counter drops to 4, but returns to 5 if you press on one of the links that lead to page 8 or page 9.
The counter on page 2 instead is completely ignored, remaining at 5.
I would like, if I go from page 2 and also from page 10, that the counter drops to 3 even going back to page 8 or 9 using links on page 10.
How can I solve it?

<asl version="580">
  <include ref="GamebookCore.aslx" />
  <game name="Una Sfortunata Giornata di Lavoro">
    <gameid>3d0f190b-fe4b-47bf-8799-b09a46a5439e</gameid>
    <version>Pre Alpha 0.1</version>
    <firstpublished>2019</firstpublished>
    <category>Comedy</category>
    <roomenter type="script"><![CDATA[
      SetCounter ("pazienza", 5)
      if (GetInt(game, "pazienza") < 0) {
        SetCounter ("pazienza", 5)
      }
      if (GetInt(game, "pazienza") > 5) {
        SetCounter ("pazienza", 5)
      }
    ]]></roomenter>
    <object name="Intro">
      <inherit name="script" />
      <description type="string"></description>
      <options type="stringdictionary" />
      <script type="script"><![CDATA[
        PrintCentered ("Tu sei Alex.<br/>Un giovane ed ambizioso, per quanto pigro, imprenditore, e stai per affrontare quella che sarà probabilmente la peggiore giornata della tua vita.<br/>Dovrai prendere scelte difficili che influiranno sulla tua pazienza e quindi sulla storia, plasmata solo dalle tue decisioni e dalla tua immaginazione.<br/>Cerca di arrivare alla fine della giornata senza dare di matto.<br/><br/>{page:Page1:Cominciamo.}")
      ]]></script>
      <object name="player">
        <inherit name="defaultplayer" />
      </object>
    </object>
  </game>
  <object name="Parte 1">
    <description type="string"></description>
    <object name="Page1">
      <inherit name="script" />
      <script type="script"><![CDATA[
        set (this, "visited", true)
        ClearScreen
        OutputTextNoBr ("E' un normale giovedì, in quel di Borgosesia.<br/>Manca ancora mezz'ora perchè scatti la sveglia, impostata tra perfezionamenti continui di Fantozziana memoria alle spaccate 6.30 del mattino, con un posticipo fisso alle 6.40.<br/>Una breve sonno/veglia ti concede qualche minuto di preparazione psicologica a quella che sarà la tua solita routine, o così pare;<br/>quando, improvvisamente, un acuto e fastidioso abbaiare proveniente dalla stazione ferroviaria, a pochi metri dal tuo appartamento, si manifesta.<br/>Tenti invano di ignorarlo ma la costanza del suono si fa sempre più vivida nella tua testa, creando non poca irritazione.<br/>Decidi quindi che tra {page:Page2:l'ignorare la cosa} ed {page:Page3:esprimere il tuo profondo dissenso verso il padrone}, ")
        RemovePageLink (Page1, Page3)
      ]]></script>
      <object name="Page2">
        <inherit name="script" />
        <description type="string"></description>
        <script type="script"><![CDATA[
          set (this, "visited", true)
          ChangeCounter ("pazienza", -1)
          OutputTextNoBr ("sia il caso di mandare giù il primo boccone della giornata.<br/>Completamente attonito dal rimbombare nelle orecchie di questo suono sempre più snervante, aspetti solo di alzarti dal letto.")
          MovePlayer (Page4)
        ]]></script>
      </object>
      <object name="Page3">
        <inherit name="script" />
        <description type="string"></description>
        <script type="script"><![CDATA[
          set (this, "visited", true)
          OutputTextNoBr ("debba partire quasi involontariamente e ad alta voce una minaccia fisica rivolta alla faccia del proprietario dell'animale.<br/>Dopo 10 secondi buoni di silenzio cupo ed imbarazzante, avverti in lontananza un borbottare di alfabeto asemico misto a dialetto campagnolo. Se non altro il cane ha smesso di abbaiare. Soddisfatto ed orgoglioso della tua fuori uscita mattutina, attendi il momento di alzarsi.")
          MovePlayer (Page4)
        ]]></script>
      </object>
    </object>
    <object name="Page4">
      <inherit name="script" />
      <script type="script"><![CDATA[
        set (this, "visited", true)
        OutputTextNoBr ("<br/>Come di consueto, l'alba rieccheggia su un'assolvente suoneria proveniente dallo smartphone. Nonostante l'idea istintiva nel cervello sia usualmente di posticipare e {page:Page5:chiudere ancora gli occhi}, ti chiedi se questa volta sia il caso di {page:Page6:alzarsi prima}")
        RemovePageLink (Page4, Page6)
      ]]></script>
      <object name="Page5">
        <inherit name="script" />
        <description type="string"></description>
        <script type="script"><![CDATA[
          set (this, "visited", true)
          OutputTextNoBr (". Non ci pensi due volte e torni a dormire, giusto il tempo di realizzare, come ogni giorno, quanto questa decisione faccia più male che bene.<br/>Dopo 10 minuti, percepiti come 10 secondi, avvicini il tuo telefono alla faccia e spegni la sveglia. ")
          MovePlayer (Page7)
        ]]></script>
      </object>
      <object name="Page6">
        <inherit name="script" />
        <description type="string"></description>
        <script type="script">
          set (this, "visited", true)
          OutputTextNoBr (", e miracolosamente, qualcosa di inizialmente ineccepibile accade. Prima che tu riesca a pensare, decidi in modo scattante di metterti in piedi. Nemmeno il rapido calo di pressione può ostacolare la tua eroica decisione. Prendi quindi il telefono e spegni la sveglia. ")
          MovePlayer (Page7)
        </script>
      </object>
    </object>
    <object name="Page7">
      <inherit name="script" />
      <script type="script">
        set (this, "visited", true)
        OutputTextNoBr ("Parte quindi il calvario di ogni inizio giornata. Pensi però a cosa dare priorità. Se {page:Page8:vestirti}, {page:Page9:andare in bagno} o {page:Page10:guardare le news sul cellulare}. ")
        RemovePageLink (Page7, Page10)
      </script>
      <object name="Page8">
        <inherit name="script" />
        <script type="script">
          set (this, "visited", true)
        </script>
      </object>
      <object name="Page9">
        <inherit name="script" />
        <script type="script">
          set (this, "visited", true)
        </script>
      </object>
      <object name="Page10">
        <inherit name="script" />
        <script type="script"><![CDATA[
          set (this, "visited", true)
          OutputTextNoBr ("E non avessi mai deciso per l'ultima opzione. Un colpo basso colpisce il tuo cuore, e ancora prima la meritocrazia in generale.<br/>Sullo schermo, una vivace Elettra Lamborghini, sul palco di Deejay Radio a Riccione, impegnata a simulare un'esibizione a tratti canora, sotto le urla dei fan accaniti. Pensi a quanto la musica stia soffrendo di un male incurabile e ricordi quanto sul palco ci saresti voluto essere te, nei tuoi sogni adolescenziali.<br/>Abbattuto da tanto poco rispetto nei confronti della cultura, ")
          ChangeCounter ("pazienza", -1)
          if (HasSeenPage(Page2)) {
            OutputTextNoBr ("con il cane in stazione che ancora abbaia senza frontiere, ")
          }
          OutputTextNoBr ("rigiri lo sguardo tra la porta del {page:Page9:bagno} e l'armadio dei {page:Page8:vestiti}. ")
          RemovePageLink (Page10, Page7)
        ]]></script>
      </object>
    </object>
  </object>
</asl>

I think the issue is in your roomenter script:

      SetCounter ("pazienza", 5)
      if (GetInt(game, "pazienza") < 0) {
        SetCounter ("pazienza", 5)
      }
      if (GetInt(game, "pazienza") > 5) {
        SetCounter ("pazienza", 5)
      }

First, this sets the counter to 5.
Then, if the counter is less than zero (which it can't be, because you just set it to 5), it sets it to 5.
Then, if the counter is greater than 5 (which it can't be, because you just set it to 5), it sets it to 5.

This script runs whenever the player arrives on a page, before running the script for that page. So you can subtract 1 from the counter and it's now 4, but as soon as the player visits another page, or the same page again, it gets set back to 5.

If you're trying to set the initial value for the counter, then you probably want to set it on the first page; or put a firsttime block around it.


problem solved by moving the initial value from game to page1.

Thank you so much!


This topic is now closed. Topics are closed after 60 days of inactivity.

Support

Forums