Separated into another PR: All of the TP handler actions that send chat messages now accept an optional "!h" flag, that forces execution to halt after sending the message no matter what. The instant response execution halt is still present (obviously, changing that would cause massive problems for modules that already exist); this flag is intended to act as a safeguard for that behavior, so that execution is always guaranteed to stop, even if the module does wind up focused somehow beforehand.
The wiki should also be changed to accommodate this, by changing the commands in the instant response section to sendtochat!h {message}, sendtochaterror!h {message}, and senddelayedmessage!h {message}. This stops stupid bugs from happening where the mod creator dutifully listens to the wiki and treats that as the end of execution, have everything work totally fine on their local installation of Twitch Plays and the Test Harness... only for things to go terribly wrong on Marksam's stream because DoesTheRightThing was set to false for their module.
"DoesTheRightThing = false" is now "CompatibilityMode = true". The sole reason this was changed is to get rid of years of built up cruft from streamers' ModuleSettings, from the days of when DoesTheRightThing defaulted to false. As it stands currently, we have a situation where 1000 (yes, ONE THOUSAND) modules behave differently on Marksam's stream compared to a person running a fresh install of Twitch or Discord Plays, and that is bad.
"Compatibilty mode" is now a setting that can be changed with commands, e.g. "!write module compatibilitymode ksmBadugi;true". The purpose of this is twofold: it allows admins to quickly enable the old behavior for modules that really, truly, did not do the right thing (and that we haven't already caught and noted in Twitch Plays already), and allows admins to easily remove compatibility mode from a module if it no longer applies (whereas previously this was nearly impossible, requiring the streamer to dig into their 30k line ModuleInformation.json to change it back).
You're warned if you try to do this with a module that has TP support built into Twitch Plays (because that doesn't work, and doesn't get saved), and told to file an issue on GitHub instead.
Separated into another PR:
All of the TP handler actions that send chat messages now accept an optional "!h" flag, that forces execution to halt after sending the message no matter what. The instant response execution halt is still present (obviously, changing that would cause massive problems for modules that already exist); this flag is intended to act as a safeguard for that behavior, so that execution is always guaranteed to stop, even if the module does wind up focused somehow beforehand.The wiki should also be changed to accommodate this, by changing the commands in the instant response section tosendtochat!h {message}
,sendtochaterror!h {message}
, andsenddelayedmessage!h {message}
. This stops stupid bugs from happening where the mod creator dutifully listens to the wiki and treats that as the end of execution, have everything work totally fine on their local installation of Twitch Plays and the Test Harness... only for things to go terribly wrong on Marksam's stream because DoesTheRightThing was set to false for their module."DoesTheRightThing = false" is now "CompatibilityMode = true". The sole reason this was changed is to get rid of years of built up cruft from streamers' ModuleSettings, from the days of when DoesTheRightThing defaulted to false. As it stands currently, we have a situation where 1000 (yes, ONE THOUSAND) modules behave differently on Marksam's stream compared to a person running a fresh install of Twitch or Discord Plays, and that is bad.
"Compatibilty mode" is now a setting that can be changed with commands, e.g. "!write module compatibilitymode ksmBadugi;true". The purpose of this is twofold: it allows admins to quickly enable the old behavior for modules that really, truly, did not do the right thing (and that we haven't already caught and noted in Twitch Plays already), and allows admins to easily remove compatibility mode from a module if it no longer applies (whereas previously this was nearly impossible, requiring the streamer to dig into their 30k line ModuleInformation.json to change it back).