// Video Embeds: https://github.com/requarks/wiki/discussions/4580
Commands allow you to assemble a set of Actions together as a set of steps to perform. Commands come in a variety of forms (Chat, Event, Timer, etc), but share about 80% of the same functionality. All commands can be tested out by pressing the "Play" button next to them and can be edited by clicking the "Edit" button. Commands that are created by you can also be deleted by pressing the "Delete" button.
By default, commands of the same type are locked together. This means that if two commands were to run at the same time (EX: 2 Chat commands), the 1st command would start running and the 2nd command will wait until the 1st is complete. This is designed to help prevent many commands of the same type from going off at the same time and cause some form of chaos. However, there can be circumstances in which you will want a command to always be able to run right away, regardless of if there are other commands of the same type already running. This can be done on a per-command basis or for all commands.
Per-Command: An individual command can run outside of our locking system by toggling the "Unlock Command" option on it. This will ensure that this command always runs when it's triggered as long as all Usage Requirements are met (EX: The command is not already on cooldown).
All Commands: In the Settings menu under the Commands section, there will be an option called "Command Lock System". This option controls how the command locking system works and on what specifically a command locks and prevents other commands from running. For details on how each option works, you can hover your mouse over the option for an explanation on how each option works.
The are three parts that factor in to when a command can run; Cooldowns, Waits, & Locks:
Cooldowns affect whether a command can get queued up to run or not. So if you had a chat command with a 10 minute cooldown, once the command has been queued up to run (not necessarily run yet), someone can't try to queue it up again for another 10 minutes
Waits allow you to extend the length of a command to an arbitrary amount of time. So adding a 10 second wait to a command will physically make it take 10 seconds longer to complete. Adding a 10 second wait to anywhere in the command will always make it wait 10 seconds, however where you put a wait factors in to how the command itself will run. Think of it like a cooking recipe; if someone tells you to wait 10 minutes before putting pasta into boiling water VS someone telling you to wait 10 minutes after putting pasta into boiling water, those two steps aren't the same thing even though they have a 10 minute wait in them
Locks are what restrict how many commands can be actively running at the same time (not the same as how many can queued up to run). The default option makes it so that only 1 command of every type can run at the same type (EX: Chat, Event, Timer, etc). So you can't have two Chat commands running at the same time, but you can have a Chat & Event running at the same time. Unlocked command ignore this and are run as soon as they are triggered.
The Command Lock System in Mix It Up can be customized to meet the needs of how you want commands to interact in your stream. This setting can be adjusted by heading to Settings -> Commands. Below are the various options available for the Command Lock System:
Per Command Type: Each command type (Chat, Event, Timer, etc) has a lock that prevents other commands of the same type from running at the same time.
Per Action Type: Each action type (Chat, Sound, Conditional, etc) has a lock that prevents other commands also containing those actions from running at the same time.
Visual/Audio Actions: Commands containing visual/audio-based actions (Sound, Overlay, etc) share 1 lock while other commands will run as soon as they are triggered.
Singular: All commands share the same lock only allowing one command to run at a time.
None: All commands are unlocked and will run as soon as they are triggered.