Bruh, commands have always been a thing, they've been hot since 1.36-1.4 tbh! Normally, #READY is used to return or force a weapon to return to it's ready state, for example after you fire your Super Shotgun, you can either use RELOAD, or create a separate state for the super shotgun's reloading frames. You can force a weapon to be deselected after weapon fire by adding #DOWN; (which calles the Down States for when you lower your weapon [HARDCODED]). I've seen you guys set up custom state frames via RTS that are called from DDF such as ENABLE_TAGGED_RTS. The OG Shut Up & Bleed is a perfect example of what can be done with RTS calls. You can do much more straight from DDF itself, allowing for more complex animatons. It's not exactly perfect like G/ZDoom, whereas if you already have sprites onscreen in your HUD, any sprite frames called from scripts overlap on top of the on screen sprites. This is like trying to use a grenade while firing a weapon. The weapon fire should either be interrupted, or the grenade toss is called after the weapon firing states instead of both happening at the same time. Maybe some work on that can be done by the devs for a future release. I might need to throw some examples in to explain this
Most of what I learn from 3DGE comes from studying past code from the pre-1.36F era, studying Ceejay's & Teeth's work in mods, looking at DECORATE to see what about it that can work in DDF and what doesn't (this is how I created custom power ups using COAL which is still a little vague) and experimenting with my own accidental coding. If anything I have you guys to thank for being so damn creative!
Here are your hard coded commands that work universally in the Tech Engine:
#Up; (selects primary weapon)
#Down; (lowers weapon)
#Ready; (readies weapon)
#Remove; (removes sprites/weapons/monsters/items from HUD)
Additionals:
#Attack (when fire is pressed)
#SecAttack (when secondary fire is pressed)
#Fly (flying states for things)
#Gib (jumps to gib states)
#Resurrect (jumps to resurrect frames i.e. archvile or nightmare resurrect respawn)
#Idle (when a thing is idle)
I may have missed something. But ANY command that is called besides these hard coded commands are custom commands. If I want a STATES (WARMUP) state for my Smooth Chaingun, I just set up the state how I normally would set up ATTACK states, only use the few frames available where the Chaingun is spinning, and I can arrange this state BEFORE my ATTACK state and it will play in sequence as soon as I press the fire key, or call it using #Warmup. A comma versus a semi colon is very important. Commas allow the state to continue playing regardless of the call, whereas a semicolon stops it immediately after the call.