RPGScript comincia a prendere forma

Un 20 naturale a tutti!

Se avete letto l’articolo sulle peculiarità del personaggio saprete che la prossima questione da risolvere è la gestione della miriade di bonus dati da classi, talenti e quant’altro. Per questo ho concluso che una semplice lista di bonus non basta: serve qualcosa di più flessibile, un sistema di “regole” che nel succitato articolo ho provato a schematizzare, definendolo “mini-linguaggio” e dandogli l’altisonante nome di RPGScript.

Stavolta penso però di aver cannato sia il nome che la definizione! Penso quindi che semplicemente non darò un nome a questa funzionalità, in quanto si basa saltanto su di una sintassi interpretata da una funzione.

Per farvi capire come sto procedendo, vi mostro come sto implementando i privilegi di classe del 1° livello del Barbaro (Ira, Analfabetismo, Movimento Veloce), che ne pensate?

 


Movimento Veloce

[{
  "type": "add",
  "what": {"speed": 10},
  "when": [
    [
      "armor < heavy",
      "load < heavy"
    ]
  ]
}]

Analfabetismo

[{
  "type": "add",
  "what": {"skill_106": 0},
  "when": [
    ["skill_106 < 2"],
    ["expression_1 == false"]
  ]
}, {
  "id": "expression_1",
    "type": "find",
    "what": "class",
    "when": [
      ["skill_106 >= 2"],
      [
        "skill_106 == null",
        "class_type == base",
      ],
      [
        "skill_106 == null",
        "class_type == prestige",
      ]
    ]
}]

Ira

[{
  "type": "add",
  "action": "free",
  "what": {
    "abilitypoints_1": 4,
    "abilitypoints_3": 4,
    "st_will": "2 (morale)",
    "ac": -2
  },
  "times": [
    {
      "days": 1,
      "encounters": 1
    }
  ],
  "duration": {
    "rounds": "3 + abilitymod_3",
    "onEnd": "related_1"
  }
}, {
  "id": "related_1"
  "type": "add",
  "what": {
    "condition": "fatigued"
  },
  "duration": {
    "encounters": 1
  }
}]

 

5 commenti

  1. Ueueueue sentivo puzza di bruciato ma non era il caffè, era jure il mefitico!
    Capisco la sintassi pitonesca, ma non ti conveniva salvare il tutto a stringa ed implementando un analizzatore lessicale ad hoc? Così puoi:
    – togliere gli apicini,
    – togliere la prima quadra e la prima graffa,
    – sostituire il resto delle graffe con tonde
    ?
    Molto più leggibile IMVHO e meno “prono ad errori”. A me verrebbe il mal di testa. 😀

  2. Bentornato Jure!
    Beh, la sintassi va anche bene, nel senso che puoi inventartela come meglio credi o come pensi sia più facile fare l’interprete di questa sintassi. Lì sta il diventimento!
    Buona fortuna 🙂

  3. Grazie a tutti! Eh sì, sono tornato!

    Eldrad, mi sono affidato alla sintassi JSON perché sia JavaScript che PHP la digeriscono benissimo, e in caso di errore me ne accorgo subito perché esplode tutto XD. Vorrei inoltre evitare di introdurre una sintassi mai usata finora, anche perché leggere la sintassi JSON mi risulta particolarmente facile visto che la uso ogni giorno per lavoro 😉

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.