MeadBarrel / alrust

alchemy tools for mo2

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Alrust

Alrust is a set of tools for an alchemist in Mortal Online 2.

Getting Started

Creating your grimoire

Grimoire is a collection of your knowledge about the alchemical-related knowlede in MO2, as well as your characters' skills. Alrust uses json files to store that knowledge.

The initial grimoire contains nothing except information about existing lore skills in MO2, and even then, this information is not full (for example lore "effectiveness" that is used to calculate a lore multiplier when creating a potion, is not set - alrust will assume that it's 0.66666 which is true most of the time).

Now let's create our character. You can use alrust's update command to do this. Let's try it.

First, let's create a file called mygrimoire.yaml

characters:

  # A list of characters goes here

  Tashka:
    skills:
      Alchemy: 100
      Potion Making: 100
      Advanced Potion Making: 100
      Material Lore: 100
      Botany: 100
      Herbology: 100
      Steel Lore: 100

    add_clades:
      - Alchemist

So, we want to create a character called Tashka with advanced potion making skill of 100, she also has an alvarin alchemist gift. We've added some lore values to her. Notice how Steel lore is set to 100, but it's parent skill, Iron-Based Alloys is unset. Alrust will consider Tashka's Steel Lore to be 0 since unset lores are assumed to be 0.

Let's tell alrust to update our database:

alrust2.exe grimoire.json update --from mygrimoire.yaml --to grimoire.json

There, you've added Tashka to the grimoire. Now let's fix our mistake above and set values for Steel Lore parent skills:

characters:

  Tashka:
    skills:
      Iron-Based Alloys: 100
      Metallurgy: 100
alrust2.exe grimoire.json update --from mygrimoire.yaml --to grimoire.json

You don't need to keep the information that's already in the grimoire in your config file.

Our database still lacks ingredients, so let's add some and also give Tashka a few more lores:

characters:
  Tashka:
    skills:
      Botanical Oils Lore: 100

ingredients:
  Salvia Oil:
    weight: true # Alchemical weight for salvia oil
    skill: Botanical Oils Lore
    dh: 2.4
  Sea Dew Leaves:
    skill: Herbology
    weight: true
    dh: 1.2
  Purified Water:
    skill: 1
    weight: true
    dh: 0    # Direct Healing
    dp: 0    # Direct Poison
    mdh: 0   # Direct Healing Multiplier
    mdp: 0   # Direct Poison Multiplier
    hot: 0   # Healing Over Time
    pot: 0   # Poison Over Time
    mhot: 0  # Healing Over Time Multiplier
    mpot: 0  # Poison Over Time Multiplier
    hl: 0    # Healing Length
    pl: 0    # Poison Length
    mhl: 0   # Healing Length Multiplier
    mpl: 0   # Poison Length Multiplier
    a: 0     # Alcohol
    ma: 0    # Alcohol Multiplier
alrust2.exe grimoire.json update --from mygrimoire.yaml --to grimoire.json

Experimenting with potions

Now our grimoire contains purified water, salvia oil, and sea dew leaves. Enough for a potion! Let's create one! Create a file mix.yaml (or any name that you want):

mix:
  Salvia Oil: 11
  Sea Dew Leaves: 11

Now run

alrust2.exe grimoire.json mix --character Tashka mix.yaml

We get this result:

volume: 2.3100000000000005
effects:
  dh: !? 3.5999856
  dp: !? 0.0
  hot: !? 0.0
  pot: !? 0.0
  hl: !? 0.0
  pl: !? 0.0
  a: !? 0.0
ingredients:
  Salvia Oil: 11
  Sea Dew Leaves: 11

What is this? Why it says !? everywhere? This is because we did not set direct healing multiplier values for Salvia Oil and Sea Dew Leaves. !? warns you that this value is only theoretical and may not be correct.

Let's fix our mix.yaml and add some multiplier values

grimoire:
  db: db.sqlite
  lores:
    Botanical Oils Lore:
      effectiveness: 0.66666
    Herbology:
      effectiveness: 0.66666

  ingredients:
    Salvia Oil:
      mdh: 0
    Sea Dew Leaves:
      mdh: 0

character: Tashka  

mix:
  Salvia Oil: 11
  Sea Dew Leaves: 11

Changes we make in grimoire section will only be used for this potion, they will not be saved to the database. Notice that in addition to adding multiplier values for the ingredients, we're also implicitly setting effectiveness values for their lores. If we didn't, the value we'd receive would still be !Unknown, because we didn't set true values for Botanical Oils Lore's and Herbology's effectiveness, and alrust can only assume that they're equal to 0.66666. Later you'll probably want to update your grimoire with these, but for now, let's try our potion:

alrust2.exe experiment --config mix.yaml
volume: 2.3100000000000005
effects:
  dh: 3.5999856
  dp: !? 0.0
  hot: !? 0.0
  pot: !? 0.0
  hl: !? 0.0
  pl: !? 0.0
  a: !? 0.0
ingredients:
  Salvia Oil: 11
  Sea Dew Leaves: 11

Now we see direct healing value as !Known. Other values are still theoretical - ingredients in our database only have known values for direct healing and its multiplier.

Exploring your grimoire

The grimoire file format is hardly human readable, so if you want to see what is stored in your grimoire, you need to use the cli tool

Let's first check what characters we have:

./alrust2.exe grimoire.json list characters
Tashka

Ok we have the name, now let's see who Tashka is:

./alrust2.exe grimoire.json view character Tashka
skills:
  Alchemy: 100
  Botany: 100
  Potion Making: 100
  Herbology: 100
  Iron-Based Alloys: 100
  Advanced Potion Making: 100
  Botanical Oils Lore: 100
  Material Lore: 100
  Steel Lore: 100
  Metallurgy: 100
clades:
- Alchemist

Now let's see our ingredients:

./alrust2.exe grimoire.json list ingredients
Sea Dew Leaves
Salvia Oil
Purified Water

And view Salvia oil:

./alrust2.exe grimoire.json view ingredient "Salvia Oil"
weight: true
skill: Botanical Oils Lore
dh: 2.4

When you have lots and lots of ingredients, you might want to filter them out by certain values, for example, let's list only the ingredients that have direct healing base of at least 2.0:

./alrust2.exe grimoire.json list ingredients "dh > 2"
Salvia Oil

There is only one such ingredient in our grimoire, and that is Salvia Oil.

The possible identifiers we can use when filtering are:

- base value of the ingredient - one of dh, dp, hot, pot, hl, pl, a _known - true if the base value is known (i.e. not theoretical) _theory - true if the base value is theoretical _unknown - true if the base value is completely unknown, which defaults to 0 m - multiplier value m_known m_theory m_unknown weight: true if the ingredient has alchemical weight, or false otherwise

About

alchemy tools for mo2


Languages

Language:Rust 100.0%