Giter Club home page Giter Club logo

optolith-database-schema's Introduction

Optolith Database Schema

This repository contains all information and logic of the Optolith flat-file database, which itself is closed source due to licensing.

The repository consists of three parts: The user documentation, the JSON Schema documents and the TypeScript definitions, checks and other logic.

The entity reference in the documentation and the JSON Schema documents are generated using a self-written converter that walks the TypeScript AST and outputs them. This way, modification is only required and allowed in the TypeScript files, the other files must be generated.

Contribute

If you want to contribute, it is most likely you want to help with inserting new data into the database. In this case, the User Documentation is the place to start. Conversations usually happen on the Optolith Discord Server. We can also manage required permissions there, since you can't publicly access the database, as already mentioned.

If you want to contribute to the database schema itself, please open an issue or discussion (whatever fits best) with what you want to achieve so we can discuss it. Breaking changes would require changes inside the database as well, so Pull Requests are usually not the way to go unless you want to fix a bug.

Usage

If you want to use the database (or parts of it) in your own project (most likely to support Optolith export formats in your own application), you can use the TypeScript sources as a simple database reader, at least if you have a project targeting JavaScript interpreters as well. This way, you already have proper typings. You can extract the database from the installation folder of Optolith and then configure the database reader to your needs.

optolith-database-schema's People

Contributors

elyukai avatar plu2k avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

optolith-database-schema's Issues

UI

  • Improve for YAML
  • Use Intl techniques (like PluralRules)

Elixire

  • Schema (maybe multiple schemas make more sense, evaluate)

Modifier Table

Possible Column combinations:

  • Action/Modifier
  • Situation/Penalty
  • Situation/Modifier/Example
  • Type/Modifier
  • Recharge Time/Penalty/Cost
  • Situation/Regeneration (?)
  • Type/Example/Damage (Modifier) (?)

Zauberrunen

  • Schema
    • Probe modifiziert um Kampftechnik
    • Schutzrune vor (Wesenheit) 😡

Focus Rules

  • Schema
  • Handle subjects as category?
  • Entries converted

Item complexity "various"?

The generic item"Winterkleidung" (Data\Equipment\Armor\4_Winter-Clothing.yml) explicitly specify their complexity as "various", which is currently not an allowed value for a complexity entry.

How to deal with this?

Another very special example example are furs (Data\Equipment\Armor\2_Furs.yml). Possible fix: move to category "Clothes", where complexity is optional.

Patrons

  • Schema
  • Entries converted
  • Typische Vorteile
  • Typische Nachteile
  • Typische Zauber

Internal English translations

Magical Actions

  • Animistenkräfte
  • Geodenrituale
  • Schelmenstreiche
  • Zibiljarituale
  • Zauberrunen

Special Abilities

  • Sikaryan-Raub-Sonderfertigkeiten
  • Lykanthropische Gaben
  • Talentstilsonderfertigkeiten
  • Erweiterte Talentsonderfertigkeiten
  • Kugelzauber (Gildenmagier)
  • Kesselzauber
  • Kappenzauber
  • Spielzeugzauber
  • Schalenzauber
  • Sex-Schicksalspunktsonderfertigkeiten
  • Sex-Sonderfertigkeiten
  • Waffenzauber
  • Sichelrituale
  • Ringzauber
  • Chronikzauber
  • Trinkhornzauber
  • Krallenkettenzauber

Item Groups

  • Ausrüstung der Geweihtenschaft
  • Liebesspielzeug

Focus Rules

  • Kirchenprägungen

Poisons: duration type "Indefinite" - unintuitive naming / usage unclear

Currently, this duration category is used in the following instances (list not complete):

  • Ghul's poison (default duration: permanent)
  • Totenbleiche (default duration: until death or no further ingestion)
  • Alcohol (default duration: until applied status effects wane)
  • Hexenhornissengift (default duration: instant)

Is this usage correct? If yes, I suggest to rename this category to Other, to make it more intuitive.

If No, I have to correct the entries :)

Apart from that, I suggest to introduce extra categories for the two latter cases (StatusWane and Instant).

Items

  • Schema
  • Weapon can be for multiple combat techniques with different values at once
  • Weapons and Armors in other groups?
  • Secondary Type may have associated valeus such as structure points
  • Different base values depending on group (some may not have price or weight for example)
  • Entry may belong to multiple groups (combat-use group and profane group)

Item category references differ from folder names

Item categories references are in singular and use and as conjunction, whereas folder names are held in plural als use or as conjunction, e. g. "BandagesAndRemedies" vs "BandageOrRemedy".

This is somewhat inconvenient because the ItemsIdMap (for compatibility) uses folder names, and one needs a lookup table to map the new item reference from e. g.
- [ITEMTPL_143, BandagesAndRemedies, 5]
to the category BandageOrRemedy to create a valid item reference. Such a mapping is nowhere in the code and has to be created manually.

Proposal: Change folder names to item category names.

Poisons

  • Schema
  • Entries converted
  • Evaluate splitting up schemes (AHE)
  • Giftart: Dämonisch

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.