I have a quick tangentially related question relating to how tags are currently implemented. Most things I know about tags come from
@SSBBHax 's
stillsuit spading spreadsheet, a lot of information in which is playerdev-confirmed.
Right now, there are 45 currently used familiar tags in the attributes proxy record of familiars:
Code:
> js Array.from(new Set(Familiar.all().flatMap((f) => f.attributes.split("; ").filter(Boolean))))
Returned: aggregate string [45]
0 => animal
1 => insect
2 => haseyes
3 => haswings
4 => fast
5 => bite
6 => flies
7 => hashands
8 => wearsclothes
9 => organic
10 => vegetable
11 => hovers
12 => edible
13 => food
14 => sentient
15 => cute
16 => mineral
17 => polygonal
18 => object
19 => undead
20 => cantalk
21 => evil
22 => orb
23 => spooky
24 => sleaze
25 => aquatic
26 => swims
27 => isclothes
28 => phallic
29 => stench
30 => hot
31 => hasbeak
32 => haslegs
33 => robot
34 => technological
35 => hard
36 => cold
37 => hasbones
38 => hasclaws
39 => reallyevil
40 => good
41 => person
42 => humanoid
43 => animatedart
44 => pokefam
All of these are actual attribute tags in KoL
except for "pokefam"--being a pokefam-only familiar doesn't seem to be implemented in KoL as a familiar tag the way that "swims" or "isclothes" is. We know this because there are 6 special tags that
are tags and are used in pokefam to denote ult moves: ult_bearhug, ult_sticktreats, etc. When the stillsuit rolls one of those tags, you end up with no enchantment in the distillate from that tag. So if pokefam itself was implemented as a familiar tag, we would expect the 45 path-only pokefam familiars (which are currently tagged as pokefam in mafia) to occasionally produce the same result.
What's the best solution here? I can think of a few:
- Leave it as-is in mafia and, when writing code to handle familiar tags, manually filter out "pokefam" from the attributes field (or, to be more futureproof, manually check the field for all familiar tags).
- Remove "pokefam" from attributes and make a proxy record that denotes whether something is or isn't a pokefam. Moving forward, treat attributes as precisely meaning these familiar tags. This is a breaking change for any script that currently checks attributes for "pokefam"
- Leave it as-is, but make a separate proxy record that exclusively contains familiar tags and can be treated as a source of truth
EDITOR'S NOTE:
Currently, the tags "hasshell" and "hasstinger" are not present in any familiar tags present in mafia. I can work with SSBBHax in the future to put all confirmed data about familiar tags into mafia.
TL;DR: "pokefam" is not actually a familiar tag in the way that "robot" is, but is treated as such in mafia's attributes field on familiars. This is undesirable because it's good to mirror the way things work in-game.