A_SetSolidSteam is an action that is used to make the Gas Jet become solid so it collides with players to boost them upwards – it does this by modifying the actor's flags so that
MF_NOCLIP is removed from them and
MF_SOLID is added to them.
A_SetSolidSteam also plays the Gas Jet's "hiss" sound to signal when the player can be boosted upwards, the sound for which is a random choice between either the actor's
PainSound (1/8 chance of occurring) or
DeathSound (7/8 chance of occurring). Note that
P_SetObjectMomZ is also called by this action, to ensure other Objects can collide with the actor afterwards during the same tic.
A_UnsetSolidSteam is used to undo the changes to the actor's flags made by this action, so that the actor becomes intangible again.
Code – A_SetSolidSteam
// Function: A_SetSolidSteam
// Description: Makes steam solid so it collides with the player to boost them.
// var1 = unused
// var2 = unused
void A_SetSolidSteam(mobj_t *actor)
if (LUA_CallAction("A_SetSolidSteam", actor))
actor->flags &= ~MF_NOCLIP;
actor->flags |= MF_SOLID;
S_StartSound(actor, actor->info->deathsound); // Hiss!
P_SetObjectMomZ (actor, 1, true);