A simple CLI tool to calculate fusions for Persona 5 Royal written in Rust. Essentially an efficient, CLI version of chinhodado's persona5_calculator
.
tyler@debbie:~$ fusion-calculator fuse calculate --first "Jack Frost" --second "Thor"
โญโโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโโฎ
โ Result โ Level โ Arcana โ
โโโโโโโโโโชโโโโโโโโชโโโโโโโโโโโโก
โ Isis โ 26 โ Priestess โ
โฐโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโโฏ
tyler@debbie:~$
tyler@debbie:~$ fusion-calculator fuse from --name "Jack Frost"
โญโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโโโฎ
โ Fused With โ Level โ Arcana โ Result โ Level โ Arcana โ
โโโโโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโชโโโโโโโโโโโโโชโโโโโโโโโโโโโโโโโโโชโโโโโโโโชโโโโโโโโโโโโโก
โ Jack-o'-Lantern โ 2 โ Magician โ Cait Sith โ 5 โ Magician โ
โโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโโโค
โ Pixie โ 2 โ Lovers โ Incubus โ 5 โ Devil โ
โโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโโโค
โ Agathion โ 3 โ Chariot โ Silky โ 6 โ Priestess โ
โโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโโโค
โ Mandrake โ 3 โ Death โ Bicorn โ 4 โ Hermit โ
โโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโโโค
| ... | ... | ... | ... | ... | ... |
โ Maria โ 93 โ Faith โ Valkyrie โ 44 โ Strength โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโโโฏ
tyler@debbie:~$
tyler@debbie:~$ fusion-calculator fuse to --name "Jack Frost"
โญโโโโโโโโโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโฎ
โ First โ Level โ Arcana โ Second โ Level โ Aracana โ
โโโโโโโโโโโโโโโโโโโชโโโโโโโโชโโโโโโโโโโโชโโโโโโโโโโโโโโโโโโชโโโโโโโโชโโโโโโโโโโโก
โ Jack-o'-Lantern โ 2 โ Magician โ Sandman โ 23 โ Magician โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Jack-o'-Lantern โ 2 โ Magician โ Choronzon โ 28 โ Magician โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Cait Sith โ 5 โ Magician โ Nekomata โ 17 โ Magician โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Cait Sith โ 5 โ Magician โ Sandman โ 23 โ Magician โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Jack Frost โ 11 โ Magician โ Jack Frost โ 11 โ Magician โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Jack Frost โ 11 โ Magician โ Nekomata โ 17 โ Magician โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Nekomata โ 17 โ Magician โ Cait Sith โ 5 โ Magician โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Nekomata โ 17 โ Magician โ Jack Frost โ 11 โ Magician โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Sandman โ 23 โ Magician โ Jack-o'-Lantern โ 2 โ Magician โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Sandman โ 23 โ Magician โ Cait Sith โ 5 โ Magician โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Choronzon โ 28 โ Magician โ Jack-o'-Lantern โ 2 โ Magician โ
โฐโโโโโโโโโโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโฏ
tyler@debbie:~$
tyler@debbie:~$ fusion-calculator list personas --arcanas Magician --arcanas Death
โญโโโโโโโโโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโฎ
โ Name โ Level โ Arcana โ
โโโโโโโโโโโโโโโโโโโชโโโโโโโโชโโโโโโโโโโโก
โ Mandrake โ 3 โ Death โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Mokoi โ 9 โ Death โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Matador โ 17 โ Death โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Nue โ 20 โ Death โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Pisaca โ 28 โ Death โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Hell Biker โ 37 โ Death โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Hope Diamond โ 40 โ Death โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Pale Rider โ 54 โ Death โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Chernobog โ 62 โ Death โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Thanatos โ 65 โ Death โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Thanatos Picaro โ 69 โ Death โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Mot โ 72 โ Death โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Alice โ 83 โ Death โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Jack-o'-Lantern โ 2 โ Magician โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Cait Sith โ 5 โ Magician โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Jack Frost โ 11 โ Magician โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Nekomata โ 17 โ Magician โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Sandman โ 23 โ Magician โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Choronzon โ 28 โ Magician โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Queen Mab โ 43 โ Magician โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Rangda โ 48 โ Magician โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Forneus โ 63 โ Magician โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Surt โ 83 โ Magician โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Futsunushi โ 86 โ Magician โ
โฐโโโโโโโโโโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโฏ
tyler@debbie:~$
tyler@debbie:~$ fusion-calculator list personas --min-level 90
โญโโโโโโโโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโโฎ
โ Name โ Level โ Arcana โ
โโโโโโโโโโโโโโโโโโชโโโโโโโโชโโโโโโโโโโโโก
โ Maria โ 93 โ Faith โ
โโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโโค
โ Satanael โ 95 โ Fool โ
โโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโโค
โ Messiah Picaro โ 90 โ Judgement โ
โโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโโค
โ Satan โ 92 โ Judgement โ
โโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโโค
โ Lucifer โ 93 โ Star โ
โโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโโค
โ Mada โ 90 โ Tower โ
โฐโโโโโโโโโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโโฏ
tyler@debbie:~$
tyler@debbie:~$ fusion-calculator list personas --max-level 5
โญโโโโโโโโโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโฎ
โ Name โ Level โ Arcana โ
โโโโโโโโโโโโโโโโโโโชโโโโโโโโชโโโโโโโโโโโก
โ Agathion โ 3 โ Chariot โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Mandrake โ 3 โ Death โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Incubus โ 5 โ Devil โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Arsene โ 1 โ Fool โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Bicorn โ 4 โ Hermit โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Pixie โ 2 โ Lovers โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Jack-o'-Lantern โ 2 โ Magician โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Cait Sith โ 5 โ Magician โ
โฐโโโโโโโโโโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโฏ
tyler@debbie:~$
tyler@debbie:~$ fusion-calculator list personas --arcanas Death --arcanas Magician --min-level 20 --max-level 25
โญโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโฎ
โ Name โ Level โ Arcana โ
โโโโโโโโโโโชโโโโโโโโชโโโโโโโโโโโก
โ Nue โ 20 โ Death โ
โโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโค
โ Sandman โ 23 โ Magician โ
โฐโโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโฏ
tyler@debbie:~$
fusion-calculator-rs
allows you to override the --output-type
to JSON, either for writing out data or even piping to a program like jq
. Example:
# Show all Personas that can be fused with Jack Frost and have a level greater than 90
tyler@debbie:~$ fusion-calculator fuse from --name "Jack Frost" --output-type json | jq '.[] | select(.first.data.level > 90)'
{
"first": {
"name": "Satan",
"data": {
"level": 92,
"arcana": "Judgement"
}
},
"second": {
"name": "Valkyrie",
"data": {
"level": 44,
"arcana": "Strength"
}
}
}
{
"first": {
"name": "Lucifer",
"data": {
"level": 93,
"arcana": "Star"
}
},
"second": {
"name": "Skadi",
"data": {
"level": 53,
"arcana": "Priestess"
}
}
}
{
"first": {
"name": "Maria",
"data": {
"level": 93,
"arcana": "Faith"
}
},
"second": {
"name": "Valkyrie",
"data": {
"level": 44,
"arcana": "Strength"
}
}
}
tyler@debbie:~$
Simply clone the repo:
git clone https://github.com/tylerburdsall/fusion-calculator-rs && cd fusion-calculator-rs
Build:
cargo build --release
And place anywhere you'd like in your $PATH
This isn't necessarily a commitment, but some things like I'd like to add one day:
- Support for vanilla Persona 5
- Support for previous Persona games and their iterations
- Add actual data to each Persona (e.g. stats, movesets)
- Better filters
- Support running this behind an API (see below for more)
- And more!
If, for some reason, someone wanted to support this as an API, there are definitely a lot of optimizations that could be made to further boost performance. If it were me, I would do the following:
- Memoize results
- Store static data behind an
Arc
so threads can access the data without copying it per-thread - Reduce the amount of
.to_string()
calls are made and useCow
instead
Since this is just a "run once" CLI, none of the above are really necessary from a performance standpoint.
Simply because I wanted to try my hand at this in Rust! I felt the Web UIs were incredibly slow for what they were, even as static web pages.
See LICENSE