Recently Daiky discovered inproper explosion values.
So I must shed some light on these things arised.
1. So called "Double destruction" commented
in this commit is not what code needed.
2. Power
/2 here only confuses thus better to be processed inside of "detonate", because it's tile ARMOR which is multiplied, than explosion strength which is weaken.
3. Damaging process is iterative, it decreases current DAMAGE value by armor, unless it become less than value affecting on tile damage (which is armor*2). Commented with "double damage" is just emulation of that process. If damage was for instance 200, and tile armor*2 is 80, it should be destroyed. But then damage value of 120 should applied to this tile (which become death_tile at this point), and ot should be destroyed too!.. So final damage value will be 40, and damage process applied to tile TWICE.
4. Smoke density value depends on LOFT height (it determined by checking loft values != 0).
Formula is: smoke_density = random(LoftHeight/2+2) + LoftHeight/2+1;
5. Tiles inflamation is also somewhat screwed. Ignition process should happen when damage value is greater than than "fire proof"*2 tile value (similar to armor for destruction). Fire lifetime is taken from MCD info. Fire density is calculated as 15-fire_proof/10, and must be capped to range 1..12.