Hex Casting

Hex Casting

6M Downloads

[Feature request] A pattern that prints the names of spells in a list

object-Object opened this issue ยท 17 comments

commented

Right now if you have a long hex stored as a list in something like a focus, the only way (as far as I know) to see what patterns it consists of is to look up each one individually with a pattern renderer, since the hover text shows the internal representation (eg. EAST aadaa). A pattern that takes a list of patterns as input and prints the names (eg. Gemini Decomposition) would be very useful for debugging long hexes.
Ideally I'm looking for something like the output of this script, but with the names that are actually in the book.

commented

I thought of a better way to word this. I'm looking for a pattern like Reveal that displays pattern names instead of angle signatures.

commented

Hang on, I can't believe I never thought of this oh my god. Just have the text output of patterns be the name of the action if it matches. auughh.

hang on I'm gonna implement this

commented

oh my god
how did we NEVER THINK OF THAT

commented

CAUSE I PROBABLY ALREADY DID AND REALIZED WE CAN'T AUGHHHHHHHHGHSD

because the client doesn't KNOW the GODDAMN PATTERN LOOKUP

commented

though make sure that any Great Pattern walk matches? just so you can't brute force it that way. Maybe it goes "Greater Teleport?" instead of "Mind's Reflection"

commented

if you do that it doesn't matter that the client doesn't know the lookup

commented

Also, if we do this, we should add dynamic names for things like numeric reflection and bookkeeper's gambit

i.e. "Bookkeeper's Gambit v-v-vvvv", "Numeric Reflection 5", etc

commented

this is especially fine because equality checks already ignore start direction, so showing just the name doesn't actually change much

commented

The problem is I don't know how to check if two patterns look the same sans stroke order; that's the same as checking if two graphs are isomorphic. And no one knows how to do that!

A quick wikipedia search tells me that not only is this problem computationally really hard, we actually don't know how computationally hard it is! The fastest known algo is 2^O(sqrt(n log n))

Apparently there exists a faster algorithm for planar graphs but my eyes start glazing over when I go deep into Math Wikipedia so we're gonna need to call in @Alwinfy on this one

commented

I mean there's always the copout of checking whether the set of line segments is the same

commented

but I am Not A Math Person so alwinfy probably has a better answer

commented

Either way you could probably implement the rest of it and leave a stub for that stuff? the dynamic name stuff definitely would need some doing

commented

Alwinfy has a solution but I'm too tired right now to understand it; I'll look with fresh eyes in the morning.

commented

Alwinfy has a solution but I'm too tired right now to understand it; I'll look with fresh eyes in the morning.

You could put this in just about any conversation with alwinfy and it probably wouldn't look out of place lmfao

Eldritch math friend

commented

For what it's worth, object and my script doesn't even attempt great spell naming; they come out as gobbledigook. They are not usually relevant to control flow, etc, s the importance of having proper names isn't as serious as it is with the regular patterns.

commented

personally, I think it'd probably be easier and better to just display the shapes, instead of the names.

commented

HexGloop adds inline pattern rendering, but I think hex should still show the names.