Adattamento italiano del modulo lib_classes.i della ALAN Standard Library v2.1, © Anssi Räisänen, Artistic License 2.1. Ad opera di Tristano Ajmone, © 2018, Artistic License 2.1.

Vestiario

Un indumento è un capo di vestiario implementato secondo le regole dell’estensione xwear.i di Alan Bampton. Il codice di questa classe impedisce di indossare gli indumenti in ordine insensato — per esempio, non puoi indossare una camicia se stai già indossando una giacca, e via dicendo. Queste funzionalità si applicano solo al protagonista, e non possono essere estese ai PNG.

Questa classe è basata sull’estensione xwear.i creata da Alan Bampton per ALAN v2. Con il permesso dell’autore, l’estensione è stata adattata per funzionare con ALAN v3, ed è stata interamente assimilata nella libreria. Si ringrazia Alan Bampton per aver concesso l’autorizzazione a utilizzarne il codice.

La classe indumento ridefinisce i verbi esamina, indossa e togliti.

Il modulo lib_verbi.i fa riferimento a questa classe nei verbi inventario e prendi, che utilizzano il contenitore abbigliamento definito in questa classe.

Gli indumenti

Ora definiamo la classe indumento ed i suoi attributi comuni, dopodiché ridefiniamo su questa classe i verbi esamina, indossa e togliti.

Verbo esamina

Impedisci verbi che potrebbero dislocare indossati

VERB metti_in --> metti (ogg) 'in' (cont)
    WHEN ogg
      CHECK ogg IS NOT indossato
        ELSE
          IF ogg IN hero
            THEN SAY mia_AT:indumento_andrebbe_rimosso.
            ELSE
              IF ogg IS NOT plurale
                -- "Al momento $+1 [è/sono] indossat$$"
                THEN SAY mia_AT:indumento_indossato_PNG_sg.
                ELSE SAY mia_AT:indumento_indossato_PNG_pl.
              END IF. SAY ogg:vocale.
              FOR EACH ac IsA ACTOR DO
                IF ogg IN ac
                  THEN SAY ac:prep_DA. SAY ac. "."
                END IF.
              END FOR.
          END IF.
  END VERB metti_in.


  VERB metti_su --> metti (ogg) su (superficie)
    WHEN ogg
      CHECK ogg IS NOT indossato
        ELSE
          IF ogg IN hero
            THEN SAY mia_AT:indumento_andrebbe_rimosso.
            ELSE
              IF ogg IS NOT plurale
                -- "Al momento $+1 [è/sono] indossat$$"
                THEN SAY mia_AT:indumento_indossato_PNG_sg.
                ELSE SAY mia_AT:indumento_indossato_PNG_pl.
              END IF. SAY ogg:vocale.
              FOR EACH ac IsA ACTOR DO
                IF ogg IN ac
                  THEN SAY ac:prep_DA. SAY ac. "."
                END IF.
              END FOR.
          END IF.
  END VERB metti_su.


  VERB dai_a --> dai (ogg) a (png)
    WHEN ogg
      CHECK ogg IS NOT indossato
        ELSE
          IF ogg IN hero
            THEN SAY mia_AT:indumento_andrebbe_rimosso.
            ELSE
              IF ogg IS NOT plurale
                -- "Al momento $+1 [è/sono] indossat$$"
                THEN SAY mia_AT:indumento_indossato_PNG_sg.
                ELSE SAY mia_AT:indumento_indossato_PNG_pl.
              END IF. SAY ogg:vocale.
              FOR EACH ac IsA ACTOR DO
                IF ogg IN ac
                  THEN SAY ac:prep_DA. SAY ac. "."
                END IF.
              END FOR.
          END IF.
  END VERB dai_a.

Se si vuole previnire che i PNG consegnino i loro vestiti, decomenntare il seguente verbo, o aggiungerlo al proprio codice dell’avventura:

-- VERB chiedi --> chiedi a (png) (ogg)
  --   WHEN ogg
  --     CHECK ogg IS NOT indossato
  --       ELSE
  --         IF ogg IN hero
  --           THEN SAY mia_AT:ogg2_già_posseduto.
  --           ELSE
  --             FOR EACH ac IsA ACTOR DO
  --               IF THIS IN ac
  --                 THEN SAY THE ac. "sta indossando $+2."
  --               END IF.
  --             END FOR.
  --         END IF.
  -- END VERB chiedi.


  VERB lancia --> lancia (proiettile)
    CHECK proiettile IS NOT indossato
      ELSE
        IF proiettile IN hero
          THEN SAY mia_AT:indumento_andrebbe_rimosso.
          ELSE
            IF proiettile IS NOT plurale
              -- "Al momento $+1 [è/sono] indossat$$"
              THEN SAY mia_AT:indumento_indossato_PNG_sg.
              ELSE SAY mia_AT:indumento_indossato_PNG_pl.
            END IF. SAY proiettile:vocale.
            FOR EACH ac IsA ACTOR DO
              IF proiettile IN ac
                THEN SAY ac:prep_DA. SAY ac. "."
              END IF.
            END FOR.
        END IF.
  END VERB lancia.

  VERB lancia_a --> lancia (proiettile) a (png)
    WHEN proiettile
      CHECK proiettile IS NOT indossato
        ELSE
          IF proiettile IN hero
            THEN SAY mia_AT:indumento_andrebbe_rimosso.
            ELSE
              IF proiettile IS NOT plurale
                -- "Al momento $+1 [è/sono] indossat$$"
                THEN SAY mia_AT:indumento_indossato_PNG_sg.
                ELSE SAY mia_AT:indumento_indossato_PNG_pl.
              END IF. SAY proiettile:vocale.
              FOR EACH ac IsA ACTOR DO
                IF proiettile IN ac
                  THEN SAY ac:prep_DA. SAY ac. "."
                END IF.
              END FOR.
          END IF.
  END VERB lancia_a.

  VERB lancia_contro --> lancia (proiettile) contro (bersaglio)
    WHEN proiettile
      CHECK proiettile IS NOT indossato
        ELSE
          IF proiettile IN hero
            THEN SAY mia_AT:indumento_andrebbe_rimosso.
            ELSE
              IF proiettile IS NOT plurale
                -- "Al momento $+1 [è/sono] indossat$$"
                THEN SAY mia_AT:indumento_indossato_PNG_sg.
                ELSE SAY mia_AT:indumento_indossato_PNG_pl.
              END IF. SAY proiettile:vocale.
              FOR EACH ac IsA ACTOR DO
                IF proiettile IN ac
                  THEN SAY ac:prep_DA. SAY ac. "."
                END IF.
              END FOR.
          END IF.
  END VERB lancia_contro.


  VERB lancia_in --> lancia (proiettile) 'in' (cont)
    WHEN proiettile
      CHECK proiettile IS NOT indossato
        ELSE
          IF proiettile IN hero
            THEN SAY mia_AT:indumento_andrebbe_rimosso.
            ELSE
              IF proiettile IS NOT plurale
                -- "Al momento $+1 [è/sono] indossat$$"
                THEN SAY mia_AT:indumento_indossato_PNG_sg.
                ELSE SAY mia_AT:indumento_indossato_PNG_pl.
              END IF. SAY proiettile:vocale.
              FOR EACH ac IsA ACTOR DO
                IF proiettile IN ac
                  THEN SAY ac:prep_DA. SAY ac. "."
                END IF.
              END FOR.
          END IF.
  END VERB lancia_in.


  VERB lega_a --> lega (ogg) a (bersaglio)
    WHEN ogg
      CHECK ogg IS NOT indossato
        ELSE
          IF ogg IN hero
            THEN SAY mia_AT:indumento_andrebbe_rimosso.
            ELSE
              IF ogg IS NOT plurale
                -- "Al momento $+1 [è/sono] indossat$$"
                THEN SAY mia_AT:indumento_indossato_PNG_sg.
                ELSE SAY mia_AT:indumento_indossato_PNG_pl.
              END IF. SAY ogg:vocale.
              FOR EACH ac IsA ACTOR DO
                IF ogg IN ac
                  THEN SAY ac:prep_DA. SAY ac. "."
                END IF.
              END FOR.
          END IF.
  END VERB lega_a.

Verbo indossa

Verbo togliti

Istruzioni per l’uso del vestiario

La tabella del vestiario

La tabella che segue riporta una selezione di indumenti d’uso comune ed i corrispettivi valori degli attributi per una corretta implementazione.

Per creare un indumento non figurante nella tabella, dovrebbe bastare un po' di ingegno nel rapportare il nuovo capo di vestiario a quelli presenti nella tabella, cercando di cogliere somilianze e differenze fino ad ottenere dei valori adatti allo scopo.

Tabella 1. Indumenti Comuni
Indumento/strato testa viso tronco gambe piedi mani

cappello

2

0

0

0

0

0

canottiera/reggiseno

0

0

2

0

0

0

mutande/slip

0

0

0

2

0

0

pagliaccetto

0

0

4

4

0

0

blusa/camicia/T-shirt

0

0

8

0

0

0

abito donna/tuta lavoro

0

0

8

32

0

0

gonna

0

0

0

32

0

0

pantaloni/pantaloncini

0

0

0

16

0

0

maglione/pullover

0

0

16

0

0

0

giacca

0

0

32

0

0

0

cappotto

0

0

64

64

0

0

calze/gambaletti

0

0

0

0

2

0

collant/calzamaglia

0

0

0

8

2

0

scarpe/stivali

0

0

0

0

4

0

guanti

0

0

0

0

0

2

TODO

Questa sezione contiene l’elenco delle cose da fare per ultimare l’adattamento italiano del modulo della classe del vestiario.

Check-list generale

Lista della spesa per le varie cosucce da fare:

  • Tabella del Vestiario: finire traduzione.

Check-list per Doxter

Finisci di trasformare commenti in documentazione Doxter: