Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int __cdecl sub_7FDB0()
- {
- *v33 = &unk_142668;
- v36 = 0;
- do
- {
- result = *v33;
- if ( *(*v33 + 3) )
- {
- if ( *(*v33 + 24) >= *(*v33 + 28) )
- {
- WORD3(v34) = **v33;
- v1 = veh_struct;
- WORD1(v34) = *(*v33 + 1);
- *&v37[4] = *(*v33 + 30);
- v2 = 0;
- while ( *&v1->count >> 16 == -1
- || LOBYTE(v1->current_demention) != alien_demen_flag
- || SWORD3(v34) < v1->unknown_x_pos1
- || SWORD3(v34) >= v1->unknown_x_pos2
- || SWORD1(v34) < v1->unknown_y_pos1
- || SWORD1(v34) >= v1->unknown_y_pos2
- || *&v37[4] < v1->unknown_altitude1
- || *&v37[4] >= v1->unknown_altitude2 )
- {
- ++v2;
- ++v1;
- if ( v2 >= 80 )
- goto LABEL_17;
- }
- HIWORD(v38) = v1->x_pos_3d;
- *&v33[4] = v1->y_pos_3d;
- v3 = v1->z_pos_3d;
- Vehicle_damaged(v2, 12, 4, 0);
- if ( *&v1->count >> 16 == -1 )
- sub_63744(v38 >> 16, *&v33[2] >> 16);
- *(*v33 + 26) = 0;
- *(*v33 + 24) = (*(*v33 + 24) >> 18) + (*(*v33 + 22) >> 16);
- LABEL_17:
- v4 = tile_ind(SHIDWORD(v34) >> 16, v34 >> 16, *&v37[2] >> 16);
- if ( *v4 || !*&v37[4] )
- {
- v7 = 52 * *v4;
- if ( *(&citymap_dat.constitution + v7) < 255u
- && *(&citymap_dat.strength + v7) < (*(*v33 + 26) >> 18) + (*(*v33 + 30) >> 16) - 4 )
- {
- collapse_tile(SBYTE6(v34), SBYTE2(v34), v37[4]);
- if ( *&v37[4] >= 0 )
- {
- HIWORD(v35) = *&v37[4] + 1;
- v8 = sub_5D260();
- if ( v8 )
- {
- v8[1] = 32 * WORD3(v34);
- v8[4] = 0;
- v8[2] = 32 * WORD1(v34);
- *v8 = 3;
- v8[3] = 16 * HIWORD(v35);
- }
- HIWORD(v39) = WORD3(v34) - 1;
- *v37 = *(&v34 + 2) - 1;
- while ( v39 >> 16 <= (SHIDWORD(v34) >> 16) + 1 )
- {
- for ( i = *v37; ; i = v13 + 1 )
- {
- v16 = i;
- if ( i > (v34 >> 16) + 1 )
- break;
- v10 = v35 >> 16;
- v11 = v39 >> 16;
- v12 = tile_ind(v39 >> 16, i, v35 >> 16);
- if ( *v12 )
- {
- if ( WORD3(v34) != HIWORD(v39) || v13 != WORD1(v34) )
- {
- v14 = 52 * *v12;
- if ( *(&citymap_dat.constitution + v14) < 255u
- && *(&citymap_dat.constitution + v14) < (*(*v33 + 26) >> 18) + (*(*v33 + 30) >> 16) - 4 )
- {
- if ( collapse_tile(SBYTE2(v39), v13, SBYTE2(v35)) )
- {
- v15 = sub_5D260();
- if ( v15 )
- {
- v15[1] = 32 * HIWORD(v39);
- v15[4] = 0;
- v15[2] = 32 * v13;
- *v15 = 3;
- v15[3] = 16 * HIWORD(v35);
- }
- }
- }
- }
- }
- else
- {
- sub_80528(v11, v16, v10);
- }
- }
- ++HIWORD(v39);
- }
- }
- }
- if ( *&v37[4] )
- v17 = *&v37[2] >> 16;
- else
- LOWORD(v17) = 1;
- HIWORD(v35) = v17;
- if ( WORD3(v34) )
- v18 = (SHIDWORD(v34) >> 16) - 1;
- else
- v18 = WORD2(v34) >> 16;
- for ( HIWORD(v39) = v18; v39 >> 16 <= (SHIDWORD(v34) >> 16) + 1 && SHIWORD(v39) < 100; ++HIWORD(v39) )
- {
- if ( WORD1(v34) )
- v19 = (v34 >> 16) - 1;
- else
- v19 = v34 >> 16;
- while ( 1 )
- {
- v24 = v19;
- if ( v19 > (v34 >> 16) + 1 || v19 >= 100 )
- break;
- v20 = tile_ind(v39 >> 16, v19, v35 >> 16);
- if ( *v20 )
- {
- if ( WORD3(v34) != HIWORD(v39) || v21 != WORD1(v34) )
- {
- v22 = 52 * *v20;
- if ( *(&citymap_dat.constitution + v22) < 0xFFu
- && *(&citymap_dat.constitution + v22) < (*(*v33 + 30) >> 16) + (*(*v33 + 26) >> 18) - 4 )
- {
- if ( collapse_tile(SBYTE2(v39), v21, SBYTE2(v35)) )
- {
- v23 = sub_5D260();
- if ( v23 )
- {
- v23[1] = 32 * HIWORD(v39);
- v23[4] = 0;
- v23[2] = 32 * v21;
- *v23 = 3;
- v23[3] = 16 * HIWORD(v35);
- }
- }
- }
- }
- }
- else
- {
- sub_80528(SHIWORD(v39), v24, SHIWORD(v35));
- }
- LOWORD(v19) = v19 + 1;
- }
- }
- v25 = 0;
- while ( v25 < *(*v33 + 3) - 1 )
- {
- v26 = 2 * v25++;
- *(*v33 + v26 + 4) = *(*v33 + v26 + 6);
- }
- v27 = *(*v33 + 24);
- --*(*v33 + 3);
- *(*v33 + 24) = v27 - 16;
- sound(2, SWORD3(v34), SWORD1(v34), *&v37[4], 2);
- if ( !*(*v33 + 3) && !alien_demen_flag && (*(*v33 + 32) > 5 || *(*v33 + 4) >= 0xD4u) )
- {
- v28 = tile_ind(SHIDWORD(v34) >> 16, v34 >> 16, (*&v37[2] >> 16) + 1);
- v29 = *(*v33 + 32);
- if ( v29 > 10 )
- {
- if ( v29 > 25 )
- *v28 = v29 > 45 ? 212 : 213;
- else
- *v28 = 214;
- }
- else
- {
- *v28 = 215;
- }
- v30 = sub_5F688();
- if ( v30 )
- {
- v30[1] = WORD3(v34);
- v30[2] = WORD1(v34);
- *v30 = -1;
- v30[3] = *&v37[4] + 1;
- }
- }
- v31 = sub_5D260();
- if ( v31 )
- {
- v31[1] = 32 * WORD3(v34);
- v31[4] = 0;
- v31[2] = 32 * WORD1(v34);
- *v31 = 3;
- v31[3] = 16 * *&v37[4];
- }
- }
- else if ( !v5 )
- {
- v6 = *(*v33 + 28);
- --*(*v33 + 30);
- *(*v33 + 28) = v6 + 16;
- }
- }
- result = *v33;
- if ( *(*v33 + 28) > *(*v33 + 24) )
- {
- result = (*(*v33 + 24) >> 18) + (*(*v33 + 22) >> 16);
- v32 = *(*v33 + 26);
- *(*v33 + 24) = result;
- if ( v32 < 20 )
- *(*v33 + 26) = v32 + 1;
- }
- }
- *v33 += 34;
- ++v36;
- }
- while ( v36 < 64 );
- return result;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement