Inconsistent behaviour of "else" statement in switch
Closed this issue · 8 comments
Hello! Thanks for making this awesome tool!
Unfortunately there's a bit of an inconsistency going on between Quill and other Ink runners (Like Inky for example), namely
with the implementation of "else":
So in Quill, the program chooses to use the "else" divert statement while in Inky (and Inklecate) the execution crashes on runtime because the "else"-divert doesn't work when some_variable is equal to 1.
Could this be looked into? Because my writers use your tool extensively, only to later find out their story crashes when implemented into the game itself...
This issue is likely due to the Quill version of Ink being very, very out of date compared to the current release.
Quill really needs a rewrite almost from scratch. The other parts of it are also woefully out of date.
I'm not sure this will ever happen; there's not a lot of interest in Quill any more, and to be honest I've lost interest in it as well. In fact I have been meaning to shut down that VPS entirely one of these days.
But it is good to know your group is using it actively. I'll keep the lights on a while longer, at least.
I'll take another look at updating Quill, but no promises there. If anything happens there it will be by the end of the month.
hey @MattConrad
thanks for your time! Could you elaborate on the "rework from scratch" part? Are there some fundamental wrongdoings present in your codebase? or what kind of issues do you face that warrant such a rework vs just updating the version? 🤔
Well, I shouldn't have said rework from scratch. That was an exaggeration. Probably. Maybe.
The Quill project suffers from being started against early versions of .NET Core while early versions of Ink are written to build on Mono, with deployment to a Linux VPS. Dealing with different implementations/versions of .NET causes all sorts of headaches, from building to tooling to deployment. It was a big mess to get the first version out the door and the one significant update I did later wasn't simple either.
That's where the pain is. There is some promise that, now, a couple years later, those headaches may be much improved. I see some cause for optimism. Even if things are better, though, I'm pretty sure an update will take more than just replacing the inklecate exe.
I'll keep looking at this. I'll update by the end of the month.
Piet's repro script, as text:
VAR some_variable = 1
-> red
=== green ===
It's the GREEN that I need!
{some_variable:
- 0: -> zero
- else: -> else_divert
}
= zero
It is zero!
-> DONE
= else_divert
It is else
-> DONE
=== red ===
REDRUM
{some_variable:
- else: -> else_divert
}
= else_divert
It is else!
-> DONE
I also went in some more detail here:
ephread/inkgd#26
Thanks for the link. Sorry that Quill added confusion to the other issue.
I've done some work with this. Some hassles, as expected, but overall what I've done seems promising. I'll remark more when I get somewhere conclusive.
The script above now produces an error in Quill.
Quill is running with a new version of Ink now. Likely there are other scenarios that are improved as well. There are many other changes under the hood. Do not be surprised if some behaviors are a little different. Let me know if anything seems like a significant problem.
Permalinks from the old version have been removed. Any that were active will need to be recreated.
New Quill won't necessarily be point by point identical with Inky or other Ink tools. But closer than before.
Sweet! Thanks for your work on this and for your time 😃