CO2 falls because it is heavier than surrounding gasses.
ITS A GAS AND ALWAYS WILL BE A GAS!
mad-cow: runemaster: CO2 doesn't fall because it is a powder. It falls because of the other settings it has (I think gravity but I can't remember). Anyway, this is fixed for the next version finally after all these years (for CO2, fire, and smoke). The "falldown" property will probably get removed soon because .State is a lot easier to use (once I get around to doing this).
We'v found a glitch in the matrix. Now that we can do this, we can do anything, its all changed!
hhmmmm if the wall is a litte bit bigger it blocks it
(read below first) That's from line 1852 (?) of Simulation.cpp, for placement logic, which is pretty much identical to the wall collision logic. What this means is that TPT only checks the falldown value. For some reason, SMKE, FIRE, and CO2 ALL have a falldown of 1, even though they're gasses. Also, the blurb below about asking what state it's in and not the falldown was wrong (I forgot, sorry!)
So the actual specification, in CO2.cpp, sets CO2 as a gas, even though it has a falldown of 1, which seems to do nothing. The reason it passes through the walls is that the collision logic asks TWO things: What state of particle (NOT the falldown), and what the falldown is. Here's one such logic statement: "else if (wall == WL_ALLOWSOLID && elements[type].Falldown!=1)"
Alright, adding onto what Mad-Cow said, the reason it falls is because the ELEMENT itself is classified as a powder in TPT's element codes. It is in the Gas FILE, but the particle itself is kind of iffy when it comes to those properties. Same with Fire and, to a lesser extent Smoke. Since Smoke is a biproduct of fire. But, meh.
Well the only elements that "fall down" are Powders, and your fix makes any given element not fall and a powder wont fall through the wall anymore, but since Co2 is supposed to sink, it has a Falldown, which is probably what determines if an element is allowed through the powder wall? Idk..