Lot of bugfixes
* Adding clipper to generate the terrain's negative powder-contour offset. * Fixing RDB issues (fracture, active trigger, performances) * Fixing blood emission * Fixing the freezing formula on liquids * Fixing Steve spawning due to a missed test. * Reaction table properly build
This commit is contained in:
1 parent
a34f42d53e
commit
00a9c1c26c
48 files changed
+5799
-435
No files matched your search
@@ -54,20 +54,6 @@ void main() {
|
||||
int fireHp = int(mz << 16) >> 16; // fire_hp as the signed 16 bits
|
||||
bool noBurnOut = fireHp == -1; // exactly -1 never burns out (0070e060); other negative values satisfy fire_hp < age
|
||||
|
||||
{ // the biome's reaction_freeze_chance / reaction_unfreeze_chance (0070e8c0; FREEZING, HOT): r % (cold_freezes_chance_rev + 1) < freeze turns the cell into its
|
||||
// cold_freezes_to_material when the random neighbour is free; r % (warmth_melts_chance_rev + 1) < unfreeze turns it into its warmth_melts_to_material when that
|
||||
// neighbour is free or of another material (the cell-type gate +0xa0 and the contact predicate 004ac0f0 of the freeze are not ported)
|
||||
const uint bb = bm_bytes(vec2(p + ivec2(pc.view_x, pc.view_y)));
|
||||
const uint fc = (bb >> 16) & 0xFFu, uc = bb >> 24;
|
||||
if ((fc | uc) != 0u && !burning) {
|
||||
const uvec2 cv = bm_conversions(m);
|
||||
const uint nb = cell_at(p + D4[hash3(seed, 41u, 9u) & 3u]);
|
||||
const uint nm = nb == NONE ? 0u : cell_mat(nb);
|
||||
if (fc != 0u && (cv.x & 0xFFFFu) != 0u && (hash3(seed, 42u, 9u) & 0x7FFFu) % ((cv.x >> 16) + 1u) < fc && nm == 0u) { cells[i] = ((cv.x & 0xFFFFu) - 1u) | (c & 0xFF0000u); ext[i] = vec2(0.0); birth[i] = birth_frame(); return; }
|
||||
if (uc != 0u && (cv.y & 0xFFFFu) != 0u && (hash3(seed, 43u, 9u) & 0x7FFFu) % ((cv.y >> 16) + 1u) < uc && nm != m) { cells[i] = ((cv.y & 0xFFFFu) - 1u) | (c & 0xFF0000u); ext[i] = vec2(0.0); birth[i] = birth_frame(); return; }
|
||||
}
|
||||
}
|
||||
|
||||
if (!burning && (f & F_GAS) != 0u) { // CGasCell update 0070a670: with probability (gas_speed + 1) / 101 (else the update only drifts the gas), intensity -= rand % 3,
|
||||
// fade = (char) intensity; a positive one then spreads (rand % 101 < fade, then 0070f9e0) - the targets below count this smoke as a source
|
||||
const uint raw = (birth[i] >> 24) & 255u;
|
||||
|
||||
Reference in new issue
Block a user