BDATA.CPP (220730B)
1 // 2 // Copyright 2020 Electronic Arts Inc. 3 // 4 // TiberianDawn.DLL and RedAlert.dll and corresponding source code is free 5 // software: you can redistribute it and/or modify it under the terms of 6 // the GNU General Public License as published by the Free Software Foundation, 7 // either version 3 of the License, or (at your option) any later version. 8 9 // TiberianDawn.DLL and RedAlert.dll and corresponding source code is distributed 10 // in the hope that it will be useful, but with permitted additional restrictions 11 // under Section 7 of the GPL. See the GNU General Public License in LICENSE.TXT 12 // distributed with this program. You should have received a copy of the 13 // GNU General Public License along with permitted additional restrictions 14 // with this program. If not, see https://github.com/electronicarts/CnC_Remastered_Collection 15 16 /* $Header: F:\projects\c&c\vcs\code\bdata.cpv 2.17 16 Oct 1995 16:50:08 JOE_BOSTIC $ */ 17 /*********************************************************************************************** 18 *** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S *** 19 *********************************************************************************************** 20 * * 21 * Project Name : Command & Conquer * 22 * * 23 * File Name : BDATA.CPP * 24 * * 25 * Programmer : Joe L. Bostic * 26 * * 27 * Start Date : September 10, 1993 * 28 * * 29 * Last Update : July 17, 1995 [JLB] * 30 * * 31 *---------------------------------------------------------------------------------------------* 32 * Functions: * 33 * BuildingTypeClass::As_Reference -- Fetches reference to the building type specified. * 34 * BuildingTypeClass::Bib_And_Offset -- Determines the bib and appropriate cell offset. * 35 * BuildingTypeClass::BuildingTypeClass -- This is the constructor for the building types. * 36 * BuildingTypeClass::Create_And_Place -- Creates and places a building object onto the map. * 37 * BuildingTypeClass::Create_One_Of -- Creates a building of this type. * 38 * BuildingTypeClass::Dimensions -- Fetches the pixel dimensions of the building. * 39 * BuildingTypeClass::Display -- Renders a generic view of building. * 40 * BuildingTypeClass::Full_Name -- Fetches the full name text number. * 41 * BuildingTypeClass::Height -- Determins the height of the building in icons. * 42 * BuildingTypeClass::Init -- Performs theater specific initialization. * 43 * BuildingTypeClass::Init_Anim -- Initialize an animation control for a building. * 44 * BuildingTypeClass::Legal_Placement -- Determines if building can be legally placed at pos.* 45 * BuildingTypeClass::Max_Pips -- Determines the maximum pips to display. * 46 * BuildingTypeClass::Occupy_List -- Fetches the occupy list for the building. * 47 * BuildingTypeClass::One_Time -- Performs special one time action for buildings. * 48 * BuildingTypeClass::Overlap_List -- Fetches the overlap list for the building. * 49 * BuildingTypeClass::Prep_For_Add -- Prepares scenario editor for adding an object. * 50 * BuildingTypeClass::Repair_Cost -- Determines cost per "step" of repair. * 51 * BuildingTypeClass::Repair_Step -- Determines the repair step rate. * 52 * BuildingTypeClass::Who_Can_Build_Me -- Determines which factory can create the building. * 53 * BuildingTypeClass::Width -- Determines width of bulding in icons. * 54 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ 55 56 #include "function.h" 57 58 #define MCW MAP_CELL_W 59 60 #define XYCELL(x,y) (y*MAP_CELL_W+x) 61 static short const ExitPyle[] = { 62 XYCELL(1,2), 63 XYCELL(2,2), 64 XYCELL(0,2), 65 XYCELL(-1,2), 66 XYCELL(-1,-1), 67 XYCELL(0,-1), 68 XYCELL(1,-1), 69 XYCELL(2,-1), 70 XYCELL(2,-1), 71 XYCELL(-1,0), 72 XYCELL(2,0), 73 XYCELL(2,1), 74 XYCELL(-1,1), 75 REFRESH_EOL 76 }; 77 static short const ExitHand[] = { 78 XYCELL(2,3), 79 XYCELL(1,3), 80 XYCELL(0,3), 81 XYCELL(2,2), 82 XYCELL(-1,3), 83 XYCELL(-1,2), 84 XYCELL(0,0), 85 XYCELL(1,0), 86 XYCELL(-1,0), 87 XYCELL(2,0), 88 XYCELL(2,1), 89 XYCELL(-1,1), 90 REFRESH_EOL 91 }; 92 static short const ExitWeap[] = { 93 XYCELL(-1,3), 94 XYCELL(0,3), 95 XYCELL(-1,2), 96 XYCELL(1,3), 97 // XYCELL(0,0), 98 // XYCELL(1,0), 99 // XYCELL(2,0), 100 // XYCELL(-1,0), 101 // XYCELL(3,0), 102 XYCELL(-1,1), 103 XYCELL(3,1), 104 XYCELL(3,2), 105 XYCELL(3,3), 106 XYCELL(2,3), 107 REFRESH_EOL 108 }; 109 static short const ExitAirstrip[] = { 110 XYCELL(-1,-1), 111 XYCELL(-1,0), 112 XYCELL(-1,1), 113 XYCELL(-1,2), 114 XYCELL(0,-1), 115 XYCELL(0,2), 116 XYCELL(1,-1), 117 XYCELL(1,2), 118 XYCELL(2,-1), 119 XYCELL(2,2), 120 XYCELL(3,-1), 121 XYCELL(3,2), 122 XYCELL(4,-1), 123 XYCELL(4,0), 124 XYCELL(4,1), 125 XYCELL(4,2), 126 REFRESH_EOL 127 }; 128 129 static short const OListSAM[] = {-MCW, -(MCW-1), REFRESH_EOL}; 130 static short const List32[] = {0, 1, 2, MCW, MCW+1, MCW+2, REFRESH_EOL}; 131 static short const List22_0011[] = {MCW, MCW+1, REFRESH_EOL}; 132 static short const List22_1100[] = {0, 1, REFRESH_EOL}; 133 static short const ListFix[] = {1, MCW, MCW+1, MCW+2, MCW+MCW+1, REFRESH_EOL}; 134 static short const StoreList[] = {0, 1, REFRESH_EOL}; 135 static short const List2[] = {0, 1, MCW+1, MCW, REFRESH_EOL}; 136 static short const List42[] = {0, 1, 2, 3, MCW, MCW+1, MCW+2, MCW+3, REFRESH_EOL}; 137 static short const ListWestwood[] = {1, 2, 3, MCW+1, MCW+2, MCW+3, REFRESH_EOL}; 138 static short const OListWestwood[] = {0, MCW, REFRESH_EOL}; 139 static short const ComList[] = {0, MCW, MCW+1, REFRESH_EOL}; 140 static short const List21[] = {0, 1, REFRESH_EOL}; 141 static short const ListWeap[] = {(MCW*1), (MCW*1)+1, (MCW*1)+2, (MCW*2), (MCW*2)+1, (MCW*2)+2, REFRESH_EOL}; 142 static short const List12[] = {MCW, REFRESH_EOL}; 143 static short const ListHand[] = {MCW, MCW+1, MCW*2+1, REFRESH_EOL}; 144 static short const ListTmpl[] = {MCW, MCW+1, MCW+2, MCW*2, MCW*2+1, MCW*2+2, REFRESH_EOL}; 145 static short const List0011[] = {(MCW*1), (MCW*1)+1, REFRESH_EOL}; 146 static short const List1101[] = {0, 1, (MCW*1)+1, REFRESH_EOL}; 147 static short const List11[] = {0, 1, REFRESH_EOL}; 148 static short const List1[] = {0, REFRESH_EOL}; 149 static short const List1100[] = {0, 1, REFRESH_EOL}; 150 static short const List0010[] = {MCW, REFRESH_EOL}; 151 static short const List1000[] = {0, REFRESH_EOL}; 152 static short const List0100[] = {1, REFRESH_EOL}; 153 static short const List0111[] = {1, (MCW*1), (MCW*1)+1, REFRESH_EOL}; 154 //static short const List1111[] = {0, 1, (MCW*1), (MCW*1)+1, REFRESH_EOL}; 155 static short const List1011[] = {0, (MCW*1), (MCW*1)+1, REFRESH_EOL}; 156 static short const List010111000[] = {1, (MCW*1), (MCW*1)+1, (MCW*1)+2, REFRESH_EOL}; 157 static short const List101000111[] = {0, 2, (MCW*2), (MCW*2)+1, (MCW*2)+2, REFRESH_EOL}; 158 159 static short const OListFix[] = {0, 2, MCW+MCW, MCW+MCW+2, REFRESH_EOL}; 160 static short const OListWeap[] = {0, 1, 2, REFRESH_EOL}; 161 static short const OComList[] = {1, REFRESH_EOL}; 162 static short const OList12[] = {0, REFRESH_EOL}; 163 static short const OListHand[] = {0, 1, MCW*2, MCW*1, REFRESH_EOL}; 164 static short const OListTmpl[] = {0, 1, 2, REFRESH_EOL}; 165 166 167 /*************************************************************************** 168 */ 169 static BuildingTypeClass const ClassTemple( 170 STRUCT_TEMPLE, 171 TXT_TEMPLE, // NAME: Short name of the structure. 172 "TMPL", // NAME: Short name of the structure. 173 XYP_COORD(0,0), // Exit point for produced units. 174 7, // Build level. 175 STRUCTF_RADAR, // Building prerequisite. 176 false, // Has ability to detect adjacent cloaked objects? 177 false, // Animation rate is regulated for constant speed? 178 true, // Requires a bib dirt patch? 179 false, // Always use the given name for the building? 180 false, // Is this a wall type structure? 181 false, // Is it a factory type building? 182 false, // Can this building be captured? 183 false, // Does it catch fire? 184 true, // Simple (one frame) damage imagery? 185 false, // Is it invisible to radar? 186 true, // Can the player select this? 187 true, // Is this a legal target for attack or move? 188 false, // Is this an insignificant building? 189 false, // Is it immune to normal combat damage? 190 false, // Theater specific graphic image? 191 false, // Does it have a rotating turret? 192 false, // Fires multiple shots in quick succession? 193 true, // Can it be repaired? 194 true, // Can it be manufactured by the player? 195 true, // Does it contain a crew? 196 false, // Does building care less if placed on concrete? 197 RTTI_NONE, // The object type produced at this factory. 198 DIR_N, // Starting idle frame to match construction. 199 1000, // STRNTH: Full strength of building. 200 4, // SIGHTRANGE: Range of sighting. 201 3000, // COST: Cost to purchase. 202 13, // SCENARIO: Starting availability scenario. 203 0,20, // RISK/RWRD: Risk/reward rating values. 204 HOUSEF_MULTI1| 205 HOUSEF_MULTI2| 206 HOUSEF_MULTI3| 207 HOUSEF_MULTI4| 208 HOUSEF_MULTI5| 209 HOUSEF_MULTI6| 210 HOUSEF_JP| 211 HOUSEF_BAD, // OWNABLE: Ownable by house (bit field). 212 WEAPON_NONE,WEAPON_NONE, 213 ARMOR_ALUMINUM, // ARMOR: Armor type 214 0, // CANENTER: Units that can enter building. 215 0, // CAPACITY: Spice storage capacity. 216 0, // POWER: Power points generated. 217 150, // DRAIN: Power points required. 218 BSIZE_33, // SIZE: Building size. 219 NULL, // Preferred exit cell list. 220 (short const *)ListTmpl, // OCCUPYLIST: List of active foundation squares. 221 (short const *)OListTmpl // OVERLAPLIST:List of overlap cell offset. 222 ); 223 224 static BuildingTypeClass const ClassEye( 225 STRUCT_EYE, 226 TXT_EYE, // NAME: Short name of the structure. 227 "EYE", // NAME: Short name of the structure. 228 XYP_COORD(0,0), // Exit point for produced units. 229 7, // Build level. 230 STRUCTF_RADAR, // Building prerequisite. 231 false, // Has ability to detect adjacent cloaked objects? 232 true, // Animation rate is regulated for constant speed? 233 true, // Requires a bib dirt patch? 234 false, // Always use the given name for the building? 235 false, // Is this a wall type structure? 236 false, // Is it a factory type building? 237 false, // Can this building be captured? 238 false, // Does it catch fire? 239 false, // Simple (one frame) damage imagery? 240 false, // Is it invisible to radar? 241 true, // Can the player select this? 242 true, // Is this a legal target for attack or move? 243 false, // Is this an insignificant building? 244 false, // Is it immune to normal combat damage? 245 false, // Theater specific graphic image? 246 false, // Does it have a rotating turret? 247 false, // Fires multiple shots in quick succession? 248 true, // Can it be repaired? 249 true, // Can it be manufactured by the player? 250 true, // Does it contain a crew? 251 false, // Does building care less if placed on concrete? 252 RTTI_NONE, // The object type produced at this factory. 253 (DirType)160, // Starting idle frame to match construction. 254 500, // STRNTH: Full strength of building. 255 10, // SIGHTRANGE: Range of sighting. 256 2800, // COST: Cost to purchase. 257 13, // SCENARIO: Starting availability scenario. 258 0,100, // RISK/RWRD: Risk/reward rating values. 259 HOUSEF_MULTI1| 260 HOUSEF_MULTI2| 261 HOUSEF_MULTI3| 262 HOUSEF_MULTI4| 263 HOUSEF_MULTI5| 264 HOUSEF_MULTI6| 265 HOUSEF_JP| 266 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 267 WEAPON_NONE,WEAPON_NONE, 268 ARMOR_WOOD, // ARMOR: Armor type 269 0, // CANENTER: Units that can enter building. 270 0, // CAPACITY: Spice storage capacity. 271 0, // POWER: Power points required. 272 200, // DRAIN: Power points required. 273 BSIZE_22, // SIZE: Building size. 274 NULL, // Preferred exit cell list. 275 (short const *)ComList, // OCCUPYLIST: List of active foundation squares. 276 (short const *)OComList // OVERLAPLIST:List of overlap cell offset. 277 ); 278 279 static BuildingTypeClass const ClassWeapon( 280 STRUCT_WEAP, 281 TXT_WEAPON_FACTORY, // NAME: Short name of the structure. 282 "WEAP", // NAME: Short name of the structure. 283 XYP_COORD(10+(CELL_PIXEL_W/2), ((CELL_PIXEL_H*3)-(CELL_PIXEL_H/2))-21), // Exit point for produced units. 284 2, // Build level. 285 STRUCTF_REFINERY, // Building prerequisite. 286 false, // Has ability to detect adjacent cloaked objects? 287 false, // Animation rate is regulated for constant speed? 288 true, // Requires a bib dirt patch? 289 false, // Always use the given name for the building? 290 false, // Is this a wall type structure? 291 true, // Is it a factory type building? 292 true, // Can this building be captured? 293 false, // Does it catch fire? 294 false, // Simple (one frame) damage imagery? 295 false, // Is it invisible to radar? 296 true, // Can the player select this? 297 true, // Is this a legal target for attack or move? 298 false, // Is this an insignificant building? 299 false, // Is it immune to normal combat damage? 300 false, // Theater specific graphic image? 301 false, // Does it have a rotating turret? 302 false, // Fires multiple shots in quick succession? 303 true, // Can it be repaired? 304 true, // Can it be manufactured by the player? 305 true, // Does it contain a crew? 306 false, // Does building care less if placed on concrete? 307 RTTI_UNITTYPE, // The object type produced at this factory. 308 DIR_N, // Starting idle frame to match construction. 309 #ifdef ADVANCED 310 500, // STRNTH: Full strength of building. 311 #else 312 200, // STRNTH: Full strength of building. 313 #endif 314 3, // SIGHTRANGE: Range of sighting. 315 2000, // COST: Cost to purchase. 316 5, // SCENARIO: Starting availability scenario. 317 0,86, // RISK/RWRD: Risk/reward rating values. 318 HOUSEF_MULTI1| 319 HOUSEF_MULTI2| 320 HOUSEF_MULTI3| 321 HOUSEF_MULTI4| 322 HOUSEF_MULTI5| 323 HOUSEF_MULTI6| 324 HOUSEF_JP| 325 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 326 WEAPON_NONE,WEAPON_NONE, 327 ARMOR_ALUMINUM, // ARMOR: Armor type 328 0, // CANENTER: Units that can enter building. 329 0, // CAPACITY: Spice storage capacity. 330 0, // POWER: Power points required. 331 30, // DRAIN: Power points required. 332 BSIZE_33, // SIZE: Building size. 333 (short const *)ExitWeap, // Preferred exit cell list. 334 (short const *)ListWeap, // OCCUPYLIST: List of active foundation squares. 335 (short const *)OListWeap // OVERLAPLIST:List of overlap cell offset. 336 ); 337 338 static BuildingTypeClass const ClassGTower( 339 STRUCT_GTOWER, 340 TXT_GUARD_TOWER, // NAME: Short name of the structure. 341 "GTWR", // NAME: Short name of the structure. 342 XYP_COORD(0,0), // Exit point for produced units. 343 2, // Build level. 344 STRUCTF_BARRACKS, // Building prerequisite. 345 true, // Has ability to detect adjacent cloaked objects? 346 false, // Animation rate is regulated for constant speed? 347 false, // Requires a bib dirt patch? 348 false, // Always use the given name for the building? 349 false, // Is this a wall type structure? 350 false, // Is it a factory type building? 351 false, // Can this building be captured? 352 false, // Does it catch fire? 353 true, // Simple (one frame) damage imagery? 354 false, // Is it invisible to radar? 355 true, // Can the player select this? 356 true, // Is this a legal target for attack or move? 357 false, // Is this an insignificant building? 358 false, // Is it immune to normal combat damage? 359 false, // Theater specific graphic image? 360 false, // Does it have a rotating turret? 361 false, // Fires multiple shots in quick succession? 362 true, // Can it be repaired? 363 true, // Can it be manufactured by the player? 364 true, // Does it contain a crew? 365 false, // Does building care less if placed on concrete? 366 RTTI_NONE, // The object type produced at this factory. 367 DIR_N, // Starting idle frame to match construction. 368 200, // STRNTH: Full strength of building. 369 3, // SIGHTRANGE: Range of sighting. 370 500, // COST: Cost to purchase. 371 7, // SCENARIO: Starting availability scenario. 372 100,25, // RISK/RWRD: Risk/reward rating values. 373 HOUSEF_MULTI1| 374 HOUSEF_MULTI2| 375 HOUSEF_MULTI3| 376 HOUSEF_MULTI4| 377 HOUSEF_MULTI5| 378 HOUSEF_MULTI6| 379 HOUSEF_JP| 380 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 381 WEAPON_CHAIN_GUN,WEAPON_NONE, 382 // WEAPON_M60MG,WEAPON_NONE, 383 ARMOR_WOOD, // ARMOR: Armor type 384 0, // CANENTER: Units that can enter building. 385 0, // CAPACITY: Spice storage capacity. 386 00, // POWER: Power points required. 387 10, // DRAIN: Power points required. 388 BSIZE_11, // SIZE: Building size. 389 NULL, // Preferred exit cell list. 390 (short const *)List1, // OCCUPYLIST: List of active foundation squares. 391 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 392 ); 393 394 static BuildingTypeClass const ClassATower( 395 STRUCT_ATOWER, 396 TXT_AGUARD_TOWER, // NAME: Short name of the structure. 397 "ATWR", // NAME: Short name of the structure. 398 XYP_COORD(0,0), // Exit point for produced units. 399 4, // Build level. 400 STRUCTF_RADAR, // Building prerequisite. 401 true, // Has ability to detect adjacent cloaked objects? 402 false, // Animation rate is regulated for constant speed? 403 false, // Requires a bib dirt patch? 404 false, // Always use the given name for the building? 405 false, // Is this a wall type structure? 406 false, // Is it a factory type building? 407 false, // Can this building be captured? 408 false, // Does it catch fire? 409 true, // Simple (one frame) damage imagery? 410 false, // Is it invisible to radar? 411 true, // Can the player select this? 412 true, // Is this a legal target for attack or move? 413 false, // Is this an insignificant building? 414 false, // Is it immune to normal combat damage? 415 false, // Theater specific graphic image? 416 false, // Does it have a rotating turret? 417 true, // Fires multiple shots in quick succession? 418 true, // Can it be repaired? 419 true, // Can it be manufactured by the player? 420 true, // Does it contain a crew? 421 false, // Does building care less if placed on concrete? 422 RTTI_NONE, // The object type produced at this factory. 423 DIR_N, // Starting idle frame to match construction. 424 300, // STRNTH: Full strength of building. 425 4, // SIGHTRANGE: Range of sighting. 426 1000, // COST: Cost to purchase. 427 13, // SCENARIO: Starting availability scenario. 428 100,30, // RISK/RWRD: Risk/reward rating values. 429 HOUSEF_MULTI1| 430 HOUSEF_MULTI2| 431 HOUSEF_MULTI3| 432 HOUSEF_MULTI4| 433 HOUSEF_MULTI5| 434 HOUSEF_MULTI6| 435 HOUSEF_JP| 436 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 437 WEAPON_TOW_TWO,WEAPON_NONE, 438 // WEAPON_TOMAHAWK,WEAPON_NONE, 439 ARMOR_ALUMINUM, // ARMOR: Armor type 440 0, // CANENTER: Units that can enter building. 441 0, // CAPACITY: Spice storage capacity. 442 0, // POWER: Power points required. 443 20, // DRAIN: Power points required. 444 BSIZE_12, // SIZE: Building size. 445 NULL, // Preferred exit cell list. 446 (short const *)List12, // OCCUPYLIST: List of active foundation squares. 447 (short const *)OList12 // OVERLAPLIST:List of overlap cell offset. 448 ); 449 450 static BuildingTypeClass const ClassObelisk( 451 STRUCT_OBELISK, 452 TXT_OBELISK, // NAME: Short name of the structure. 453 "OBLI", // NAME: Short name of the structure. 454 XYP_COORD(0,0), // Exit point for produced units. 455 4, // Build level. 456 STRUCTF_RADAR, // Building prerequisite. 457 true, // Has ability to detect adjacent cloaked objects? 458 false, // Animation rate is regulated for constant speed? 459 false, // Requires a bib dirt patch? 460 false, // Always use the given name for the building? 461 false, // Is this a wall type structure? 462 false, // Is it a factory type building? 463 false, // Can this building be captured? 464 false, // Does it catch fire? 465 false, // Simple (one frame) damage imagery? 466 false, // Is it invisible to radar? 467 true, // Can the player select this? 468 true, // Is this a legal target for attack or move? 469 false, // Is this an insignificant building? 470 false, // Is it immune to normal combat damage? 471 false, // Theater specific graphic image? 472 false, // Does it have a rotating turret? 473 false, // Fires multiple shots in quick succession? 474 true, // Can it be repaired? 475 true, // Can it be manufactured by the player? 476 true, // Does it contain a crew? 477 false, // Does building care less if placed on concrete? 478 RTTI_NONE, // The object type produced at this factory. 479 DIR_N, // Starting idle frame to match construction. 480 200, // STRNTH: Full strength of building. 481 5, // SIGHTRANGE: Range of sighting. 482 1500, // COST: Cost to purchase. 483 11, // SCENARIO: Starting availability scenario. 484 100,35, // RISK/RWRD: Risk/reward rating values. 485 HOUSEF_MULTI1| 486 HOUSEF_MULTI2| 487 HOUSEF_MULTI3| 488 HOUSEF_MULTI4| 489 HOUSEF_MULTI5| 490 HOUSEF_MULTI6| 491 HOUSEF_JP| 492 HOUSEF_BAD, // OWNABLE: Ownable by house (bit field). 493 WEAPON_OBELISK_LASER,WEAPON_NONE, 494 ARMOR_ALUMINUM, // ARMOR: Armor type 495 0, // CANENTER: Units that can enter building. 496 0, // CAPACITY: Spice storage capacity. 497 0, // POWER: Power points required. 498 150, // DRAIN: Power points required. 499 BSIZE_12, // SIZE: Building size. 500 NULL, // Preferred exit cell list. 501 (short const *)List12, // OCCUPYLIST: List of active foundation squares. 502 (short const *)OList12 // OVERLAPLIST:List of overlap cell offset. 503 ); 504 505 static BuildingTypeClass const ClassTurret( 506 STRUCT_TURRET, 507 TXT_TURRET, // NAME: Short name of the structure. 508 "GUN", // NAME: Short name of the structure. 509 XYP_COORD(0,0), // Exit point for produced units. 510 2, // Build level. 511 STRUCTF_BARRACKS, // Building prerequisite. 512 true, // Has ability to detect adjacent cloaked objects? 513 false, // Animation rate is regulated for constant speed? 514 false, // Requires a bib dirt patch? 515 false, // Always use the given name for the building? 516 false, // Is this a wall type structure? 517 false, // Is it a factory type building? 518 false, // Can this building be captured? 519 false, // Does it catch fire? 520 false, // Simple (one frame) damage imagery? 521 false, // Is it invisible to radar? 522 true, // Can the player select this? 523 true, // Is this a legal target for attack or move? 524 false, // Is this an insignificant building? 525 false, // Is it immune to normal combat damage? 526 false, // Theater specific graphic image? 527 true, // Does it have a rotating turret? 528 false, // Fires multiple shots in quick succession? 529 true, // Can it be repaired? 530 true, // Can it be manufactured by the player? 531 true, // Does it contain a crew? 532 false, // Does building care less if placed on concrete? 533 RTTI_NONE, // The object type produced at this factory. 534 (DirType)208, // Starting idle frame to match construction. 535 200, // STRNTH: Full strength of building. 536 5, // SIGHTRANGE: Range of sighting. 537 #ifdef ADVANCED 538 600, // COST: Cost to purchase. 539 #else 540 #ifdef PATCH 541 600, 542 #else 543 250, // COST: Cost to purchase. 544 #endif 545 #endif 546 8, // SCENARIO: Starting availability scenario. 547 300,26, // RISK/RWRD: Risk/reward rating values. 548 HOUSEF_MULTI1| 549 HOUSEF_MULTI2| 550 HOUSEF_MULTI3| 551 HOUSEF_MULTI4| 552 HOUSEF_MULTI5| 553 HOUSEF_MULTI6| 554 HOUSEF_JP| 555 HOUSEF_BAD, // OWNABLE: Ownable by house (bit field). 556 WEAPON_TURRET_GUN,WEAPON_NONE, 557 ARMOR_STEEL, // ARMOR: Armor type 558 0, // CANENTER: Units that can enter building. 559 0, // CAPACITY: Spice storage capacity. 560 0, // POWER: Power points required. 561 20, // DRAIN: Power points required. 562 BSIZE_11, // SIZE: Building size. 563 NULL, // Preferred exit cell list. 564 (short const *)List1, // OCCUPYLIST: List of active foundation squares. 565 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 566 ); 567 568 static BuildingTypeClass const ClassConst( 569 STRUCT_CONST, 570 TXT_CONST_YARD, // NAME: Short name of the structure. 571 "FACT", // NAME: Short name of the structure. 572 XYP_COORD(0,0), // Exit point for produced units. 573 99, // Build level. 574 STRUCTF_NONE, // Building prerequisite. 575 false, // Has ability to detect adjacent cloaked objects? 576 false, // Animation rate is regulated for constant speed? 577 true, // Requires a bib dirt patch? 578 false, // Always use the given name for the building? 579 false, // Is this a wall type structure? 580 true, // Is it a factory type building? 581 true, // Can this building be captured? 582 false, // Does it catch fire? 583 false, // Simple (one frame) damage imagery? 584 false, // Is it invisible to radar? 585 true, // Can the player select this? 586 true, // Is this a legal target for attack or move? 587 false, // Is this an insignificant building? 588 false, // Is it immune to normal combat damage? 589 false, // Theater specific graphic image? 590 false, // Does it have a rotating turret? 591 false, // Fires multiple shots in quick succession? 592 true, // Can it be repaired? 593 false, // Can it be manufactured by the player? 594 true, // Does it contain a crew? 595 false, // Does building care less if placed on concrete? 596 RTTI_BUILDINGTYPE, // The object type produced at this factory. 597 DIR_N, // Starting idle frame to match construction. 598 400, // STRNTH: Full strength of building. 599 3, // SIGHTRANGE: Range of sighting. 600 5000, // COST: Cost to purchase. 601 1, // SCENARIO: Starting availability scenario. 602 0,70, // RISK/RWRD: Risk/reward rating values. 603 HOUSEF_MULTI1| 604 HOUSEF_MULTI2| 605 HOUSEF_MULTI3| 606 HOUSEF_MULTI4| 607 HOUSEF_MULTI5| 608 HOUSEF_MULTI6| 609 HOUSEF_JP| 610 HOUSEF_GOOD| 611 HOUSEF_BAD, // OWNABLE: Ownable by house (bit field). 612 WEAPON_NONE,WEAPON_NONE, 613 ARMOR_WOOD, // ARMOR: Armor type 614 0, // CANENTER: Units that can enter building. 615 0, // CAPACITY: Spice storage capacity. 616 30, // POWER: Power points required. 617 15, // DRAIN: Power points required. 618 BSIZE_32, // SIZE: Building size. 619 NULL, // Preferred exit cell list. 620 (short const *)List32, // OCCUPYLIST: List of active foundation squares. 621 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 622 ); 623 624 static BuildingTypeClass const ClassRefinery( 625 STRUCT_REFINERY, 626 TXT_REFINERY, // NAME: Short name of the structure. 627 "PROC", // NAME: Short name of the structure. 628 XYP_COORD(0,0), // Exit point for produced units. 629 1, // Build level. 630 STRUCTF_POWER, // Building prerequisite. 631 false, // Has ability to detect adjacent cloaked objects? 632 false, // Animation rate is regulated for constant speed? 633 true, // Requires a bib dirt patch? 634 false, // Always use the given name for the building? 635 false, // Is this a wall type structure? 636 false, // Is it a factory type building? 637 true, // Can this building be captured? 638 false, // Does it catch fire? 639 false, // Simple (one frame) damage imagery? 640 false, // Is it invisible to radar? 641 true, // Can the player select this? 642 true, // Is this a legal target for attack or move? 643 false, // Is this an insignificant building? 644 false, // Is it immune to normal combat damage? 645 false, // Theater specific graphic image? 646 false, // Does it have a rotating turret? 647 false, // Fires multiple shots in quick succession? 648 true, // Can it be repaired? 649 true, // Can it be manufactured by the player? 650 true, // Does it contain a crew? 651 false, // Does building care less if placed on concrete? 652 RTTI_NONE, // The object type produced at this factory. 653 DIR_N, // Starting idle frame to match construction. 654 450, // STRNTH: Full strength of building. 655 4, // SIGHTRANGE: Range of sighting. 656 2000, // COST: Cost to purchase. 657 2, // SCENARIO: Starting availability scenario. 658 0,55, // RISK/RWRD: Risk/reward rating values. 659 HOUSEF_MULTI1| 660 HOUSEF_MULTI2| 661 HOUSEF_MULTI3| 662 HOUSEF_MULTI4| 663 HOUSEF_MULTI5| 664 HOUSEF_MULTI6| 665 HOUSEF_JP| 666 HOUSEF_GOOD| 667 HOUSEF_BAD, // OWNABLE: Ownable by house (bit field). 668 WEAPON_NONE,WEAPON_NONE, 669 ARMOR_WOOD, // ARMOR: Armor type 670 0, // CANENTER: Units that can enter building. 671 1000, // CAPACITY: Spice storage capacity. 672 10, // POWER: Power points required. 673 40, // DRAIN: Power points required. 674 BSIZE_33, // SIZE: Building size. 675 NULL, // Preferred exit cell list. 676 (short const *)List010111000, // OCCUPYLIST: List of active foundation squares. 677 (short const *)List101000111 // OVERLAPLIST:List of overlap cell offset. 678 ); 679 680 static BuildingTypeClass const ClassStorage( 681 STRUCT_STORAGE, 682 TXT_STORAGE, // NAME: Short name of the structure. 683 "SILO", // NAME: Short name of the structure. 684 XYP_COORD(0,0), // Exit point for produced units. 685 1, // Build level. 686 STRUCTF_REFINERY, // Building prerequisite. 687 false, // Has ability to detect adjacent cloaked objects? 688 false, // Animation rate is regulated for constant speed? 689 true, // Requires a bib dirt patch? 690 false, // Always use the given name for the building? 691 false, // Is this a wall type structure? 692 false, // Is it a factory type building? 693 true, // Can this building be captured? 694 false, // Does it catch fire? 695 true, // Simple (one frame) damage imagery? 696 false, // Is it invisible to radar? 697 true, // Can the player select this? 698 true, // Is this a legal target for attack or move? 699 false, // Is this an insignificant building? 700 false, // Is it immune to normal combat damage? 701 false, // Theater specific graphic image? 702 false, // Does it have a rotating turret? 703 false, // Fires multiple shots in quick succession? 704 true, // Can it be repaired? 705 true, // Can it be manufactured by the player? 706 false, // Does it contain a crew? 707 false, // Does building care less if placed on concrete? 708 RTTI_NONE, // The object type produced at this factory. 709 DIR_N, // Starting idle frame to match construction. 710 150, // STRNTH: Full strength of building. 711 2, // SIGHTRANGE: Range of sighting. 712 150, // COST: Cost to purchase. 713 // 300, // COST: Cost to purchase. 714 2, // SCENARIO: Starting availability scenario. 715 0,16, // RISK/RWRD: Risk/reward rating values. 716 HOUSEF_MULTI1| 717 HOUSEF_MULTI2| 718 HOUSEF_MULTI3| 719 HOUSEF_MULTI4| 720 HOUSEF_MULTI5| 721 HOUSEF_MULTI6| 722 HOUSEF_JP| 723 HOUSEF_GOOD| 724 HOUSEF_BAD, // OWNABLE: Ownable by house (bit field). 725 WEAPON_NONE,WEAPON_NONE, 726 ARMOR_WOOD, // ARMOR: Armor type 727 0, // CANENTER: Units that can enter building. 728 1500, // CAPACITY: Spice storage capacity. 729 0, // POWER: Power points required. 730 10, // DRAIN: Power points required. 731 BSIZE_21, // SIZE: Building size. 732 NULL, // Preferred exit cell list. 733 (short const *)StoreList, // OCCUPYLIST: List of active foundation squares. 734 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 735 ); 736 737 static BuildingTypeClass const ClassHelipad( 738 STRUCT_HELIPAD, 739 TXT_HELIPAD, // NAME: Short name of the structure. 740 "HPAD", // NAME: Short name of the structure. 741 XYP_COORD(0,0), // Exit point for produced units. 742 6, // Build level. 743 STRUCTF_BARRACKS, // Building prerequisite. 744 false, // Has ability to detect adjacent cloaked objects? 745 false, // Animation rate is regulated for constant speed? 746 true, // Requires a bib dirt patch? 747 false, // Always use the given name for the building? 748 false, // Is this a wall type structure? 749 true, // Is it a factory type building? 750 true, // Can this building be captured? 751 false, // Does it catch fire? 752 false, // Simple (one frame) damage imagery? 753 false, // Is it invisible to radar? 754 true, // Can the player select this? 755 true, // Is this a legal target for attack or move? 756 false, // Is this an insignificant building? 757 false, // Is it immune to normal combat damage? 758 false, // Theater specific graphic image? 759 false, // Does it have a rotating turret? 760 false, // Fires multiple shots in quick succession? 761 true, // Can it be repaired? 762 true, // Can it be manufactured by the player? 763 false, // Does it contain a crew? 764 false, // Does building care less if placed on concrete? 765 RTTI_AIRCRAFTTYPE, // The object type produced at this factory. 766 DIR_N, // Starting idle frame to match construction. 767 400, // STRNTH: Full strength of building. 768 3, // SIGHTRANGE: Range of sighting. 769 1500, // COST: Cost to purchase. 770 10, // SCENARIO: Starting availability scenario. 771 0,65, // RISK/RWRD: Risk/reward rating values. 772 HOUSEF_MULTI1| 773 HOUSEF_MULTI2| 774 HOUSEF_MULTI3| 775 HOUSEF_MULTI4| 776 HOUSEF_MULTI5| 777 HOUSEF_MULTI6| 778 HOUSEF_JP| 779 HOUSEF_BAD| 780 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 781 WEAPON_NONE,WEAPON_NONE, 782 ARMOR_WOOD, // ARMOR: Armor type 783 0, // CANENTER: Units that can enter building. 784 0, // CAPACITY: Spice storage capacity. 785 0, // POWER: Power points required. 786 10, // DRAIN: Power points required. 787 BSIZE_22, // SIZE: Building size. 788 NULL, // Preferred exit cell list. 789 (short const *)List2, // OCCUPYLIST: List of active foundation squares. 790 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 791 ); 792 793 static BuildingTypeClass const ClassCommand( 794 STRUCT_RADAR, 795 TXT_COMMAND, // NAME: Short name of the structure. 796 "HQ", // NAME: Short name of the structure. 797 XYP_COORD(0,0), // Exit point for produced units. 798 2, // Build level. 799 STRUCTF_REFINERY, // Building prerequisite. 800 true, // Has ability to detect adjacent cloaked objects? 801 true, // Animation rate is regulated for constant speed? 802 true, // Requires a bib dirt patch? 803 false, // Always use the given name for the building? 804 false, // Is this a wall type structure? 805 false, // Is it a factory type building? 806 true, // Can this building be captured? 807 false, // Does it catch fire? 808 false, // Simple (one frame) damage imagery? 809 false, // Is it invisible to radar? 810 true, // Can the player select this? 811 true, // Is this a legal target for attack or move? 812 false, // Is this an insignificant building? 813 false, // Is it immune to normal combat damage? 814 false, // Theater specific graphic image? 815 false, // Does it have a rotating turret? 816 false, // Fires multiple shots in quick succession? 817 true, // Can it be repaired? 818 true, // Can it be manufactured by the player? 819 true, // Does it contain a crew? 820 false, // Does building care less if placed on concrete? 821 RTTI_NONE, // The object type produced at this factory. 822 (DirType)160, // Starting idle frame to match construction. 823 500, // STRNTH: Full strength of building. 824 10, // SIGHTRANGE: Range of sighting. 825 1000, // COST: Cost to purchase. 826 3, // SCENARIO: Starting availability scenario. 827 0,20, // RISK/RWRD: Risk/reward rating values. 828 HOUSEF_MULTI1| 829 HOUSEF_MULTI2| 830 HOUSEF_MULTI3| 831 HOUSEF_MULTI4| 832 HOUSEF_MULTI5| 833 HOUSEF_MULTI6| 834 HOUSEF_JP| 835 HOUSEF_GOOD| 836 HOUSEF_BAD, // OWNABLE: Ownable by house (bit field). 837 WEAPON_NONE,WEAPON_NONE, 838 ARMOR_WOOD, // ARMOR: Armor type 839 0, // CANENTER: Units that can enter building. 840 0, // CAPACITY: Spice storage capacity. 841 0, // POWER: Power points required. 842 40, // DRAIN: Power points required. 843 BSIZE_22, // SIZE: Building size. 844 NULL, // Preferred exit cell list. 845 (short const *)ComList, // OCCUPYLIST: List of active foundation squares. 846 (short const *)OComList // OVERLAPLIST:List of overlap cell offset. 847 ); 848 849 static BuildingTypeClass const ClassSAM( 850 STRUCT_SAM, 851 TXT_SAM, // NAME: Short name of the structure. 852 "SAM", // NAME: Short name of the structure. 853 XYP_COORD(0,0), // Exit point for produced units. 854 6, // Build level. 855 STRUCTF_BARRACKS, // Building prerequisite. 856 false, // Has ability to detect adjacent cloaked objects? 857 false, // Animation rate is regulated for constant speed? 858 false, // Requires a bib dirt patch? 859 false, // Always use the given name for the building? 860 false, // Is this a wall type structure? 861 false, // Is it a factory type building? 862 false, // Can this building be captured? 863 false, // Does it catch fire? 864 false, // Simple (one frame) damage imagery? 865 false, // Is it invisible to radar? 866 true, // Can the player select this? 867 true, // Is this a legal target for attack or move? 868 false, // Is this an insignificant building? 869 false, // Is it immune to normal combat damage? 870 false, // Theater specific graphic image? 871 true, // Does it have a rotating turret? 872 true, // Fires multiple shots in quick succession? 873 true, // Can it be repaired? 874 true, // Can it be manufactured by the player? 875 false, // Does it contain a crew? 876 false, // Does building care less if placed on concrete? 877 RTTI_NONE, // The object type produced at this factory. 878 DIR_N, // Starting idle frame to match construction. 879 200, // STRNTH: Full strength of building. 880 3, // SIGHTRANGE: Range of sighting. 881 750, // COST: Cost to purchase. 882 5, // SCENARIO: Starting availability scenario. 883 300,40, // RISK/RWRD: Risk/reward rating values. 884 HOUSEF_MULTI1| 885 HOUSEF_MULTI2| 886 HOUSEF_MULTI3| 887 HOUSEF_MULTI4| 888 HOUSEF_MULTI5| 889 HOUSEF_MULTI6| 890 HOUSEF_JP| 891 HOUSEF_BAD, // OWNABLE: Ownable by house (bit field). 892 WEAPON_NIKE,WEAPON_NONE, 893 ARMOR_STEEL, // ARMOR: Armor type 894 0, // CANENTER: Units that can enter building. 895 0, // CAPACITY: Spice storage capacity. 896 0, // POWER: Power points required. 897 20, // DRAIN: Power points required. 898 BSIZE_21, // SIZE: Building size. 899 NULL, // Preferred exit cell list. 900 (short const *)List21, // OCCUPYLIST: List of active foundation squares. 901 (short const *)OListSAM // OVERLAPLIST:List of overlap cell offset. 902 ); 903 904 static BuildingTypeClass const ClassAirStrip( 905 STRUCT_AIRSTRIP, 906 TXT_AIRSTRIP, // NAME: Short name of the structure. 907 "AFLD", // NAME: Short name of the structure. 908 XYP_COORD(0,0), // Exit point for produced units. 909 2, // Build level. 910 STRUCTF_REFINERY, // Building prerequisite. 911 false, // Has ability to detect adjacent cloaked objects? 912 true, // Animation rate is regulated for constant speed? 913 true, // Requires a bib dirt patch? 914 false, // Always use the given name for the building? 915 false, // Is this a wall type structure? 916 true, // Is it a factory type building? 917 true, // Can this building be captured? 918 false, // Does it catch fire? 919 false, // Simple (one frame) damage imagery? 920 false, // Is it invisible to radar? 921 true, // Can the player select this? 922 true, // Is this a legal target for attack or move? 923 false, // Is this an insignificant building? 924 false, // Is it immune to normal combat damage? 925 false, // Theater specific graphic image? 926 false, // Does it have a rotating turret? 927 false, // Fires multiple shots in quick succession? 928 true, // Can it be repaired? 929 true, // Can it be manufactured by the player? 930 true, // Does it contain a crew? 931 false, // Does building care less if placed on concrete? 932 RTTI_UNITTYPE, // The object type produced at this factory. 933 DIR_N, // Starting idle frame to match construction. 934 500, // STRNTH: Full strength of building. 935 5, // SIGHTRANGE: Range of sighting. 936 2000, // COST: Cost to purchase. 937 5, // SCENARIO: Starting availability scenario. 938 300,86, // RISK/RWRD: Risk/reward rating values. 939 HOUSEF_MULTI1| 940 HOUSEF_MULTI2| 941 HOUSEF_MULTI3| 942 HOUSEF_MULTI4| 943 HOUSEF_MULTI5| 944 HOUSEF_MULTI6| 945 HOUSEF_JP| 946 HOUSEF_BAD, // OWNABLE: Ownable by house (bit field). 947 WEAPON_NONE,WEAPON_NONE, 948 ARMOR_STEEL, // ARMOR: Armor type 949 0, // CANENTER: Units that can enter building. 950 0, // CAPACITY: Spice storage capacity. 951 0, // POWER: Power points required. 952 30, // DRAIN: Power points required. 953 BSIZE_42, // SIZE: Building size. 954 ExitAirstrip, // Preferred exit cell list. 955 (short const *)List42, // OCCUPYLIST: List of active foundation squares. 956 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 957 ); 958 959 static BuildingTypeClass const ClassPower( 960 STRUCT_POWER, 961 TXT_POWER, // NAME: Short name of the structure. 962 "NUKE", // NAME: Short name of the structure. 963 XYP_COORD(0,0), // Exit point for produced units. 964 0, // Build level. 965 STRUCTF_NONE, // Building prerequisite. 966 false, // Has ability to detect adjacent cloaked objects? 967 true, // Animation rate is regulated for constant speed? 968 true, // Requires a bib dirt patch? 969 false, // Always use the given name for the building? 970 false, // Is this a wall type structure? 971 false, // Is it a factory type building? 972 true, // Can this building be captured? 973 false, // Does it catch fire? 974 true, // Simple (one frame) damage imagery? 975 false, // Is it invisible to radar? 976 true, // Can the player select this? 977 true, // Is this a legal target for attack or move? 978 false, // Is this an insignificant building? 979 false, // Is it immune to normal combat damage? 980 false, // Theater specific graphic image? 981 false, // Does it have a rotating turret? 982 false, // Fires multiple shots in quick succession? 983 true, // Can it be repaired? 984 true, // Can it be manufactured by the player? 985 true, // Does it contain a crew? 986 false, // Does building care less if placed on concrete? 987 RTTI_NONE, // The object type produced at this factory. 988 DIR_N, // Starting idle frame to match construction. 989 200, // STRNTH: Full strength of building. 990 2, // SIGHTRANGE: Range of sighting. 991 300, // COST: Cost to purchase. 992 1, // SCENARIO: Starting availability scenario. 993 0,50, // RISK/RWRD: Risk/reward rating values. 994 HOUSEF_MULTI1| 995 HOUSEF_MULTI2| 996 HOUSEF_MULTI3| 997 HOUSEF_MULTI4| 998 HOUSEF_MULTI5| 999 HOUSEF_MULTI6| 1000 HOUSEF_JP| 1001 HOUSEF_BAD| 1002 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 1003 WEAPON_NONE,WEAPON_NONE, 1004 ARMOR_WOOD, // ARMOR: Armor type 1005 0, // CANENTER: Units that can enter building. 1006 0, // CAPACITY: Spice storage capacity. 1007 100, // POWER: Power points required. 1008 0, // DRAIN: Power points required. 1009 BSIZE_22, // SIZE: Building size. 1010 NULL, // Preferred exit cell list. 1011 (short const *)List1011, // OCCUPYLIST: List of active foundation squares. 1012 (short const *)List0100 // OVERLAPLIST:List of overlap cell offset. 1013 ); 1014 1015 static BuildingTypeClass const ClassAdvancedPower( 1016 STRUCT_ADVANCED_POWER, 1017 TXT_ADVANCED_POWER, // NAME: Short name of the structure. 1018 "NUK2", // NAME: Short name of the structure. 1019 XYP_COORD(0,0), // Exit point for produced units. 1020 5, // Build level. 1021 STRUCTF_POWER, // PREREQ: Buildings that must exist first. 1022 false, // Has ability to detect adjacent cloaked objects? 1023 true, // Animation rate is regulated for constant speed? 1024 true, // Requires a bib dirt patch? 1025 false, // Always use the given name for the building? 1026 false, // Is this a wall type structure? 1027 false, // Is it a factory type building? 1028 true, // Can this building be captured? 1029 false, // Does it catch fire? 1030 true, // Simple (one frame) damage imagery? 1031 false, // Is it invisible to radar? 1032 true, // Can the player select this? 1033 true, // Is this a legal target for attack or move? 1034 false, // Is this an insignificant building? 1035 false, // Is it immune to normal combat damage? 1036 false, // Theater specific graphic image? 1037 false, // Does it have a rotating turret? 1038 false, // Fires multiple shots in quick succession? 1039 true, // Can it be repaired? 1040 true, // Can it be manufactured by the player? 1041 true, // Does it contain a crew? 1042 false, // Does building care less if placed on concrete? 1043 RTTI_NONE, // The object type produced at this factory. 1044 DIR_N, // Starting idle frame to match construction. 1045 300, // STRNTH: Full strength of building. 1046 2, // SIGHTRANGE: Range of sighting. 1047 700, // COST: Cost to purchase. 1048 13, // SCENARIO: Starting availability scenario. 1049 0,75, // RISK/RWRD: Risk/reward rating values. 1050 HOUSEF_MULTI1| 1051 HOUSEF_MULTI2| 1052 HOUSEF_MULTI3| 1053 HOUSEF_MULTI4| 1054 HOUSEF_MULTI5| 1055 HOUSEF_MULTI6| 1056 HOUSEF_JP| 1057 HOUSEF_BAD| 1058 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 1059 WEAPON_NONE,WEAPON_NONE, 1060 ARMOR_WOOD, // ARMOR: Armor type 1061 0, // CANENTER: Units that can enter building. 1062 0, // CAPACITY: Spice storage capacity. 1063 200, // POWER: Power points required. 1064 0, // DRAIN: Power points required. 1065 BSIZE_22, // SIZE: Building size. 1066 NULL, // Preferred exit cell list. 1067 (short const *)List1011, // OCCUPYLIST: List of active foundation squares. 1068 (short const *)List0100 // OVERLAPLIST:List of overlap cell offset. 1069 ); 1070 1071 static BuildingTypeClass const ClassHospital( 1072 STRUCT_HOSPITAL, 1073 TXT_HOSPITAL, // NAME: Short name of the structure. 1074 "HOSP", // NAME: Short name of the structure. 1075 XYP_COORD(0,0), // Exit point for produced units. 1076 99, // Build level. 1077 STRUCTF_BARRACKS, // PREREQ: Buildings that must exist first. 1078 false, // Has ability to detect adjacent cloaked objects? 1079 true, // Animation rate is regulated for constant speed? 1080 true, // Requires a bib dirt patch? 1081 false, // Always use the given name for the building? 1082 false, // Is this a wall type structure? 1083 false, // Is it a factory type building? 1084 true, // Can this building be captured? 1085 false, // Does it catch fire? 1086 false, // Simple (one frame) damage imagery? 1087 false, // Is it invisible to radar? 1088 true, // Can the player select this? 1089 true, // Is this a legal target for attack or move? 1090 false, // Is this an insignificant building? 1091 false, // Is it immune to normal combat damage? 1092 false, // Theater specific graphic image? 1093 false, // Does it have a rotating turret? 1094 false, // Fires multiple shots in quick succession? 1095 true, // Can it be repaired? 1096 true, // Can it be manufactured by the player? 1097 true, // Does it contain a crew? 1098 false, // Does building care less if placed on concrete? 1099 RTTI_NONE, // The object type produced at this factory. 1100 DIR_N, // Starting idle frame to match construction. 1101 200, // STRNTH: Full strength of building. 1102 2, // SIGHTRANGE: Range of sighting. 1103 500, // COST: Cost to purchase. 1104 99, // SCENARIO: Starting availability scenario. 1105 0,20, // RISK/RWRD: Risk/reward rating values. 1106 HOUSEF_MULTI1| 1107 HOUSEF_MULTI2| 1108 HOUSEF_MULTI3| 1109 HOUSEF_MULTI4| 1110 HOUSEF_MULTI5| 1111 HOUSEF_MULTI6| 1112 HOUSEF_JP| 1113 HOUSEF_BAD| 1114 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 1115 WEAPON_NONE,WEAPON_NONE, 1116 ARMOR_WOOD, // ARMOR: Armor type 1117 0, // CANENTER: Units that can enter building. 1118 100, // CAPACITY: Spice storage capacity. 1119 0, // POWER: Power points required. 1120 20, // DRAIN: Power points required. 1121 BSIZE_22, // SIZE: Building size. 1122 NULL, // Preferred exit cell list. 1123 (short const *)List2, // OCCUPYLIST: List of active foundation squares. 1124 (short const *)NULL, // OVERLAPLIST:List of overlap cell offset. 1125 true // Is this building un-sellable? 1126 ); 1127 1128 static BuildingTypeClass const ClassBioLab( 1129 STRUCT_BIO_LAB, 1130 TXT_BIO_LAB, // NAME: Short name of the structure. 1131 "BIO", // NAME: Short name of the structure. 1132 XYP_COORD(0,0), // Exit point for produced units. 1133 99, // Build level. 1134 STRUCTF_HOSPITAL, // PREREQ: Buildings that must exist first. 1135 false, // Has ability to detect adjacent cloaked objects? 1136 true, // Animation rate is regulated for constant speed? 1137 true, // Requires a bib dirt patch? 1138 true, // Always use the given name for the building? 1139 false, // Is this a wall type structure? 1140 false, // Is it a factory type building? 1141 false, // Can this building be captured? 1142 false, // Does it catch fire? 1143 false, // Simple (one frame) damage imagery? 1144 false, // Is it invisible to radar? 1145 true, // Can the player select this? 1146 true, // Is this a legal target for attack or move? 1147 false, // Is this an insignificant building? 1148 false, // Is it immune to normal combat damage? 1149 false, // Theater specific graphic image? 1150 false, // Does it have a rotating turret? 1151 false, // Fires multiple shots in quick succession? 1152 true, // Can it be repaired? 1153 true, // Can it be manufactured by the player? 1154 true, // Does it contain a crew? 1155 false, // Does building care less if placed on concrete? 1156 RTTI_NONE, // The object type produced at this factory. 1157 DIR_N, // Starting idle frame to match construction. 1158 300, // STRNTH: Full strength of building. 1159 2, // SIGHTRANGE: Range of sighting. 1160 500, // COST: Cost to purchase. 1161 99, // SCENARIO: Starting availability scenario. 1162 0,1, // RISK/RWRD: Risk/reward rating values. 1163 HOUSEF_MULTI1| 1164 HOUSEF_MULTI2| 1165 HOUSEF_MULTI3| 1166 HOUSEF_MULTI4| 1167 HOUSEF_MULTI5| 1168 HOUSEF_MULTI6| 1169 HOUSEF_JP| 1170 HOUSEF_BAD, // OWNABLE: Ownable by house (bit field). 1171 WEAPON_NONE,WEAPON_NONE, 1172 ARMOR_WOOD, // ARMOR: Armor type 1173 0, // CANENTER: Units that can enter building. 1174 100, // CAPACITY: Spice storage capacity. 1175 0, // POWER: Power points required. 1176 40, // DRAIN: Power points required. 1177 BSIZE_22, // SIZE: Building size. 1178 NULL, // Preferred exit cell list. 1179 (short const *)List2, // OCCUPYLIST: List of active foundation squares. 1180 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 1181 ); 1182 1183 static BuildingTypeClass const ClassBarracks( 1184 STRUCT_BARRACKS, 1185 TXT_BARRACKS, // NAME: Short name of the structure. 1186 "PYLE", // NAME: Short name of the structure. 1187 XYP_COORD(30,33), // Exit point for produced units. 1188 0, // Build level. 1189 STRUCTF_POWER, // Building prerequisite. 1190 false, // Has ability to detect adjacent cloaked objects? 1191 true, // Animation rate is regulated for constant speed? 1192 true, // Requires a bib dirt patch? 1193 false, // Always use the given name for the building? 1194 false, // Is this a wall type structure? 1195 true, // Is it a factory type building? 1196 true, // Can this building be captured? 1197 false, // Does it catch fire? 1198 false, // Simple (one frame) damage imagery? 1199 false, // Is it invisible to radar? 1200 true, // Can the player select this? 1201 true, // Is this a legal target for attack or move? 1202 false, // Is this an insignificant building? 1203 false, // Is it immune to normal combat damage? 1204 false, // Theater specific graphic image? 1205 false, // Does it have a rotating turret? 1206 false, // Fires multiple shots in quick succession? 1207 true, // Can it be repaired? 1208 true, // Can it be manufactured by the player? 1209 true, // Does it contain a crew? 1210 false, // Does building care less if placed on concrete? 1211 RTTI_INFANTRYTYPE, // The object type produced at this factory. 1212 DIR_N, // Starting idle frame to match construction. 1213 400, // STRNTH: Full strength of building. 1214 3, // SIGHTRANGE: Range of sighting. 1215 300, // COST: Cost to purchase. 1216 1, // SCENARIO: Starting availability scenario. 1217 0,60, // RISK/RWRD: Risk/reward rating values. 1218 HOUSEF_MULTI1| 1219 HOUSEF_MULTI2| 1220 HOUSEF_MULTI3| 1221 HOUSEF_MULTI4| 1222 HOUSEF_MULTI5| 1223 HOUSEF_MULTI6| 1224 HOUSEF_JP| 1225 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 1226 WEAPON_NONE,WEAPON_NONE, 1227 ARMOR_WOOD, // ARMOR: Armor type 1228 0, // CANENTER: Units that can enter building. 1229 0, // CAPACITY: Spice storage capacity. 1230 0, // POWER: Power points required. 1231 20, // DRAIN: Power points required. 1232 BSIZE_22, // SIZE: Building size. 1233 (short const *)ExitPyle, // Preferred exit cell list. 1234 (short const *)List22_1100, // OCCUPYLIST: List of active foundation squares. 1235 (short const *)List22_0011 // OVERLAPLIST:List of overlap cell offset. 1236 ); 1237 1238 static BuildingTypeClass const ClassHand( 1239 STRUCT_HAND, 1240 TXT_HAND, // NAME: Short name of the structure. 1241 "HAND", // NAME: Short name of the structure. 1242 XYP_COORD(36,63), // Exit point for produced units. 1243 0, // Build level. 1244 STRUCTF_POWER, // Building prerequisite. 1245 false, // Has ability to detect adjacent cloaked objects? 1246 true, // Animation rate is regulated for constant speed? 1247 true, // Requires a bib dirt patch? 1248 false, // Always use the given name for the building? 1249 false, // Is this a wall type structure? 1250 true, // Is it a factory type building? 1251 true, // Can this building be captured? 1252 false, // Does it catch fire? 1253 true, // Simple (one frame) damage imagery? 1254 false, // Is it invisible to radar? 1255 true, // Can the player select this? 1256 true, // Is this a legal target for attack or move? 1257 false, // Is this an insignificant building? 1258 false, // Is it immune to normal combat damage? 1259 false, // Theater specific graphic image? 1260 false, // Does it have a rotating turret? 1261 false, // Fires multiple shots in quick succession? 1262 true, // Can it be repaired? 1263 true, // Can it be manufactured by the player? 1264 true, // Does it contain a crew? 1265 false, // Does building care less if placed on concrete? 1266 RTTI_INFANTRYTYPE, // The object type produced at this factory. 1267 DIR_N, // Starting idle frame to match construction. 1268 400, // STRNTH: Full strength of building. 1269 3, // SIGHTRANGE: Range of sighting. 1270 300, // COST: Cost to purchase. 1271 2, // SCENARIO: Starting availability scenario. 1272 0,61, // RISK/RWRD: Risk/reward rating values. 1273 HOUSEF_MULTI1| 1274 HOUSEF_MULTI2| 1275 HOUSEF_MULTI3| 1276 HOUSEF_MULTI4| 1277 HOUSEF_MULTI5| 1278 HOUSEF_MULTI6| 1279 HOUSEF_JP| 1280 HOUSEF_BAD, // OWNABLE: Ownable by house (bit field). 1281 WEAPON_NONE,WEAPON_NONE, 1282 ARMOR_WOOD, // ARMOR: Armor type 1283 0, // CANENTER: Units that can enter building. 1284 0, // CAPACITY: Spice storage capacity. 1285 0, // POWER: Power points required. 1286 20, // DRAIN: Power points required. 1287 BSIZE_23, // SIZE: Building size. 1288 (short const *)ExitHand, // Preferred exit cell list. 1289 (short const *)ListHand, // OCCUPYLIST: List of active foundation squares. 1290 (short const *)OListHand // OVERLAPLIST:List of overlap cell offset. 1291 ); 1292 1293 static BuildingTypeClass const ClassTanker( 1294 STRUCT_TANKER, 1295 TXT_TANKER, // NAME: Short name of the structure. 1296 "ARCO", // NAME: Short name of the structure. 1297 XYP_COORD(0,0), // Exit point for produced units. 1298 99, // Build level. 1299 STRUCTF_POWER, // PREREQ: Buildings that must exist first. 1300 false, // Has ability to detect adjacent cloaked objects? 1301 true, // Animation rate is regulated for constant speed? 1302 false, // Requires a bib dirt patch? 1303 true, // Always use the given name for the building? 1304 false, // Is this a wall type structure? 1305 false, // Is it a factory type building? 1306 false, // Can this building be captured? 1307 true, // Does it catch fire? 1308 true, // Simple (one frame) damage imagery? 1309 false, // Is it invisible to radar? 1310 true, // Can the player select this? 1311 true, // Is this a legal target for attack or move? 1312 false, // Is this an insignificant building? 1313 false, // Is it immune to normal combat damage? 1314 false, // Theater specific graphic image? 1315 false, // Does it have a rotating turret? 1316 false, // Fires multiple shots in quick succession? 1317 false, // Can it be repaired? 1318 false, // Can it be manufactured by the player? 1319 true, // Does it contain a crew? 1320 true, // Does building care less if placed on concrete? 1321 RTTI_NONE, // The object type produced at this factory. 1322 DIR_N, // Starting idle frame to match construction. 1323 100, // STRNTH: Full strength of building. 1324 2, // SIGHTRANGE: Range of sighting. 1325 0, // COST: Cost to purchase. 1326 0, // SCENARIO: Starting availability scenario. 1327 0,1, // RISK/RWRD: Risk/reward rating values. 1328 HOUSEF_MULTI1| 1329 HOUSEF_MULTI2| 1330 HOUSEF_MULTI3| 1331 HOUSEF_MULTI4| 1332 HOUSEF_MULTI5| 1333 HOUSEF_MULTI6| 1334 HOUSEF_JP| 1335 HOUSEF_NEUTRAL, // OWNABLE: Ownable by house (bit field). 1336 WEAPON_NONE,WEAPON_NONE, 1337 ARMOR_WOOD, // ARMOR: Armor type 1338 0, // CANENTER: Units that can enter building. 1339 0, // CAPACITY: Spice storage capacity. 1340 0, // POWER: Power points required. 1341 0, // DRAIN: Power points required. 1342 BSIZE_21, // SIZE: Building size. 1343 NULL, // Preferred exit cell list. 1344 (short const *)List21, // OCCUPYLIST: List of active foundation squares. 1345 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 1346 ); 1347 1348 static BuildingTypeClass const ClassRepair( 1349 STRUCT_REPAIR, 1350 TXT_FIX_IT, // NAME: Short name of the structure. 1351 "FIX", // NAME: Short name of the structure. 1352 XYP_COORD(0,0), // Exit point for produced units. 1353 5, // Build level. 1354 STRUCTF_POWER, // PREREQ: Buildings that must exist first. 1355 false, // Has ability to detect adjacent cloaked objects? 1356 true, // Animation rate is regulated for constant speed? 1357 true, // Requires a bib dirt patch? 1358 false, // Always use the given name for the building? 1359 false, // Is this a wall type structure? 1360 false, // Is it a factory type building? 1361 true, // Can this building be captured? 1362 false, // Does it catch fire? 1363 false, // Simple (one frame) damage imagery? 1364 false, // Is it invisible to radar? 1365 true, // Can the player select this? 1366 true, // Is this a legal target for attack or move? 1367 false, // Is this an insignificant building? 1368 false, // Is it immune to normal combat damage? 1369 false, // Theater specific graphic image? 1370 false, // Does it have a rotating turret? 1371 false, // Fires multiple shots in quick succession? 1372 true, // Can it be repaired? 1373 true, // Can it be manufactured by the player? 1374 true, // Does it contain a crew? 1375 false, // Does building care less if placed on concrete? 1376 RTTI_NONE, // The object type produced at this factory. 1377 DIR_N, // Starting idle frame to match construction. 1378 400, // STRNTH: Full strength of building. 1379 3, // SIGHTRANGE: Range of sighting. 1380 1200, // COST: Cost to purchase. 1381 8, // SCENARIO: Starting availability scenario. 1382 0,46, // RISK/RWRD: Risk/reward rating values. 1383 HOUSEF_MULTI1| 1384 HOUSEF_MULTI2| 1385 HOUSEF_MULTI3| 1386 HOUSEF_MULTI4| 1387 HOUSEF_MULTI5| 1388 HOUSEF_MULTI6| 1389 HOUSEF_JP| 1390 HOUSEF_GOOD| 1391 HOUSEF_BAD, // OWNABLE: Ownable by house (bit field). 1392 WEAPON_NONE,WEAPON_NONE, 1393 ARMOR_WOOD, // ARMOR: Armor type 1394 0, // CANENTER: Units that can enter building. 1395 0, // CAPACITY: Spice storage capacity. 1396 0, // POWER: Power points required. 1397 30, // DRAIN: Power points required. 1398 BSIZE_33, // SIZE: Building size. 1399 NULL, // Preferred exit cell list. 1400 (short const *)ListFix, // OCCUPYLIST: List of active foundation squares. 1401 (short const *)OListFix // OVERLAPLIST:List of overlap cell offset. 1402 ); 1403 1404 #ifdef OBSOLETE 1405 static BuildingTypeClass const ClassRoad( 1406 STRUCT_ROAD, 1407 TXT_ROAD, // NAME: Short name of the structure. 1408 "ROAD", // NAME: Short name of the structure. 1409 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 1410 XYP_COORD(0,0), // Exit point for produced units. 1411 99, // Build level. 1412 0, // Building prerequisite. 1413 false, // Has ability to detect adjacent cloaked objects? 1414 false, // Animation rate is regulated for constant speed? 1415 false, // Requires a bib dirt patch? 1416 true, // Always use the given name for the building? 1417 false, // Is this a wall type structure? 1418 false, // Is it a factory type building? 1419 false, // Can this building be captured? 1420 false, // Does it catch fire? 1421 false, // Simple (one frame) damage imagery? 1422 false, // Is it invisible to radar? 1423 false, // Can the player select this? 1424 false, // Is this a legal target for attack or move? 1425 true, // Is this an insignificant building? 1426 false, // Is it immune to normal combat damage? 1427 false, // Theater specific graphic image? 1428 false, // Does it have a rotating turret? 1429 false, // Fires multiple shots in quick succession? 1430 false, // Can it be repaired? 1431 true, // Can it be manufactured by the player? 1432 false, // Does it contain a crew? 1433 true, // Does building care less if placed on concrete? 1434 RTTI_NONE, // The object type produced at this factory. 1435 DIR_N, // Starting idle frame to match construction. 1436 1, // STRNTH: Full strength of building. 1437 0, // SIGHTRANGE: Range of sighting. 1438 50, // COST: Cost to purchase. 1439 99, // SCENARIO: Starting availability scenario. 1440 0,0, // RISK/RWRD: Risk/reward rating values. 1441 HOUSEF_MULTI1| 1442 HOUSEF_MULTI2| 1443 HOUSEF_MULTI3| 1444 HOUSEF_MULTI4| 1445 HOUSEF_MULTI5| 1446 HOUSEF_MULTI6| 1447 HOUSEF_JP| 1448 HOUSEF_GOOD| 1449 HOUSEF_BAD, // OWNABLE: Ownable by house (bit field). 1450 WEAPON_NONE,WEAPON_NONE, 1451 ARMOR_NONE, // ARMOR: Armor type 1452 0, // CANENTER: Units that can enter building. 1453 0, // CAPACITY: Spice storage capacity. 1454 0, // POWER: Power points required. 1455 0, // DRAIN: Power points required. 1456 BSIZE_11, // SIZE: Building size. 1457 NULL, // Preferred exit cell list. 1458 (short const *)List1, // OCCUPYLIST: List of active foundation squares. 1459 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 1460 ); 1461 #endif 1462 1463 static BuildingTypeClass const ClassV01( 1464 STRUCT_V01, 1465 TXT_CIV1, // NAME: Short name of the structure. 1466 "V01", // NAME: Short name of the structure. 1467 XYP_COORD(0,0), // Exit point for produced units. 1468 99, // Build level. 1469 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 1470 false, // Has ability to detect adjacent cloaked objects? 1471 true, // Animation rate is regulated for constant speed? 1472 false, // Requires a bib dirt patch? 1473 true, // Always use the given name for the building? 1474 false, // Is this a wall type structure? 1475 false, // Is it a factory type building? 1476 false, // Can this building be captured? 1477 true, // Does it catch fire? 1478 true, // Simple (one frame) damage imagery? 1479 true, // Is it invisible to radar? 1480 true, // Can the player select this? 1481 true, // Is this a legal target for attack or move? 1482 true, // Is this an insignificant building? 1483 false, // Is it immune to normal combat damage? 1484 true, // Theater specific graphic image? 1485 false, // Does it have a rotating turret? 1486 false, // Fires multiple shots in quick succession? 1487 false, // Can it be repaired? 1488 false, // Can it be manufactured by the player? 1489 true, // Does it contain a crew? 1490 false, // Does building care less if placed on concrete? 1491 RTTI_NONE, // The object type produced at this factory. 1492 DIR_N, // Starting idle frame to match construction. 1493 200, // STRNTH: Full strength of building. 1494 1, // SIGHTRANGE: Range of sighting. 1495 0, // COST: Cost to purchase. 1496 0, // SCENARIO: Starting availability scenario. 1497 0,2, // RISK/RWRD: Risk/reward rating values. 1498 HOUSEF_MULTI1| 1499 HOUSEF_MULTI2| 1500 HOUSEF_MULTI3| 1501 HOUSEF_MULTI4| 1502 HOUSEF_MULTI5| 1503 HOUSEF_MULTI6| 1504 HOUSEF_JP| 1505 HOUSEF_NEUTRAL, // OWNABLE: Ownable by house (bit field). 1506 WEAPON_NONE,WEAPON_NONE, 1507 ARMOR_WOOD, // ARMOR: Armor type 1508 0, // CANENTER: Units that can enter building. 1509 0, // CAPACITY: Spice storage capacity. 1510 0, // POWER: Power points required. 1511 0, // DRAIN: Power points required. 1512 BSIZE_22, // SIZE: Building size. 1513 NULL, // Preferred exit cell list. 1514 (short const *)List0011, // OCCUPYLIST: List of active foundation squares. 1515 (short const *)List1100 // OVERLAPLIST:List of overlap cell offset. 1516 ); 1517 1518 static BuildingTypeClass const ClassV02( 1519 STRUCT_V02, 1520 TXT_CIV2, // NAME: Short name of the structure. 1521 "V02", // NAME: Short name of the structure. 1522 XYP_COORD(0,0), // Exit point for produced units. 1523 99, // Build level. 1524 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 1525 false, // Has ability to detect adjacent cloaked objects? 1526 true, // Animation rate is regulated for constant speed? 1527 false, // Requires a bib dirt patch? 1528 true, // Always use the given name for the building? 1529 false, // Is this a wall type structure? 1530 false, // Is it a factory type building? 1531 false, // Can this building be captured? 1532 true, // Does it catch fire? 1533 true, // Simple (one frame) damage imagery? 1534 true, // Is it invisible to radar? 1535 true, // Can the player select this? 1536 true, // Is this a legal target for attack or move? 1537 true, // Is this an insignificant building? 1538 false, // Is it immune to normal combat damage? 1539 true, // Theater specific graphic image? 1540 false, // Does it have a rotating turret? 1541 false, // Fires multiple shots in quick succession? 1542 false, // Can it be repaired? 1543 false, // Can it be manufactured by the player? 1544 true, // Does it contain a crew? 1545 false, // Does building care less if placed on concrete? 1546 RTTI_NONE, // The object type produced at this factory. 1547 DIR_N, // Starting idle frame to match construction. 1548 200, // STRNTH: Full strength of building. 1549 1, // SIGHTRANGE: Range of sighting. 1550 0, // COST: Cost to purchase. 1551 0, // SCENARIO: Starting availability scenario. 1552 0,2, // RISK/RWRD: Risk/reward rating values. 1553 HOUSEF_MULTI1| 1554 HOUSEF_MULTI2| 1555 HOUSEF_MULTI3| 1556 HOUSEF_MULTI4| 1557 HOUSEF_MULTI5| 1558 HOUSEF_MULTI6| 1559 HOUSEF_JP| 1560 HOUSEF_NEUTRAL, // OWNABLE: Ownable by house (bit field). 1561 WEAPON_NONE,WEAPON_NONE, 1562 ARMOR_WOOD, // ARMOR: Armor type 1563 0, // CANENTER: Units that can enter building. 1564 0, // CAPACITY: Spice storage capacity. 1565 0, // POWER: Power points required. 1566 0, // DRAIN: Power points required. 1567 BSIZE_22, // SIZE: Building size. 1568 NULL, // Preferred exit cell list. 1569 (short const *)List0011, // OCCUPYLIST: List of active foundation squares. 1570 (short const *)List1100 // OVERLAPLIST:List of overlap cell offset. 1571 ); 1572 1573 static BuildingTypeClass const ClassV03( 1574 STRUCT_V03, 1575 TXT_CIV3, // NAME: Short name of the structure. 1576 "V03", // NAME: Short name of the structure. 1577 XYP_COORD(0,0), // Exit point for produced units. 1578 99, // Build level. 1579 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 1580 false, // Has ability to detect adjacent cloaked objects? 1581 true, // Animation rate is regulated for constant speed? 1582 false, // Requires a bib dirt patch? 1583 true, // Always use the given name for the building? 1584 false, // Is this a wall type structure? 1585 false, // Is it a factory type building? 1586 false, // Can this building be captured? 1587 true, // Does it catch fire? 1588 true, // Simple (one frame) damage imagery? 1589 true, // Is it invisible to radar? 1590 true, // Can the player select this? 1591 true, // Is this a legal target for attack or move? 1592 true, // Is this an insignificant building? 1593 false, // Is it immune to normal combat damage? 1594 true, // Theater specific graphic image? 1595 false, // Does it have a rotating turret? 1596 false, // Fires multiple shots in quick succession? 1597 false, // Can it be repaired? 1598 false, // Can it be manufactured by the player? 1599 true, // Does it contain a crew? 1600 false, // Does building care less if placed on concrete? 1601 RTTI_NONE, // The object type produced at this factory. 1602 DIR_N, // Starting idle frame to match construction. 1603 200, // STRNTH: Full strength of building. 1604 1, // SIGHTRANGE: Range of sighting. 1605 0, // COST: Cost to purchase. 1606 0, // SCENARIO: Starting availability scenario. 1607 0,2, // RISK/RWRD: Risk/reward rating values. 1608 HOUSEF_MULTI1| 1609 HOUSEF_MULTI2| 1610 HOUSEF_MULTI3| 1611 HOUSEF_MULTI4| 1612 HOUSEF_MULTI5| 1613 HOUSEF_MULTI6| 1614 HOUSEF_JP| 1615 HOUSEF_NEUTRAL, // OWNABLE: Ownable by house (bit field). 1616 WEAPON_NONE,WEAPON_NONE, 1617 ARMOR_WOOD, // ARMOR: Armor type 1618 0, // CANENTER: Units that can enter building. 1619 0, // CAPACITY: Spice storage capacity. 1620 0, // POWER: Power points required. 1621 0, // DRAIN: Power points required. 1622 BSIZE_22, // SIZE: Building size. 1623 NULL, // Preferred exit cell list. 1624 (short const *)List0111, // OCCUPYLIST: List of active foundation squares. 1625 (short const *)List1000 // OVERLAPLIST:List of overlap cell offset. 1626 ); 1627 1628 static BuildingTypeClass const ClassV04( 1629 STRUCT_V04, 1630 TXT_CIV4, // NAME: Short name of the structure. 1631 "V04", // NAME: Short name of the structure. 1632 XYP_COORD(0,0), // Exit point for produced units. 1633 99, // Build level. 1634 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 1635 false, // Has ability to detect adjacent cloaked objects? 1636 true, // Animation rate is regulated for constant speed? 1637 false, // Requires a bib dirt patch? 1638 true, // Always use the given name for the building? 1639 false, // Is this a wall type structure? 1640 false, // Is it a factory type building? 1641 false, // Can this building be captured? 1642 true, // Does it catch fire? 1643 true, // Simple (one frame) damage imagery? 1644 true, // Is it invisible to radar? 1645 true, // Can the player select this? 1646 true, // Is this a legal target for attack or move? 1647 true, // Is this an insignificant building? 1648 false, // Is it immune to normal combat damage? 1649 true, // Theater specific graphic image? 1650 false, // Does it have a rotating turret? 1651 false, // Fires multiple shots in quick succession? 1652 false, // Can it be repaired? 1653 false, // Can it be manufactured by the player? 1654 true, // Does it contain a crew? 1655 false, // Does building care less if placed on concrete? 1656 RTTI_NONE, // The object type produced at this factory. 1657 DIR_N, // Starting idle frame to match construction. 1658 200, // STRNTH: Full strength of building. 1659 1, // SIGHTRANGE: Range of sighting. 1660 0, // COST: Cost to purchase. 1661 0, // SCENARIO: Starting availability scenario. 1662 0,2, // RISK/RWRD: Risk/reward rating values. 1663 HOUSEF_MULTI1| 1664 HOUSEF_MULTI2| 1665 HOUSEF_MULTI3| 1666 HOUSEF_MULTI4| 1667 HOUSEF_MULTI5| 1668 HOUSEF_MULTI6| 1669 HOUSEF_JP| 1670 HOUSEF_NEUTRAL, // OWNABLE: Ownable by house (bit field). 1671 WEAPON_NONE,WEAPON_NONE, 1672 ARMOR_WOOD, // ARMOR: Armor type 1673 0, // CANENTER: Units that can enter building. 1674 0, // CAPACITY: Spice storage capacity. 1675 0, // POWER: Power points required. 1676 0, // DRAIN: Power points required. 1677 BSIZE_22, // SIZE: Building size. 1678 NULL, // Preferred exit cell list. 1679 (short const *)List0011, // OCCUPYLIST: List of active foundation squares. 1680 (short const *)List1100 // OVERLAPLIST:List of overlap cell offset. 1681 ); 1682 1683 static BuildingTypeClass const ClassV05( 1684 STRUCT_V05, 1685 TXT_CIV5, // NAME: Short name of the structure. 1686 "V05", // NAME: Short name of the structure. 1687 XYP_COORD(0,0), // Exit point for produced units. 1688 99, // Build level. 1689 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 1690 false, // Has ability to detect adjacent cloaked objects? 1691 true, // Animation rate is regulated for constant speed? 1692 false, // Requires a bib dirt patch? 1693 true, // Always use the given name for the building? 1694 false, // Is this a wall type structure? 1695 false, // Is it a factory type building? 1696 false, // Can this building be captured? 1697 true, // Does it catch fire? 1698 true, // Simple (one frame) damage imagery? 1699 true, // Is it invisible to radar? 1700 true, // Can the player select this? 1701 true, // Is this a legal target for attack or move? 1702 true, // Is this an insignificant building? 1703 false, // Is it immune to normal combat damage? 1704 true, // Theater specific graphic image? 1705 false, // Does it have a rotating turret? 1706 false, // Fires multiple shots in quick succession? 1707 false, // Can it be repaired? 1708 false, // Can it be manufactured by the player? 1709 true, // Does it contain a crew? 1710 false, // Does building care less if placed on concrete? 1711 RTTI_NONE, // The object type produced at this factory. 1712 DIR_N, // Starting idle frame to match construction. 1713 200, // STRNTH: Full strength of building. 1714 1, // SIGHTRANGE: Range of sighting. 1715 0, // COST: Cost to purchase. 1716 0, // SCENARIO: Starting availability scenario. 1717 0,2, // RISK/RWRD: Risk/reward rating values. 1718 HOUSEF_MULTI1| 1719 HOUSEF_MULTI2| 1720 HOUSEF_MULTI3| 1721 HOUSEF_MULTI4| 1722 HOUSEF_MULTI5| 1723 HOUSEF_MULTI6| 1724 HOUSEF_JP| 1725 HOUSEF_NEUTRAL, // OWNABLE: Ownable by house (bit field). 1726 WEAPON_NONE,WEAPON_NONE, 1727 ARMOR_WOOD, // ARMOR: Armor type 1728 0, // CANENTER: Units that can enter building. 1729 0, // CAPACITY: Spice storage capacity. 1730 0, // POWER: Power points required. 1731 0, // DRAIN: Power points required. 1732 BSIZE_21, // SIZE: Building size. 1733 NULL, // Preferred exit cell list. 1734 (short const *)List11, // OCCUPYLIST: List of active foundation squares. 1735 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 1736 ); 1737 1738 static BuildingTypeClass const ClassV06( 1739 STRUCT_V06, 1740 TXT_CIV6, // NAME: Short name of the structure. 1741 "V06", // NAME: Short name of the structure. 1742 XYP_COORD(0,0), // Exit point for produced units. 1743 99, // Build level. 1744 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 1745 false, // Has ability to detect adjacent cloaked objects? 1746 true, // Animation rate is regulated for constant speed? 1747 false, // Requires a bib dirt patch? 1748 true, // Always use the given name for the building? 1749 false, // Is this a wall type structure? 1750 false, // Is it a factory type building? 1751 false, // Can this building be captured? 1752 true, // Does it catch fire? 1753 true, // Simple (one frame) damage imagery? 1754 true, // Is it invisible to radar? 1755 true, // Can the player select this? 1756 true, // Is this a legal target for attack or move? 1757 true, // Is this an insignificant building? 1758 false, // Is it immune to normal combat damage? 1759 true, // Theater specific graphic image? 1760 false, // Does it have a rotating turret? 1761 false, // Fires multiple shots in quick succession? 1762 false, // Can it be repaired? 1763 false, // Can it be manufactured by the player? 1764 true, // Does it contain a crew? 1765 false, // Does building care less if placed on concrete? 1766 RTTI_NONE, // The object type produced at this factory. 1767 DIR_N, // Starting idle frame to match construction. 1768 200, // STRNTH: Full strength of building. 1769 1, // SIGHTRANGE: Range of sighting. 1770 0, // COST: Cost to purchase. 1771 0, // SCENARIO: Starting availability scenario. 1772 0,2, // RISK/RWRD: Risk/reward rating values. 1773 HOUSEF_MULTI1| 1774 HOUSEF_MULTI2| 1775 HOUSEF_MULTI3| 1776 HOUSEF_MULTI4| 1777 HOUSEF_MULTI5| 1778 HOUSEF_MULTI6| 1779 HOUSEF_JP| 1780 HOUSEF_NEUTRAL, // OWNABLE: Ownable by house (bit field). 1781 WEAPON_NONE,WEAPON_NONE, 1782 ARMOR_WOOD, // ARMOR: Armor type 1783 0, // CANENTER: Units that can enter building. 1784 0, // CAPACITY: Spice storage capacity. 1785 0, // POWER: Power points required. 1786 0, // DRAIN: Power points required. 1787 BSIZE_21, // SIZE: Building size. 1788 NULL, // Preferred exit cell list. 1789 (short const *)List11, // OCCUPYLIST: List of active foundation squares. 1790 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 1791 ); 1792 1793 static BuildingTypeClass const ClassV07( 1794 STRUCT_V07, 1795 TXT_CIV7, // NAME: Short name of the structure. 1796 "V07", // NAME: Short name of the structure. 1797 XYP_COORD(0,0), // Exit point for produced units. 1798 99, // Build level. 1799 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 1800 false, // Has ability to detect adjacent cloaked objects? 1801 true, // Animation rate is regulated for constant speed? 1802 false, // Requires a bib dirt patch? 1803 true, // Always use the given name for the building? 1804 false, // Is this a wall type structure? 1805 false, // Is it a factory type building? 1806 false, // Can this building be captured? 1807 true, // Does it catch fire? 1808 true, // Simple (one frame) damage imagery? 1809 true, // Is it invisible to radar? 1810 true, // Can the player select this? 1811 true, // Is this a legal target for attack or move? 1812 true, // Is this an insignificant building? 1813 false, // Is it immune to normal combat damage? 1814 true, // Theater specific graphic image? 1815 false, // Does it have a rotating turret? 1816 false, // Fires multiple shots in quick succession? 1817 false, // Can it be repaired? 1818 false, // Can it be manufactured by the player? 1819 true, // Does it contain a crew? 1820 false, // Does building care less if placed on concrete? 1821 RTTI_NONE, // The object type produced at this factory. 1822 DIR_N, // Starting idle frame to match construction. 1823 200, // STRNTH: Full strength of building. 1824 1, // SIGHTRANGE: Range of sighting. 1825 0, // COST: Cost to purchase. 1826 0, // SCENARIO: Starting availability scenario. 1827 0,2, // RISK/RWRD: Risk/reward rating values. 1828 HOUSEF_MULTI1| 1829 HOUSEF_MULTI2| 1830 HOUSEF_MULTI3| 1831 HOUSEF_MULTI4| 1832 HOUSEF_MULTI5| 1833 HOUSEF_MULTI6| 1834 HOUSEF_JP| 1835 HOUSEF_NEUTRAL, // OWNABLE: Ownable by house (bit field). 1836 WEAPON_NONE,WEAPON_NONE, 1837 ARMOR_WOOD, // ARMOR: Armor type 1838 0, // CANENTER: Units that can enter building. 1839 0, // CAPACITY: Spice storage capacity. 1840 0, // POWER: Power points required. 1841 0, // DRAIN: Power points required. 1842 BSIZE_21, // SIZE: Building size. 1843 NULL, // Preferred exit cell list. 1844 (short const *)List11, // OCCUPYLIST: List of active foundation squares. 1845 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 1846 ); 1847 1848 static BuildingTypeClass const ClassV08( 1849 STRUCT_V08, 1850 TXT_CIV8, // NAME: Short name of the structure. 1851 "V08", // NAME: Short name of the structure. 1852 XYP_COORD(0,0), // Exit point for produced units. 1853 99, // Build level. 1854 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 1855 false, // Has ability to detect adjacent cloaked objects? 1856 true, // Animation rate is regulated for constant speed? 1857 false, // Requires a bib dirt patch? 1858 true, // Always use the given name for the building? 1859 false, // Is this a wall type structure? 1860 false, // Is it a factory type building? 1861 false, // Can this building be captured? 1862 true, // Does it catch fire? 1863 true, // Simple (one frame) damage imagery? 1864 true, // Is it invisible to radar? 1865 true, // Can the player select this? 1866 true, // Is this a legal target for attack or move? 1867 true, // Is this an insignificant building? 1868 false, // Is it immune to normal combat damage? 1869 true, // Theater specific graphic image? 1870 false, // Does it have a rotating turret? 1871 false, // Fires multiple shots in quick succession? 1872 false, // Can it be repaired? 1873 false, // Can it be manufactured by the player? 1874 true, // Does it contain a crew? 1875 false, // Does building care less if placed on concrete? 1876 RTTI_NONE, // The object type produced at this factory. 1877 DIR_N, // Starting idle frame to match construction. 1878 200, // STRNTH: Full strength of building. 1879 1, // SIGHTRANGE: Range of sighting. 1880 0, // COST: Cost to purchase. 1881 0, // SCENARIO: Starting availability scenario. 1882 0,2, // RISK/RWRD: Risk/reward rating values. 1883 HOUSEF_MULTI1| 1884 HOUSEF_MULTI2| 1885 HOUSEF_MULTI3| 1886 HOUSEF_MULTI4| 1887 HOUSEF_MULTI5| 1888 HOUSEF_MULTI6| 1889 HOUSEF_JP| 1890 HOUSEF_NEUTRAL, // OWNABLE: Ownable by house (bit field). 1891 WEAPON_NONE,WEAPON_NONE, 1892 ARMOR_WOOD, // ARMOR: Armor type 1893 0, // CANENTER: Units that can enter building. 1894 0, // CAPACITY: Spice storage capacity. 1895 0, // POWER: Power points required. 1896 0, // DRAIN: Power points required. 1897 BSIZE_11, // SIZE: Building size. 1898 NULL, // Preferred exit cell list. 1899 (short const *)List1, // OCCUPYLIST: List of active foundation squares. 1900 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 1901 ); 1902 1903 static BuildingTypeClass const ClassV09( 1904 STRUCT_V09, 1905 TXT_CIV9, // NAME: Short name of the structure. 1906 "V09", // NAME: Short name of the structure. 1907 XYP_COORD(0,0), // Exit point for produced units. 1908 99, // Build level. 1909 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 1910 false, // Has ability to detect adjacent cloaked objects? 1911 true, // Animation rate is regulated for constant speed? 1912 false, // Requires a bib dirt patch? 1913 true, // Always use the given name for the building? 1914 false, // Is this a wall type structure? 1915 false, // Is it a factory type building? 1916 false, // Can this building be captured? 1917 true, // Does it catch fire? 1918 true, // Simple (one frame) damage imagery? 1919 true, // Is it invisible to radar? 1920 true, // Can the player select this? 1921 true, // Is this a legal target for attack or move? 1922 true, // Is this an insignificant building? 1923 false, // Is it immune to normal combat damage? 1924 true, // Theater specific graphic image? 1925 false, // Does it have a rotating turret? 1926 false, // Fires multiple shots in quick succession? 1927 false, // Can it be repaired? 1928 false, // Can it be manufactured by the player? 1929 true, // Does it contain a crew? 1930 false, // Does building care less if placed on concrete? 1931 RTTI_NONE, // The object type produced at this factory. 1932 DIR_N, // Starting idle frame to match construction. 1933 200, // STRNTH: Full strength of building. 1934 1, // SIGHTRANGE: Range of sighting. 1935 0, // COST: Cost to purchase. 1936 0, // SCENARIO: Starting availability scenario. 1937 0,2, // RISK/RWRD: Risk/reward rating values. 1938 HOUSEF_MULTI1| 1939 HOUSEF_MULTI2| 1940 HOUSEF_MULTI3| 1941 HOUSEF_MULTI4| 1942 HOUSEF_MULTI5| 1943 HOUSEF_MULTI6| 1944 HOUSEF_JP| 1945 HOUSEF_NEUTRAL, // OWNABLE: Ownable by house (bit field). 1946 WEAPON_NONE,WEAPON_NONE, 1947 ARMOR_WOOD, // ARMOR: Armor type 1948 0, // CANENTER: Units that can enter building. 1949 0, // CAPACITY: Spice storage capacity. 1950 0, // POWER: Power points required. 1951 0, // DRAIN: Power points required. 1952 BSIZE_11, // SIZE: Building size. 1953 NULL, // Preferred exit cell list. 1954 (short const *)List1, // OCCUPYLIST: List of active foundation squares. 1955 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 1956 ); 1957 1958 static BuildingTypeClass const ClassV10( 1959 STRUCT_V10, 1960 TXT_CIV10, // NAME: Short name of the structure. 1961 "V10", // NAME: Short name of the structure. 1962 XYP_COORD(0,0), // Exit point for produced units. 1963 99, // Build level. 1964 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 1965 false, // Has ability to detect adjacent cloaked objects? 1966 true, // Animation rate is regulated for constant speed? 1967 false, // Requires a bib dirt patch? 1968 true, // Always use the given name for the building? 1969 false, // Is this a wall type structure? 1970 false, // Is it a factory type building? 1971 false, // Can this building be captured? 1972 true, // Does it catch fire? 1973 true, // Simple (one frame) damage imagery? 1974 true, // Is it invisible to radar? 1975 true, // Can the player select this? 1976 true, // Is this a legal target for attack or move? 1977 true, // Is this an insignificant building? 1978 false, // Is it immune to normal combat damage? 1979 true, // Theater specific graphic image? 1980 false, // Does it have a rotating turret? 1981 false, // Fires multiple shots in quick succession? 1982 false, // Can it be repaired? 1983 false, // Can it be manufactured by the player? 1984 true, // Does it contain a crew? 1985 false, // Does building care less if placed on concrete? 1986 RTTI_NONE, // The object type produced at this factory. 1987 DIR_N, // Starting idle frame to match construction. 1988 200, // STRNTH: Full strength of building. 1989 1, // SIGHTRANGE: Range of sighting. 1990 0, // COST: Cost to purchase. 1991 0, // SCENARIO: Starting availability scenario. 1992 0,2, // RISK/RWRD: Risk/reward rating values. 1993 HOUSEF_MULTI1| 1994 HOUSEF_MULTI2| 1995 HOUSEF_MULTI3| 1996 HOUSEF_MULTI4| 1997 HOUSEF_MULTI5| 1998 HOUSEF_MULTI6| 1999 HOUSEF_JP| 2000 HOUSEF_NEUTRAL, // OWNABLE: Ownable by house (bit field). 2001 WEAPON_NONE,WEAPON_NONE, 2002 ARMOR_WOOD, // ARMOR: Armor type 2003 0, // CANENTER: Units that can enter building. 2004 0, // CAPACITY: Spice storage capacity. 2005 0, // POWER: Power points required. 2006 0, // DRAIN: Power points required. 2007 BSIZE_11, // SIZE: Building size. 2008 NULL, // Preferred exit cell list. 2009 (short const *)List1, // OCCUPYLIST: List of active foundation squares. 2010 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 2011 ); 2012 2013 static BuildingTypeClass const ClassV11( 2014 STRUCT_V11, 2015 TXT_CIV11, // NAME: Short name of the structure. 2016 "V11", // NAME: Short name of the structure. 2017 XYP_COORD(0,0), // Exit point for produced units. 2018 99, // Build level. 2019 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 2020 false, // Has ability to detect adjacent cloaked objects? 2021 true, // Animation rate is regulated for constant speed? 2022 false, // Requires a bib dirt patch? 2023 true, // Always use the given name for the building? 2024 false, // Is this a wall type structure? 2025 false, // Is it a factory type building? 2026 false, // Can this building be captured? 2027 true, // Does it catch fire? 2028 true, // Simple (one frame) damage imagery? 2029 true, // Is it invisible to radar? 2030 true, // Can the player select this? 2031 true, // Is this a legal target for attack or move? 2032 true, // Is this an insignificant building? 2033 false, // Is it immune to normal combat damage? 2034 true, // Theater specific graphic image? 2035 false, // Does it have a rotating turret? 2036 false, // Fires multiple shots in quick succession? 2037 false, // Can it be repaired? 2038 false, // Can it be manufactured by the player? 2039 true, // Does it contain a crew? 2040 false, // Does building care less if placed on concrete? 2041 RTTI_NONE, // The object type produced at this factory. 2042 DIR_N, // Starting idle frame to match construction. 2043 200, // STRNTH: Full strength of building. 2044 1, // SIGHTRANGE: Range of sighting. 2045 0, // COST: Cost to purchase. 2046 0, // SCENARIO: Starting availability scenario. 2047 0,2, // RISK/RWRD: Risk/reward rating values. 2048 HOUSEF_MULTI1| 2049 HOUSEF_MULTI2| 2050 HOUSEF_MULTI3| 2051 HOUSEF_MULTI4| 2052 HOUSEF_MULTI5| 2053 HOUSEF_MULTI6| 2054 HOUSEF_JP| 2055 HOUSEF_NEUTRAL, // OWNABLE: Ownable by house (bit field). 2056 WEAPON_NONE,WEAPON_NONE, 2057 ARMOR_WOOD, // ARMOR: Armor type 2058 0, // CANENTER: Units that can enter building. 2059 0, // CAPACITY: Spice storage capacity. 2060 0, // POWER: Power points required. 2061 0, // DRAIN: Power points required. 2062 BSIZE_11, // SIZE: Building size. 2063 NULL, // Preferred exit cell list. 2064 (short const *)List1, // OCCUPYLIST: List of active foundation squares. 2065 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 2066 ); 2067 2068 static BuildingTypeClass const ClassV12( 2069 STRUCT_V12, 2070 TXT_CIV12, // NAME: Short name of the structure. 2071 "V12", // NAME: Short name of the structure. 2072 XYP_COORD(0,0), // Exit point for produced units. 2073 99, // Build level. 2074 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 2075 false, // Has ability to detect adjacent cloaked objects? 2076 true, // Animation rate is regulated for constant speed? 2077 false, // Requires a bib dirt patch? 2078 true, // Always use the given name for the building? 2079 false, // Is this a wall type structure? 2080 false, // Is it a factory type building? 2081 false, // Can this building be captured? 2082 true, // Does it catch fire? 2083 true, // Simple (one frame) damage imagery? 2084 true, // Is it invisible to radar? 2085 true, // Can the player select this? 2086 true, // Is this a legal target for attack or move? 2087 true, // Is this an insignificant building? 2088 false, // Is it immune to normal combat damage? 2089 true, // Theater specific graphic image? 2090 false, // Does it have a rotating turret? 2091 false, // Fires multiple shots in quick succession? 2092 false, // Can it be repaired? 2093 false, // Can it be manufactured by the player? 2094 true, // Does it contain a crew? 2095 false, // Does building care less if placed on concrete? 2096 RTTI_NONE, // The object type produced at this factory. 2097 DIR_N, // Starting idle frame to match construction. 2098 200, // STRNTH: Full strength of building. 2099 1, // SIGHTRANGE: Range of sighting. 2100 0, // COST: Cost to purchase. 2101 0, // SCENARIO: Starting availability scenario. 2102 0,2, // RISK/RWRD: Risk/reward rating values. 2103 HOUSEF_MULTI1| 2104 HOUSEF_MULTI2| 2105 HOUSEF_MULTI3| 2106 HOUSEF_MULTI4| 2107 HOUSEF_MULTI5| 2108 HOUSEF_MULTI6| 2109 HOUSEF_JP| 2110 HOUSEF_NEUTRAL, // OWNABLE: Ownable by house (bit field). 2111 WEAPON_NONE,WEAPON_NONE, 2112 ARMOR_WOOD, // ARMOR: Armor type 2113 0, // CANENTER: Units that can enter building. 2114 0, // CAPACITY: Spice storage capacity. 2115 0, // POWER: Power points required. 2116 0, // DRAIN: Power points required. 2117 BSIZE_11, // SIZE: Building size. 2118 NULL, // Preferred exit cell list. 2119 (short const *)List1, // OCCUPYLIST: List of active foundation squares. 2120 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 2121 ); 2122 2123 static BuildingTypeClass const ClassV13( 2124 STRUCT_V13, 2125 TXT_CIV13, // NAME: Short name of the structure. 2126 "V13", // NAME: Short name of the structure. 2127 XYP_COORD(0,0), // Exit point for produced units. 2128 99, // Build level. 2129 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 2130 false, // Has ability to detect adjacent cloaked objects? 2131 true, // Animation rate is regulated for constant speed? 2132 false, // Requires a bib dirt patch? 2133 true, // Always use the given name for the building? 2134 false, // Is this a wall type structure? 2135 false, // Is it a factory type building? 2136 false, // Can this building be captured? 2137 true, // Does it catch fire? 2138 true, // Simple (one frame) damage imagery? 2139 true, // Is it invisible to radar? 2140 true, // Can the player select this? 2141 true, // Is this a legal target for attack or move? 2142 true, // Is this an insignificant building? 2143 false, // Is it immune to normal combat damage? 2144 true, // Theater specific graphic image? 2145 false, // Does it have a rotating turret? 2146 false, // Fires multiple shots in quick succession? 2147 false, // Can it be repaired? 2148 false, // Can it be manufactured by the player? 2149 true, // Does it contain a crew? 2150 false, // Does building care less if placed on concrete? 2151 RTTI_NONE, // The object type produced at this factory. 2152 DIR_N, // Starting idle frame to match construction. 2153 200, // STRNTH: Full strength of building. 2154 1, // SIGHTRANGE: Range of sighting. 2155 0, // COST: Cost to purchase. 2156 0, // SCENARIO: Starting availability scenario. 2157 0,2, // RISK/RWRD: Risk/reward rating values. 2158 HOUSEF_MULTI1| 2159 HOUSEF_MULTI2| 2160 HOUSEF_MULTI3| 2161 HOUSEF_MULTI4| 2162 HOUSEF_MULTI5| 2163 HOUSEF_MULTI6| 2164 HOUSEF_JP| 2165 HOUSEF_NEUTRAL, // OWNABLE: Ownable by house (bit field). 2166 WEAPON_NONE,WEAPON_NONE, 2167 ARMOR_WOOD, // ARMOR: Armor type 2168 0, // CANENTER: Units that can enter building. 2169 0, // CAPACITY: Spice storage capacity. 2170 0, // POWER: Power points required. 2171 0, // DRAIN: Power points required. 2172 BSIZE_11, // SIZE: Building size. 2173 NULL, // Preferred exit cell list. 2174 (short const *)List1, // OCCUPYLIST: List of active foundation squares. 2175 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 2176 ); 2177 2178 static BuildingTypeClass const ClassV14( 2179 STRUCT_V14, 2180 TXT_CIV14, // NAME: Short name of the structure. 2181 "V14", // NAME: Short name of the structure. 2182 XYP_COORD(0,0), // Exit point for produced units. 2183 99, // Build level. 2184 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 2185 false, // Has ability to detect adjacent cloaked objects? 2186 true, // Animation rate is regulated for constant speed? 2187 false, // Requires a bib dirt patch? 2188 true, // Always use the given name for the building? 2189 false, // Is this a wall type structure? 2190 false, // Is it a factory type building? 2191 false, // Can this building be captured? 2192 true, // Does it catch fire? 2193 true, // Simple (one frame) damage imagery? 2194 true, // Is it invisible to radar? 2195 true, // Can the player select this? 2196 true, // Is this a legal target for attack or move? 2197 true, // Is this an insignificant building? 2198 false, // Is it immune to normal combat damage? 2199 true, // Theater specific graphic image? 2200 false, // Does it have a rotating turret? 2201 false, // Fires multiple shots in quick succession? 2202 false, // Can it be repaired? 2203 false, // Can it be manufactured by the player? 2204 true, // Does it contain a crew? 2205 false, // Does building care less if placed on concrete? 2206 RTTI_NONE, // The object type produced at this factory. 2207 DIR_N, // Starting idle frame to match construction. 2208 200, // STRNTH: Full strength of building. 2209 1, // SIGHTRANGE: Range of sighting. 2210 0, // COST: Cost to purchase. 2211 0, // SCENARIO: Starting availability scenario. 2212 0,2, // RISK/RWRD: Risk/reward rating values. 2213 HOUSEF_MULTI1| 2214 HOUSEF_MULTI2| 2215 HOUSEF_MULTI3| 2216 HOUSEF_MULTI4| 2217 HOUSEF_MULTI5| 2218 HOUSEF_MULTI6| 2219 HOUSEF_JP| 2220 HOUSEF_NEUTRAL, // OWNABLE: Ownable by house (bit field). 2221 WEAPON_NONE,WEAPON_NONE, 2222 ARMOR_WOOD, // ARMOR: Armor type 2223 0, // CANENTER: Units that can enter building. 2224 0, // CAPACITY: Spice storage capacity. 2225 0, // POWER: Power points required. 2226 0, // DRAIN: Power points required. 2227 BSIZE_11, // SIZE: Building size. 2228 NULL, // Preferred exit cell list. 2229 (short const *)List1, // OCCUPYLIST: List of active foundation squares. 2230 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 2231 ); 2232 2233 static BuildingTypeClass const ClassV15( 2234 STRUCT_V15, 2235 TXT_CIV15, // NAME: Short name of the structure. 2236 "V15", // NAME: Short name of the structure. 2237 XYP_COORD(0,0), // Exit point for produced units. 2238 99, // Build level. 2239 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 2240 false, // Has ability to detect adjacent cloaked objects? 2241 true, // Animation rate is regulated for constant speed? 2242 false, // Requires a bib dirt patch? 2243 true, // Always use the given name for the building? 2244 false, // Is this a wall type structure? 2245 false, // Is it a factory type building? 2246 false, // Can this building be captured? 2247 true, // Does it catch fire? 2248 true, // Simple (one frame) damage imagery? 2249 true, // Is it invisible to radar? 2250 true, // Can the player select this? 2251 true, // Is this a legal target for attack or move? 2252 true, // Is this an insignificant building? 2253 false, // Is it immune to normal combat damage? 2254 true, // Theater specific graphic image? 2255 false, // Does it have a rotating turret? 2256 false, // Fires multiple shots in quick succession? 2257 false, // Can it be repaired? 2258 false, // Can it be manufactured by the player? 2259 true, // Does it contain a crew? 2260 false, // Does building care less if placed on concrete? 2261 RTTI_NONE, // The object type produced at this factory. 2262 DIR_N, // Starting idle frame to match construction. 2263 200, // STRNTH: Full strength of building. 2264 1, // SIGHTRANGE: Range of sighting. 2265 0, // COST: Cost to purchase. 2266 0, // SCENARIO: Starting availability scenario. 2267 0,2, // RISK/RWRD: Risk/reward rating values. 2268 HOUSEF_MULTI1| 2269 HOUSEF_MULTI2| 2270 HOUSEF_MULTI3| 2271 HOUSEF_MULTI4| 2272 HOUSEF_MULTI5| 2273 HOUSEF_MULTI6| 2274 HOUSEF_JP| 2275 HOUSEF_NEUTRAL, // OWNABLE: Ownable by house (bit field). 2276 WEAPON_NONE,WEAPON_NONE, 2277 ARMOR_WOOD, // ARMOR: Armor type 2278 0, // CANENTER: Units that can enter building. 2279 0, // CAPACITY: Spice storage capacity. 2280 0, // POWER: Power points required. 2281 0, // DRAIN: Power points required. 2282 BSIZE_11, // SIZE: Building size. 2283 NULL, // Preferred exit cell list. 2284 (short const *)List1, // OCCUPYLIST: List of active foundation squares. 2285 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 2286 ); 2287 2288 static BuildingTypeClass const ClassV16( 2289 STRUCT_V16, 2290 TXT_CIV16, // NAME: Short name of the structure. 2291 "V16", // NAME: Short name of the structure. 2292 XYP_COORD(0,0), // Exit point for produced units. 2293 99, // Build level. 2294 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 2295 false, // Has ability to detect adjacent cloaked objects? 2296 true, // Animation rate is regulated for constant speed? 2297 false, // Requires a bib dirt patch? 2298 true, // Always use the given name for the building? 2299 false, // Is this a wall type structure? 2300 false, // Is it a factory type building? 2301 false, // Can this building be captured? 2302 true, // Does it catch fire? 2303 true, // Simple (one frame) damage imagery? 2304 true, // Is it invisible to radar? 2305 true, // Can the player select this? 2306 true, // Is this a legal target for attack or move? 2307 true, // Is this an insignificant building? 2308 false, // Is it immune to normal combat damage? 2309 true, // Theater specific graphic image? 2310 false, // Does it have a rotating turret? 2311 false, // Fires multiple shots in quick succession? 2312 false, // Can it be repaired? 2313 false, // Can it be manufactured by the player? 2314 true, // Does it contain a crew? 2315 false, // Does building care less if placed on concrete? 2316 RTTI_NONE, // The object type produced at this factory. 2317 DIR_N, // Starting idle frame to match construction. 2318 200, // STRNTH: Full strength of building. 2319 1, // SIGHTRANGE: Range of sighting. 2320 0, // COST: Cost to purchase. 2321 0, // SCENARIO: Starting availability scenario. 2322 0,2, // RISK/RWRD: Risk/reward rating values. 2323 HOUSEF_MULTI1| 2324 HOUSEF_MULTI2| 2325 HOUSEF_MULTI3| 2326 HOUSEF_MULTI4| 2327 HOUSEF_MULTI5| 2328 HOUSEF_MULTI6| 2329 HOUSEF_JP| 2330 HOUSEF_NEUTRAL, // OWNABLE: Ownable by house (bit field). 2331 WEAPON_NONE,WEAPON_NONE, 2332 ARMOR_WOOD, // ARMOR: Armor type 2333 0, // CANENTER: Units that can enter building. 2334 0, // CAPACITY: Spice storage capacity. 2335 0, // POWER: Power points required. 2336 0, // DRAIN: Power points required. 2337 BSIZE_11, // SIZE: Building size. 2338 NULL, // Preferred exit cell list. 2339 (short const *)List1, // OCCUPYLIST: List of active foundation squares. 2340 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 2341 ); 2342 2343 static BuildingTypeClass const ClassV17( 2344 STRUCT_V17, 2345 TXT_CIV17, // NAME: Short name of the structure. 2346 "V17", // NAME: Short name of the structure. 2347 XYP_COORD(0,0), // Exit point for produced units. 2348 99, // Build level. 2349 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 2350 false, // Has ability to detect adjacent cloaked objects? 2351 true, // Animation rate is regulated for constant speed? 2352 false, // Requires a bib dirt patch? 2353 true, // Always use the given name for the building? 2354 false, // Is this a wall type structure? 2355 false, // Is it a factory type building? 2356 false, // Can this building be captured? 2357 true, // Does it catch fire? 2358 true, // Simple (one frame) damage imagery? 2359 true, // Is it invisible to radar? 2360 true, // Can the player select this? 2361 true, // Is this a legal target for attack or move? 2362 true, // Is this an insignificant building? 2363 false, // Is it immune to normal combat damage? 2364 true, // Theater specific graphic image? 2365 false, // Does it have a rotating turret? 2366 false, // Fires multiple shots in quick succession? 2367 false, // Can it be repaired? 2368 false, // Can it be manufactured by the player? 2369 true, // Does it contain a crew? 2370 false, // Does building care less if placed on concrete? 2371 RTTI_NONE, // The object type produced at this factory. 2372 DIR_N, // Starting idle frame to match construction. 2373 200, // STRNTH: Full strength of building. 2374 1, // SIGHTRANGE: Range of sighting. 2375 0, // COST: Cost to purchase. 2376 0, // SCENARIO: Starting availability scenario. 2377 0,2, // RISK/RWRD: Risk/reward rating values. 2378 HOUSEF_MULTI1| 2379 HOUSEF_MULTI2| 2380 HOUSEF_MULTI3| 2381 HOUSEF_MULTI4| 2382 HOUSEF_MULTI5| 2383 HOUSEF_MULTI6| 2384 HOUSEF_JP| 2385 HOUSEF_NEUTRAL, // OWNABLE: Ownable by house (bit field). 2386 WEAPON_NONE,WEAPON_NONE, 2387 ARMOR_WOOD, // ARMOR: Armor type 2388 0, // CANENTER: Units that can enter building. 2389 0, // CAPACITY: Spice storage capacity. 2390 0, // POWER: Power points required. 2391 0, // DRAIN: Power points required. 2392 BSIZE_11, // SIZE: Building size. 2393 NULL, // Preferred exit cell list. 2394 (short const *)List1, // OCCUPYLIST: List of active foundation squares. 2395 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 2396 ); 2397 2398 static BuildingTypeClass const ClassV18( 2399 STRUCT_V18, 2400 TXT_CIV18, // NAME: Short name of the structure. 2401 "V18", // NAME: Short name of the structure. 2402 XYP_COORD(0,0), // Exit point for produced units. 2403 99, // Build level. 2404 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 2405 false, // Has ability to detect adjacent cloaked objects? 2406 true, // Animation rate is regulated for constant speed? 2407 false, // Requires a bib dirt patch? 2408 true, // Always use the given name for the building? 2409 false, // Is this a wall type structure? 2410 false, // Is it a factory type building? 2411 false, // Can this building be captured? 2412 true, // Does it catch fire? 2413 true, // Simple (one frame) damage imagery? 2414 true, // Is it invisible to radar? 2415 true, // Can the player select this? 2416 true, // Is this a legal target for attack or move? 2417 true, // Is this an insignificant building? 2418 false, // Is it immune to normal combat damage? 2419 true, // Theater specific graphic image? 2420 false, // Does it have a rotating turret? 2421 false, // Fires multiple shots in quick succession? 2422 false, // Can it be repaired? 2423 false, // Can it be manufactured by the player? 2424 true, // Does it contain a crew? 2425 false, // Does building care less if placed on concrete? 2426 RTTI_NONE, // The object type produced at this factory. 2427 DIR_N, // Starting idle frame to match construction. 2428 200, // STRNTH: Full strength of building. 2429 1, // SIGHTRANGE: Range of sighting. 2430 0, // COST: Cost to purchase. 2431 0, // SCENARIO: Starting availability scenario. 2432 0,2, // RISK/RWRD: Risk/reward rating values. 2433 HOUSEF_MULTI1| 2434 HOUSEF_MULTI2| 2435 HOUSEF_MULTI3| 2436 HOUSEF_MULTI4| 2437 HOUSEF_MULTI5| 2438 HOUSEF_MULTI6| 2439 HOUSEF_JP| 2440 HOUSEF_NEUTRAL, // OWNABLE: Ownable by house (bit field). 2441 WEAPON_NONE,WEAPON_NONE, 2442 ARMOR_WOOD, // ARMOR: Armor type 2443 0, // CANENTER: Units that can enter building. 2444 0, // CAPACITY: Spice storage capacity. 2445 0, // POWER: Power points required. 2446 0, // DRAIN: Power points required. 2447 BSIZE_11, // SIZE: Building size. 2448 NULL, // Preferred exit cell list. 2449 (short const *)List1, // OCCUPYLIST: List of active foundation squares. 2450 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 2451 ); 2452 2453 static BuildingTypeClass const ClassV19( 2454 STRUCT_PUMP, 2455 TXT_PUMP, // NAME: Short name of the structure. 2456 "V19", // NAME: Short name of the structure. 2457 XYP_COORD(0,0), // Exit point for produced units. 2458 99, // Build level. 2459 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 2460 false, // Has ability to detect adjacent cloaked objects? 2461 true, // Animation rate is regulated for constant speed? 2462 false, // Requires a bib dirt patch? 2463 true, // Always use the given name for the building? 2464 false, // Is this a wall type structure? 2465 false, // Is it a factory type building? 2466 false, // Can this building be captured? 2467 true, // Does it catch fire? 2468 false, // Simple (one frame) damage imagery? 2469 false, // Is it invisible to radar? 2470 true, // Can the player select this? 2471 true, // Is this a legal target for attack or move? 2472 false, // Is this an insignificant building? 2473 false, // Is it immune to normal combat damage? 2474 false, // Theater specific graphic image? 2475 false, // Does it have a rotating turret? 2476 false, // Fires multiple shots in quick succession? 2477 false, // Can it be repaired? 2478 false, // Can it be manufactured by the player? 2479 true, // Does it contain a crew? 2480 false, // Does building care less if placed on concrete? 2481 RTTI_NONE, // The object type produced at this factory. 2482 DIR_N, // Starting idle frame to match construction. 2483 200, // STRNTH: Full strength of building. 2484 2, // SIGHTRANGE: Range of sighting. 2485 0, // COST: Cost to purchase. 2486 0, // SCENARIO: Starting availability scenario. 2487 0,2, // RISK/RWRD: Risk/reward rating values. 2488 HOUSEF_MULTI1| 2489 HOUSEF_MULTI2| 2490 HOUSEF_MULTI3| 2491 HOUSEF_MULTI4| 2492 HOUSEF_MULTI5| 2493 HOUSEF_MULTI6| 2494 HOUSEF_JP| 2495 HOUSEF_NEUTRAL| 2496 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 2497 WEAPON_NONE,WEAPON_NONE, 2498 ARMOR_WOOD, // ARMOR: Armor type 2499 0, // CANENTER: Units that can enter building. 2500 0, // CAPACITY: Spice storage capacity. 2501 0, // POWER: Power points required. 2502 0, // DRAIN: Power points required. 2503 BSIZE_11, // SIZE: Building size. 2504 NULL, // Preferred exit cell list. 2505 (short const *)List1, // OCCUPYLIST: List of active foundation squares. 2506 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 2507 ); 2508 2509 static BuildingTypeClass const ClassV20( 2510 STRUCT_V20, 2511 TXT_CIV20, // NAME: Short name of the structure. 2512 "V20", // NAME: Short name of the structure. 2513 XYP_COORD(0,0), // Exit point for produced units. 2514 99, // Build level. 2515 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 2516 false, // Has ability to detect adjacent cloaked objects? 2517 true, // Animation rate is regulated for constant speed? 2518 false, // Requires a bib dirt patch? 2519 true, // Always use the given name for the building? 2520 false, // Is this a wall type structure? 2521 false, // Is it a factory type building? 2522 false, // Can this building be captured? 2523 true, // Does it catch fire? 2524 false, // Simple (one frame) damage imagery? 2525 false, // Is it invisible to radar? 2526 true, // Can the player select this? 2527 true, // Is this a legal target for attack or move? 2528 false, // Is this an insignificant building? 2529 false, // Is it immune to normal combat damage? 2530 true, // Theater specific graphic image? 2531 false, // Does it have a rotating turret? 2532 false, // Fires multiple shots in quick succession? 2533 false, // Can it be repaired? 2534 false, // Can it be manufactured by the player? 2535 true, // Does it contain a crew? 2536 false, // Does building care less if placed on concrete? 2537 RTTI_NONE, // The object type produced at this factory. 2538 DIR_N, // Starting idle frame to match construction. 2539 200, // STRNTH: Full strength of building. 2540 2, // SIGHTRANGE: Range of sighting. 2541 0, // COST: Cost to purchase. 2542 0, // SCENARIO: Starting availability scenario. 2543 0,2, // RISK/RWRD: Risk/reward rating values. 2544 HOUSEF_MULTI1| 2545 HOUSEF_MULTI2| 2546 HOUSEF_MULTI3| 2547 HOUSEF_MULTI4| 2548 HOUSEF_MULTI5| 2549 HOUSEF_MULTI6| 2550 HOUSEF_JP| 2551 HOUSEF_NEUTRAL| 2552 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 2553 WEAPON_NONE,WEAPON_NONE, 2554 ARMOR_WOOD, // ARMOR: Armor type 2555 0, // CANENTER: Units that can enter building. 2556 0, // CAPACITY: Spice storage capacity. 2557 0, // POWER: Power points required. 2558 0, // DRAIN: Power points required. 2559 BSIZE_22, // SIZE: Building size. 2560 NULL, // Preferred exit cell list. 2561 (short const *)List0011, // OCCUPYLIST: List of active foundation squares. 2562 (short const *)List1100 // OVERLAPLIST:List of overlap cell offset. 2563 ); 2564 2565 static BuildingTypeClass const ClassV21( 2566 STRUCT_V21, 2567 TXT_CIV21, // NAME: Short name of the structure. 2568 "V21", // NAME: Short name of the structure. 2569 XYP_COORD(0,0), // Exit point for produced units. 2570 99, // Build level. 2571 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 2572 false, // Has ability to detect adjacent cloaked objects? 2573 true, // Animation rate is regulated for constant speed? 2574 false, // Requires a bib dirt patch? 2575 true, // Always use the given name for the building? 2576 false, // Is this a wall type structure? 2577 false, // Is it a factory type building? 2578 false, // Can this building be captured? 2579 true, // Does it catch fire? 2580 false, // Simple (one frame) damage imagery? 2581 false, // Is it invisible to radar? 2582 true, // Can the player select this? 2583 true, // Is this a legal target for attack or move? 2584 false, // Is this an insignificant building? 2585 false, // Is it immune to normal combat damage? 2586 true, // Theater specific graphic image? 2587 false, // Does it have a rotating turret? 2588 false, // Fires multiple shots in quick succession? 2589 false, // Can it be repaired? 2590 false, // Can it be manufactured by the player? 2591 true, // Does it contain a crew? 2592 false, // Does building care less if placed on concrete? 2593 RTTI_NONE, // The object type produced at this factory. 2594 DIR_N, // Starting idle frame to match construction. 2595 200, // STRNTH: Full strength of building. 2596 2, // SIGHTRANGE: Range of sighting. 2597 0, // COST: Cost to purchase. 2598 0, // SCENARIO: Starting availability scenario. 2599 0,2, // RISK/RWRD: Risk/reward rating values. 2600 HOUSEF_MULTI1| 2601 HOUSEF_MULTI2| 2602 HOUSEF_MULTI3| 2603 HOUSEF_MULTI4| 2604 HOUSEF_MULTI5| 2605 HOUSEF_MULTI6| 2606 HOUSEF_JP| 2607 HOUSEF_NEUTRAL| 2608 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 2609 WEAPON_NONE,WEAPON_NONE, 2610 ARMOR_WOOD, // ARMOR: Armor type 2611 0, // CANENTER: Units that can enter building. 2612 0, // CAPACITY: Spice storage capacity. 2613 0, // POWER: Power points required. 2614 0, // DRAIN: Power points required. 2615 BSIZE_22, // SIZE: Building size. 2616 NULL, // Preferred exit cell list. 2617 (short const *)List1101, // OCCUPYLIST: List of active foundation squares. 2618 (short const *)List0010 // OVERLAPLIST:List of overlap cell offset. 2619 ); 2620 2621 static BuildingTypeClass const ClassV22( 2622 STRUCT_V22, 2623 TXT_CIV22, // NAME: Short name of the structure. 2624 "V22", // NAME: Short name of the structure. 2625 XYP_COORD(0,0), // Exit point for produced units. 2626 99, // Build level. 2627 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 2628 false, // Has ability to detect adjacent cloaked objects? 2629 true, // Animation rate is regulated for constant speed? 2630 false, // Requires a bib dirt patch? 2631 true, // Always use the given name for the building? 2632 false, // Is this a wall type structure? 2633 false, // Is it a factory type building? 2634 false, // Can this building be captured? 2635 true, // Does it catch fire? 2636 false, // Simple (one frame) damage imagery? 2637 false, // Is it invisible to radar? 2638 true, // Can the player select this? 2639 true, // Is this a legal target for attack or move? 2640 false, // Is this an insignificant building? 2641 false, // Is it immune to normal combat damage? 2642 true, // Theater specific graphic image? 2643 false, // Does it have a rotating turret? 2644 false, // Fires multiple shots in quick succession? 2645 false, // Can it be repaired? 2646 false, // Can it be manufactured by the player? 2647 true, // Does it contain a crew? 2648 false, // Does building care less if placed on concrete? 2649 RTTI_NONE, // The object type produced at this factory. 2650 DIR_N, // Starting idle frame to match construction. 2651 200, // STRNTH: Full strength of building. 2652 2, // SIGHTRANGE: Range of sighting. 2653 0, // COST: Cost to purchase. 2654 0, // SCENARIO: Starting availability scenario. 2655 0,2, // RISK/RWRD: Risk/reward rating values. 2656 HOUSEF_MULTI1| 2657 HOUSEF_MULTI2| 2658 HOUSEF_MULTI3| 2659 HOUSEF_MULTI4| 2660 HOUSEF_MULTI5| 2661 HOUSEF_MULTI6| 2662 HOUSEF_JP| 2663 HOUSEF_NEUTRAL| 2664 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 2665 WEAPON_NONE,WEAPON_NONE, 2666 ARMOR_WOOD, // ARMOR: Armor type 2667 0, // CANENTER: Units that can enter building. 2668 0, // CAPACITY: Spice storage capacity. 2669 0, // POWER: Power points required. 2670 0, // DRAIN: Power points required. 2671 BSIZE_21, // SIZE: Building size. 2672 NULL, // Preferred exit cell list. 2673 (short const *)List11, // OCCUPYLIST: List of active foundation squares. 2674 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 2675 ); 2676 2677 static BuildingTypeClass const ClassV23( 2678 STRUCT_V23, 2679 TXT_CIV23, // NAME: Short name of the structure. 2680 "V23", // NAME: Short name of the structure. 2681 XYP_COORD(0,0), // Exit point for produced units. 2682 99, // Build level. 2683 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 2684 false, // Has ability to detect adjacent cloaked objects? 2685 true, // Animation rate is regulated for constant speed? 2686 false, // Requires a bib dirt patch? 2687 true, // Always use the given name for the building? 2688 false, // Is this a wall type structure? 2689 false, // Is it a factory type building? 2690 false, // Can this building be captured? 2691 true, // Does it catch fire? 2692 false, // Simple (one frame) damage imagery? 2693 false, // Is it invisible to radar? 2694 true, // Can the player select this? 2695 true, // Is this a legal target for attack or move? 2696 false, // Is this an insignificant building? 2697 false, // Is it immune to normal combat damage? 2698 true, // Theater specific graphic image? 2699 false, // Does it have a rotating turret? 2700 false, // Fires multiple shots in quick succession? 2701 false, // Can it be repaired? 2702 false, // Can it be manufactured by the player? 2703 true, // Does it contain a crew? 2704 false, // Does building care less if placed on concrete? 2705 RTTI_NONE, // The object type produced at this factory. 2706 DIR_N, // Starting idle frame to match construction. 2707 200, // STRNTH: Full strength of building. 2708 2, // SIGHTRANGE: Range of sighting. 2709 0, // COST: Cost to purchase. 2710 0, // SCENARIO: Starting availability scenario. 2711 0,2, // RISK/RWRD: Risk/reward rating values. 2712 HOUSEF_MULTI1| 2713 HOUSEF_MULTI2| 2714 HOUSEF_MULTI3| 2715 HOUSEF_MULTI4| 2716 HOUSEF_MULTI5| 2717 HOUSEF_MULTI6| 2718 HOUSEF_JP| 2719 HOUSEF_NEUTRAL| 2720 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 2721 WEAPON_NONE,WEAPON_NONE, 2722 ARMOR_WOOD, // ARMOR: Armor type 2723 0, // CANENTER: Units that can enter building. 2724 0, // CAPACITY: Spice storage capacity. 2725 0, // POWER: Power points required. 2726 0, // DRAIN: Power points required. 2727 BSIZE_11, // SIZE: Building size. 2728 NULL, // Preferred exit cell list. 2729 (short const *)List1, // OCCUPYLIST: List of active foundation squares. 2730 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 2731 ); 2732 2733 static BuildingTypeClass const ClassV24( 2734 STRUCT_V24, 2735 TXT_CIV24, // NAME: Short name of the structure. 2736 "V24", // NAME: Short name of the structure. 2737 XYP_COORD(0,0), // Exit point for produced units. 2738 99, // Build level. 2739 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 2740 false, // Has ability to detect adjacent cloaked objects? 2741 true, // Animation rate is regulated for constant speed? 2742 false, // Requires a bib dirt patch? 2743 true, // Always use the given name for the building? 2744 false, // Is this a wall type structure? 2745 false, // Is it a factory type building? 2746 false, // Can this building be captured? 2747 true, // Does it catch fire? 2748 true, // Simple (one frame) damage imagery? 2749 false, // Is it invisible to radar? 2750 true, // Can the player select this? 2751 true, // Is this a legal target for attack or move? 2752 false, // Is this an insignificant building? 2753 false, // Is it immune to normal combat damage? 2754 true, // Theater specific graphic image? 2755 false, // Does it have a rotating turret? 2756 false, // Fires multiple shots in quick succession? 2757 false, // Can it be repaired? 2758 false, // Can it be manufactured by the player? 2759 true, // Does it contain a crew? 2760 false, // Does building care less if placed on concrete? 2761 RTTI_NONE, // The object type produced at this factory. 2762 DIR_N, // Starting idle frame to match construction. 2763 200, // STRNTH: Full strength of building. 2764 2, // SIGHTRANGE: Range of sighting. 2765 0, // COST: Cost to purchase. 2766 0, // SCENARIO: Starting availability scenario. 2767 0,2, // RISK/RWRD: Risk/reward rating values. 2768 HOUSEF_MULTI1| 2769 HOUSEF_MULTI2| 2770 HOUSEF_MULTI3| 2771 HOUSEF_MULTI4| 2772 HOUSEF_MULTI5| 2773 HOUSEF_MULTI6| 2774 HOUSEF_JP| 2775 HOUSEF_NEUTRAL| 2776 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 2777 WEAPON_NONE,WEAPON_NONE, 2778 ARMOR_WOOD, // ARMOR: Armor type 2779 0, // CANENTER: Units that can enter building. 2780 0, // CAPACITY: Spice storage capacity. 2781 0, // POWER: Power points required. 2782 0, // DRAIN: Power points required. 2783 BSIZE_22, // SIZE: Building size. 2784 NULL, // Preferred exit cell list. 2785 (short const *)List0011, // OCCUPYLIST: List of active foundation squares. 2786 (short const *)List1100 // OVERLAPLIST:List of overlap cell offset. 2787 ); 2788 2789 static BuildingTypeClass const ClassV25( 2790 STRUCT_V25, 2791 TXT_CIV25, // NAME: Short name of the structure. 2792 "V25", // NAME: Short name of the structure. 2793 XYP_COORD(0,0), // Exit point for produced units. 2794 99, // Build level. 2795 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 2796 false, // Has ability to detect adjacent cloaked objects? 2797 true, // Animation rate is regulated for constant speed? 2798 false, // Requires a bib dirt patch? 2799 true, // Always use the given name for the building? 2800 false, // Is this a wall type structure? 2801 false, // Is it a factory type building? 2802 false, // Can this building be captured? 2803 true, // Does it catch fire? 2804 true, // Simple (one frame) damage imagery? 2805 false, // Is it invisible to radar? 2806 true, // Can the player select this? 2807 true, // Is this a legal target for attack or move? 2808 false, // Is this an insignificant building? 2809 false, // Is it immune to normal combat damage? 2810 true, // Theater specific graphic image? 2811 false, // Does it have a rotating turret? 2812 false, // Fires multiple shots in quick succession? 2813 false, // Can it be repaired? 2814 false, // Can it be manufactured by the player? 2815 true, // Does it contain a crew? 2816 false, // Does building care less if placed on concrete? 2817 RTTI_NONE, // The object type produced at this factory. 2818 DIR_N, // Starting idle frame to match construction. 2819 200, // STRNTH: Full strength of building. 2820 2, // SIGHTRANGE: Range of sighting. 2821 0, // COST: Cost to purchase. 2822 0, // SCENARIO: Starting availability scenario. 2823 0,2, // RISK/RWRD: Risk/reward rating values. 2824 HOUSEF_MULTI1| 2825 HOUSEF_MULTI2| 2826 HOUSEF_MULTI3| 2827 HOUSEF_MULTI4| 2828 HOUSEF_MULTI5| 2829 HOUSEF_MULTI6| 2830 HOUSEF_JP| 2831 HOUSEF_NEUTRAL| 2832 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 2833 WEAPON_NONE,WEAPON_NONE, 2834 ARMOR_WOOD, // ARMOR: Armor type 2835 0, // CANENTER: Units that can enter building. 2836 0, // CAPACITY: Spice storage capacity. 2837 0, // POWER: Power points required. 2838 0, // DRAIN: Power points required. 2839 BSIZE_22, // SIZE: Building size. 2840 NULL, // Preferred exit cell list. 2841 (short const *)List0111, // OCCUPYLIST: List of active foundation squares. 2842 (short const *)List1000 // OVERLAPLIST:List of overlap cell offset. 2843 ); 2844 2845 static BuildingTypeClass const ClassV26( 2846 STRUCT_V26, 2847 TXT_CIV26, // NAME: Short name of the structure. 2848 "V26", // NAME: Short name of the structure. 2849 XYP_COORD(0,0), // Exit point for produced units. 2850 99, // Build level. 2851 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 2852 false, // Has ability to detect adjacent cloaked objects? 2853 true, // Animation rate is regulated for constant speed? 2854 false, // Requires a bib dirt patch? 2855 true, // Always use the given name for the building? 2856 false, // Is this a wall type structure? 2857 false, // Is it a factory type building? 2858 false, // Can this building be captured? 2859 true, // Does it catch fire? 2860 true, // Simple (one frame) damage imagery? 2861 false, // Is it invisible to radar? 2862 true, // Can the player select this? 2863 true, // Is this a legal target for attack or move? 2864 false, // Is this an insignificant building? 2865 false, // Is it immune to normal combat damage? 2866 true, // Theater specific graphic image? 2867 false, // Does it have a rotating turret? 2868 false, // Fires multiple shots in quick succession? 2869 false, // Can it be repaired? 2870 false, // Can it be manufactured by the player? 2871 true, // Does it contain a crew? 2872 false, // Does building care less if placed on concrete? 2873 RTTI_NONE, // The object type produced at this factory. 2874 DIR_N, // Starting idle frame to match construction. 2875 200, // STRNTH: Full strength of building. 2876 2, // SIGHTRANGE: Range of sighting. 2877 0, // COST: Cost to purchase. 2878 0, // SCENARIO: Starting availability scenario. 2879 0,2, // RISK/RWRD: Risk/reward rating values. 2880 HOUSEF_MULTI1| 2881 HOUSEF_MULTI2| 2882 HOUSEF_MULTI3| 2883 HOUSEF_MULTI4| 2884 HOUSEF_MULTI5| 2885 HOUSEF_MULTI6| 2886 HOUSEF_JP| 2887 HOUSEF_NEUTRAL| 2888 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 2889 WEAPON_NONE,WEAPON_NONE, 2890 ARMOR_WOOD, // ARMOR: Armor type 2891 0, // CANENTER: Units that can enter building. 2892 0, // CAPACITY: Spice storage capacity. 2893 0, // POWER: Power points required. 2894 0, // DRAIN: Power points required. 2895 BSIZE_21, // SIZE: Building size. 2896 NULL, // Preferred exit cell list. 2897 (short const *)List11, // OCCUPYLIST: List of active foundation squares. 2898 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 2899 ); 2900 2901 static BuildingTypeClass const ClassV27( 2902 STRUCT_V27, 2903 TXT_CIV27, // NAME: Short name of the structure. 2904 "V27", // NAME: Short name of the structure. 2905 XYP_COORD(0,0), // Exit point for produced units. 2906 99, // Build level. 2907 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 2908 false, // Has ability to detect adjacent cloaked objects? 2909 true, // Animation rate is regulated for constant speed? 2910 false, // Requires a bib dirt patch? 2911 true, // Always use the given name for the building? 2912 false, // Is this a wall type structure? 2913 false, // Is it a factory type building? 2914 false, // Can this building be captured? 2915 true, // Does it catch fire? 2916 true, // Simple (one frame) damage imagery? 2917 false, // Is it invisible to radar? 2918 true, // Can the player select this? 2919 true, // Is this a legal target for attack or move? 2920 false, // Is this an insignificant building? 2921 false, // Is it immune to normal combat damage? 2922 true, // Theater specific graphic image? 2923 false, // Does it have a rotating turret? 2924 false, // Fires multiple shots in quick succession? 2925 false, // Can it be repaired? 2926 false, // Can it be manufactured by the player? 2927 true, // Does it contain a crew? 2928 false, // Does building care less if placed on concrete? 2929 RTTI_NONE, // The object type produced at this factory. 2930 DIR_N, // Starting idle frame to match construction. 2931 200, // STRNTH: Full strength of building. 2932 2, // SIGHTRANGE: Range of sighting. 2933 0, // COST: Cost to purchase. 2934 0, // SCENARIO: Starting availability scenario. 2935 0,2, // RISK/RWRD: Risk/reward rating values. 2936 HOUSEF_MULTI1| 2937 HOUSEF_MULTI2| 2938 HOUSEF_MULTI3| 2939 HOUSEF_MULTI4| 2940 HOUSEF_MULTI5| 2941 HOUSEF_MULTI6| 2942 HOUSEF_JP| 2943 HOUSEF_NEUTRAL| 2944 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 2945 WEAPON_NONE,WEAPON_NONE, 2946 ARMOR_WOOD, // ARMOR: Armor type 2947 0, // CANENTER: Units that can enter building. 2948 0, // CAPACITY: Spice storage capacity. 2949 0, // POWER: Power points required. 2950 0, // DRAIN: Power points required. 2951 BSIZE_11, // SIZE: Building size. 2952 NULL, // Preferred exit cell list. 2953 (short const *)List1, // OCCUPYLIST: List of active foundation squares. 2954 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 2955 ); 2956 2957 static BuildingTypeClass const ClassV28( 2958 STRUCT_V28, 2959 TXT_CIV28, // NAME: Short name of the structure. 2960 "V28", // NAME: Short name of the structure. 2961 XYP_COORD(0,0), // Exit point for produced units. 2962 99, // Build level. 2963 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 2964 false, // Has ability to detect adjacent cloaked objects? 2965 true, // Animation rate is regulated for constant speed? 2966 false, // Requires a bib dirt patch? 2967 true, // Always use the given name for the building? 2968 false, // Is this a wall type structure? 2969 false, // Is it a factory type building? 2970 false, // Can this building be captured? 2971 true, // Does it catch fire? 2972 true, // Simple (one frame) damage imagery? 2973 false, // Is it invisible to radar? 2974 true, // Can the player select this? 2975 true, // Is this a legal target for attack or move? 2976 false, // Is this an insignificant building? 2977 false, // Is it immune to normal combat damage? 2978 true, // Theater specific graphic image? 2979 false, // Does it have a rotating turret? 2980 false, // Fires multiple shots in quick succession? 2981 false, // Can it be repaired? 2982 false, // Can it be manufactured by the player? 2983 true, // Does it contain a crew? 2984 false, // Does building care less if placed on concrete? 2985 RTTI_NONE, // The object type produced at this factory. 2986 DIR_N, // Starting idle frame to match construction. 2987 200, // STRNTH: Full strength of building. 2988 2, // SIGHTRANGE: Range of sighting. 2989 0, // COST: Cost to purchase. 2990 0, // SCENARIO: Starting availability scenario. 2991 0,2, // RISK/RWRD: Risk/reward rating values. 2992 HOUSEF_MULTI1| 2993 HOUSEF_MULTI2| 2994 HOUSEF_MULTI3| 2995 HOUSEF_MULTI4| 2996 HOUSEF_MULTI5| 2997 HOUSEF_MULTI6| 2998 HOUSEF_JP| 2999 HOUSEF_NEUTRAL| 3000 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 3001 WEAPON_NONE,WEAPON_NONE, 3002 ARMOR_WOOD, // ARMOR: Armor type 3003 0, // CANENTER: Units that can enter building. 3004 0, // CAPACITY: Spice storage capacity. 3005 0, // POWER: Power points required. 3006 0, // DRAIN: Power points required. 3007 BSIZE_11, // SIZE: Building size. 3008 NULL, // Preferred exit cell list. 3009 (short const *)List1, // OCCUPYLIST: List of active foundation squares. 3010 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 3011 ); 3012 3013 static BuildingTypeClass const ClassV29( 3014 STRUCT_V29, 3015 TXT_CIV29, // NAME: Short name of the structure. 3016 "V29", // NAME: Short name of the structure. 3017 XYP_COORD(0,0), // Exit point for produced units. 3018 99, // Build level. 3019 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 3020 false, // Has ability to detect adjacent cloaked objects? 3021 true, // Animation rate is regulated for constant speed? 3022 false, // Requires a bib dirt patch? 3023 true, // Always use the given name for the building? 3024 false, // Is this a wall type structure? 3025 false, // Is it a factory type building? 3026 false, // Can this building be captured? 3027 true, // Does it catch fire? 3028 true, // Simple (one frame) damage imagery? 3029 false, // Is it invisible to radar? 3030 true, // Can the player select this? 3031 true, // Is this a legal target for attack or move? 3032 false, // Is this an insignificant building? 3033 false, // Is it immune to normal combat damage? 3034 true, // Theater specific graphic image? 3035 false, // Does it have a rotating turret? 3036 false, // Fires multiple shots in quick succession? 3037 false, // Can it be repaired? 3038 false, // Can it be manufactured by the player? 3039 true, // Does it contain a crew? 3040 false, // Does building care less if placed on concrete? 3041 RTTI_NONE, // The object type produced at this factory. 3042 DIR_N, // Starting idle frame to match construction. 3043 200, // STRNTH: Full strength of building. 3044 2, // SIGHTRANGE: Range of sighting. 3045 0, // COST: Cost to purchase. 3046 0, // SCENARIO: Starting availability scenario. 3047 0,2, // RISK/RWRD: Risk/reward rating values. 3048 HOUSEF_MULTI1| 3049 HOUSEF_MULTI2| 3050 HOUSEF_MULTI3| 3051 HOUSEF_MULTI4| 3052 HOUSEF_MULTI5| 3053 HOUSEF_MULTI6| 3054 HOUSEF_JP| 3055 HOUSEF_NEUTRAL| 3056 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 3057 WEAPON_NONE,WEAPON_NONE, 3058 ARMOR_WOOD, // ARMOR: Armor type 3059 0, // CANENTER: Units that can enter building. 3060 0, // CAPACITY: Spice storage capacity. 3061 0, // POWER: Power points required. 3062 0, // DRAIN: Power points required. 3063 BSIZE_11, // SIZE: Building size. 3064 NULL, // Preferred exit cell list. 3065 (short const *)List1, // OCCUPYLIST: List of active foundation squares. 3066 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 3067 ); 3068 3069 static BuildingTypeClass const ClassV30( 3070 STRUCT_V30, 3071 TXT_CIV30, // NAME: Short name of the structure. 3072 "V30", // NAME: Short name of the structure. 3073 XYP_COORD(0,0), // Exit point for produced units. 3074 99, // Build level. 3075 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 3076 false, // Has ability to detect adjacent cloaked objects? 3077 true, // Animation rate is regulated for constant speed? 3078 false, // Requires a bib dirt patch? 3079 true, // Always use the given name for the building? 3080 false, // Is this a wall type structure? 3081 false, // Is it a factory type building? 3082 false, // Can this building be captured? 3083 true, // Does it catch fire? 3084 true, // Simple (one frame) damage imagery? 3085 false, // Is it invisible to radar? 3086 true, // Can the player select this? 3087 true, // Is this a legal target for attack or move? 3088 false, // Is this an insignificant building? 3089 false, // Is it immune to normal combat damage? 3090 true, // Theater specific graphic image? 3091 false, // Does it have a rotating turret? 3092 false, // Fires multiple shots in quick succession? 3093 false, // Can it be repaired? 3094 false, // Can it be manufactured by the player? 3095 true, // Does it contain a crew? 3096 false, // Does building care less if placed on concrete? 3097 RTTI_NONE, // The object type produced at this factory. 3098 DIR_N, // Starting idle frame to match construction. 3099 200, // STRNTH: Full strength of building. 3100 2, // SIGHTRANGE: Range of sighting. 3101 0, // COST: Cost to purchase. 3102 0, // SCENARIO: Starting availability scenario. 3103 0,2, // RISK/RWRD: Risk/reward rating values. 3104 HOUSEF_MULTI1| 3105 HOUSEF_MULTI2| 3106 HOUSEF_MULTI3| 3107 HOUSEF_MULTI4| 3108 HOUSEF_MULTI5| 3109 HOUSEF_MULTI6| 3110 HOUSEF_JP| 3111 HOUSEF_NEUTRAL| 3112 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 3113 WEAPON_NONE,WEAPON_NONE, 3114 ARMOR_WOOD, // ARMOR: Armor type 3115 0, // CANENTER: Units that can enter building. 3116 0, // CAPACITY: Spice storage capacity. 3117 0, // POWER: Power points required. 3118 0, // DRAIN: Power points required. 3119 BSIZE_21, // SIZE: Building size. 3120 NULL, // Preferred exit cell list. 3121 (short const *)List11, // OCCUPYLIST: List of active foundation squares. 3122 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 3123 ); 3124 3125 static BuildingTypeClass const ClassV31( 3126 STRUCT_V31, 3127 TXT_CIV31, // NAME: Short name of the structure. 3128 "V31", // NAME: Short name of the structure. 3129 XYP_COORD(0,0), // Exit point for produced units. 3130 99, // Build level. 3131 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 3132 false, // Has ability to detect adjacent cloaked objects? 3133 true, // Animation rate is regulated for constant speed? 3134 false, // Requires a bib dirt patch? 3135 true, // Always use the given name for the building? 3136 false, // Is this a wall type structure? 3137 false, // Is it a factory type building? 3138 false, // Can this building be captured? 3139 true, // Does it catch fire? 3140 true, // Simple (one frame) damage imagery? 3141 false, // Is it invisible to radar? 3142 true, // Can the player select this? 3143 true, // Is this a legal target for attack or move? 3144 false, // Is this an insignificant building? 3145 false, // Is it immune to normal combat damage? 3146 true, // Theater specific graphic image? 3147 false, // Does it have a rotating turret? 3148 false, // Fires multiple shots in quick succession? 3149 false, // Can it be repaired? 3150 false, // Can it be manufactured by the player? 3151 true, // Does it contain a crew? 3152 false, // Does building care less if placed on concrete? 3153 RTTI_NONE, // The object type produced at this factory. 3154 DIR_N, // Starting idle frame to match construction. 3155 200, // STRNTH: Full strength of building. 3156 2, // SIGHTRANGE: Range of sighting. 3157 0, // COST: Cost to purchase. 3158 0, // SCENARIO: Starting availability scenario. 3159 0,2, // RISK/RWRD: Risk/reward rating values. 3160 HOUSEF_MULTI1| 3161 HOUSEF_MULTI2| 3162 HOUSEF_MULTI3| 3163 HOUSEF_MULTI4| 3164 HOUSEF_MULTI5| 3165 HOUSEF_MULTI6| 3166 HOUSEF_JP| 3167 HOUSEF_NEUTRAL| 3168 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 3169 WEAPON_NONE,WEAPON_NONE, 3170 ARMOR_WOOD, // ARMOR: Armor type 3171 0, // CANENTER: Units that can enter building. 3172 0, // CAPACITY: Spice storage capacity. 3173 0, // POWER: Power points required. 3174 0, // DRAIN: Power points required. 3175 BSIZE_21, // SIZE: Building size. 3176 NULL, // Preferred exit cell list. 3177 (short const *)List11, // OCCUPYLIST: List of active foundation squares. 3178 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 3179 ); 3180 3181 static BuildingTypeClass const ClassV32( 3182 STRUCT_V32, 3183 TXT_CIV32, // NAME: Short name of the structure. 3184 "V32", // NAME: Short name of the structure. 3185 XYP_COORD(0,0), // Exit point for produced units. 3186 99, // Build level. 3187 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 3188 false, // Has ability to detect adjacent cloaked objects? 3189 true, // Animation rate is regulated for constant speed? 3190 false, // Requires a bib dirt patch? 3191 true, // Always use the given name for the building? 3192 false, // Is this a wall type structure? 3193 false, // Is it a factory type building? 3194 false, // Can this building be captured? 3195 true, // Does it catch fire? 3196 true, // Simple (one frame) damage imagery? 3197 false, // Is it invisible to radar? 3198 true, // Can the player select this? 3199 true, // Is this a legal target for attack or move? 3200 false, // Is this an insignificant building? 3201 false, // Is it immune to normal combat damage? 3202 true, // Theater specific graphic image? 3203 false, // Does it have a rotating turret? 3204 false, // Fires multiple shots in quick succession? 3205 false, // Can it be repaired? 3206 false, // Can it be manufactured by the player? 3207 true, // Does it contain a crew? 3208 false, // Does building care less if placed on concrete? 3209 RTTI_NONE, // The object type produced at this factory. 3210 DIR_N, // Starting idle frame to match construction. 3211 200, // STRNTH: Full strength of building. 3212 2, // SIGHTRANGE: Range of sighting. 3213 0, // COST: Cost to purchase. 3214 0, // SCENARIO: Starting availability scenario. 3215 0,2, // RISK/RWRD: Risk/reward rating values. 3216 HOUSEF_MULTI1| 3217 HOUSEF_MULTI2| 3218 HOUSEF_MULTI3| 3219 HOUSEF_MULTI4| 3220 HOUSEF_MULTI5| 3221 HOUSEF_MULTI6| 3222 HOUSEF_JP| 3223 HOUSEF_NEUTRAL| 3224 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 3225 WEAPON_NONE,WEAPON_NONE, 3226 ARMOR_WOOD, // ARMOR: Armor type 3227 0, // CANENTER: Units that can enter building. 3228 0, // CAPACITY: Spice storage capacity. 3229 0, // POWER: Power points required. 3230 0, // DRAIN: Power points required. 3231 BSIZE_21, // SIZE: Building size. 3232 NULL, // Preferred exit cell list. 3233 (short const *)List11, // OCCUPYLIST: List of active foundation squares. 3234 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 3235 ); 3236 3237 static BuildingTypeClass const ClassV33( 3238 STRUCT_V33, 3239 TXT_CIV33, // NAME: Short name of the structure. 3240 "V33", // NAME: Short name of the structure. 3241 XYP_COORD(0,0), // Exit point for produced units. 3242 99, // Build level. 3243 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 3244 false, // Has ability to detect adjacent cloaked objects? 3245 true, // Animation rate is regulated for constant speed? 3246 false, // Requires a bib dirt patch? 3247 true, // Always use the given name for the building? 3248 false, // Is this a wall type structure? 3249 false, // Is it a factory type building? 3250 false, // Can this building be captured? 3251 true, // Does it catch fire? 3252 true, // Simple (one frame) damage imagery? 3253 false, // Is it invisible to radar? 3254 true, // Can the player select this? 3255 true, // Is this a legal target for attack or move? 3256 false, // Is this an insignificant building? 3257 false, // Is it immune to normal combat damage? 3258 true, // Theater specific graphic image? 3259 false, // Does it have a rotating turret? 3260 false, // Fires multiple shots in quick succession? 3261 false, // Can it be repaired? 3262 false, // Can it be manufactured by the player? 3263 true, // Does it contain a crew? 3264 false, // Does building care less if placed on concrete? 3265 RTTI_NONE, // The object type produced at this factory. 3266 DIR_N, // Starting idle frame to match construction. 3267 200, // STRNTH: Full strength of building. 3268 2, // SIGHTRANGE: Range of sighting. 3269 0, // COST: Cost to purchase. 3270 0, // SCENARIO: Starting availability scenario. 3271 0,2, // RISK/RWRD: Risk/reward rating values. 3272 HOUSEF_MULTI1| 3273 HOUSEF_MULTI2| 3274 HOUSEF_MULTI3| 3275 HOUSEF_MULTI4| 3276 HOUSEF_MULTI5| 3277 HOUSEF_MULTI6| 3278 HOUSEF_JP| 3279 HOUSEF_NEUTRAL| 3280 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 3281 WEAPON_NONE,WEAPON_NONE, 3282 ARMOR_WOOD, // ARMOR: Armor type 3283 0, // CANENTER: Units that can enter building. 3284 0, // CAPACITY: Spice storage capacity. 3285 0, // POWER: Power points required. 3286 0, // DRAIN: Power points required. 3287 BSIZE_21, // SIZE: Building size. 3288 NULL, // Preferred exit cell list. 3289 (short const *)List11, // OCCUPYLIST: List of active foundation squares. 3290 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 3291 ); 3292 3293 static BuildingTypeClass const ClassV34( 3294 STRUCT_V34, 3295 TXT_CIV34, // NAME: Short name of the structure. 3296 "V34", // NAME: Short name of the structure. 3297 XYP_COORD(0,0), // Exit point for produced units. 3298 99, // Build level. 3299 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 3300 false, // Has ability to detect adjacent cloaked objects? 3301 true, // Animation rate is regulated for constant speed? 3302 false, // Requires a bib dirt patch? 3303 true, // Always use the given name for the building? 3304 false, // Is this a wall type structure? 3305 false, // Is it a factory type building? 3306 false, // Can this building be captured? 3307 true, // Does it catch fire? 3308 true, // Simple (one frame) damage imagery? 3309 false, // Is it invisible to radar? 3310 true, // Can the player select this? 3311 true, // Is this a legal target for attack or move? 3312 false, // Is this an insignificant building? 3313 false, // Is it immune to normal combat damage? 3314 true, // Theater specific graphic image? 3315 false, // Does it have a rotating turret? 3316 false, // Fires multiple shots in quick succession? 3317 false, // Can it be repaired? 3318 false, // Can it be manufactured by the player? 3319 true, // Does it contain a crew? 3320 false, // Does building care less if placed on concrete? 3321 RTTI_NONE, // The object type produced at this factory. 3322 DIR_N, // Starting idle frame to match construction. 3323 200, // STRNTH: Full strength of building. 3324 2, // SIGHTRANGE: Range of sighting. 3325 0, // COST: Cost to purchase. 3326 0, // SCENARIO: Starting availability scenario. 3327 0,2, // RISK/RWRD: Risk/reward rating values. 3328 HOUSEF_MULTI1| 3329 HOUSEF_MULTI2| 3330 HOUSEF_MULTI3| 3331 HOUSEF_MULTI4| 3332 HOUSEF_MULTI5| 3333 HOUSEF_MULTI6| 3334 HOUSEF_JP| 3335 HOUSEF_NEUTRAL| 3336 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 3337 WEAPON_NONE,WEAPON_NONE, 3338 ARMOR_WOOD, // ARMOR: Armor type 3339 0, // CANENTER: Units that can enter building. 3340 0, // CAPACITY: Spice storage capacity. 3341 0, // POWER: Power points required. 3342 0, // DRAIN: Power points required. 3343 BSIZE_11, // SIZE: Building size. 3344 NULL, // Preferred exit cell list. 3345 (short const *)List1, // OCCUPYLIST: List of active foundation squares. 3346 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 3347 ); 3348 3349 static BuildingTypeClass const ClassV35( 3350 STRUCT_V35, 3351 TXT_CIV35, // NAME: Short name of the structure. 3352 "V35", // NAME: Short name of the structure. 3353 XYP_COORD(0,0), // Exit point for produced units. 3354 99, // Build level. 3355 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 3356 false, // Has ability to detect adjacent cloaked objects? 3357 true, // Animation rate is regulated for constant speed? 3358 false, // Requires a bib dirt patch? 3359 true, // Always use the given name for the building? 3360 false, // Is this a wall type structure? 3361 false, // Is it a factory type building? 3362 false, // Can this building be captured? 3363 true, // Does it catch fire? 3364 true, // Simple (one frame) damage imagery? 3365 false, // Is it invisible to radar? 3366 true, // Can the player select this? 3367 true, // Is this a legal target for attack or move? 3368 false, // Is this an insignificant building? 3369 false, // Is it immune to normal combat damage? 3370 true, // Theater specific graphic image? 3371 false, // Does it have a rotating turret? 3372 false, // Fires multiple shots in quick succession? 3373 false, // Can it be repaired? 3374 false, // Can it be manufactured by the player? 3375 true, // Does it contain a crew? 3376 false, // Does building care less if placed on concrete? 3377 RTTI_NONE, // The object type produced at this factory. 3378 DIR_N, // Starting idle frame to match construction. 3379 200, // STRNTH: Full strength of building. 3380 2, // SIGHTRANGE: Range of sighting. 3381 0, // COST: Cost to purchase. 3382 0, // SCENARIO: Starting availability scenario. 3383 0,2, // RISK/RWRD: Risk/reward rating values. 3384 HOUSEF_MULTI1| 3385 HOUSEF_MULTI2| 3386 HOUSEF_MULTI3| 3387 HOUSEF_MULTI4| 3388 HOUSEF_MULTI5| 3389 HOUSEF_MULTI6| 3390 HOUSEF_JP| 3391 HOUSEF_NEUTRAL| 3392 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 3393 WEAPON_NONE,WEAPON_NONE, 3394 ARMOR_WOOD, // ARMOR: Armor type 3395 0, // CANENTER: Units that can enter building. 3396 0, // CAPACITY: Spice storage capacity. 3397 0, // POWER: Power points required. 3398 0, // DRAIN: Power points required. 3399 BSIZE_11, // SIZE: Building size. 3400 NULL, // Preferred exit cell list. 3401 (short const *)List1, // OCCUPYLIST: List of active foundation squares. 3402 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 3403 ); 3404 3405 static BuildingTypeClass const ClassV36( 3406 STRUCT_V36, 3407 TXT_CIV36, // NAME: Short name of the structure. 3408 "V36", // NAME: Short name of the structure. 3409 XYP_COORD(0,0), // Exit point for produced units. 3410 99, // Build level. 3411 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 3412 false, // Has ability to detect adjacent cloaked objects? 3413 true, // Animation rate is regulated for constant speed? 3414 false, // Requires a bib dirt patch? 3415 true, // Always use the given name for the building? 3416 false, // Is this a wall type structure? 3417 false, // Is it a factory type building? 3418 false, // Can this building be captured? 3419 true, // Does it catch fire? 3420 true, // Simple (one frame) damage imagery? 3421 false, // Is it invisible to radar? 3422 true, // Can the player select this? 3423 true, // Is this a legal target for attack or move? 3424 false, // Is this an insignificant building? 3425 false, // Is it immune to normal combat damage? 3426 true, // Theater specific graphic image? 3427 false, // Does it have a rotating turret? 3428 false, // Fires multiple shots in quick succession? 3429 false, // Can it be repaired? 3430 false, // Can it be manufactured by the player? 3431 true, // Does it contain a crew? 3432 false, // Does building care less if placed on concrete? 3433 RTTI_NONE, // The object type produced at this factory. 3434 DIR_N, // Starting idle frame to match construction. 3435 200, // STRNTH: Full strength of building. 3436 2, // SIGHTRANGE: Range of sighting. 3437 0, // COST: Cost to purchase. 3438 0, // SCENARIO: Starting availability scenario. 3439 0,2, // RISK/RWRD: Risk/reward rating values. 3440 HOUSEF_MULTI1| 3441 HOUSEF_MULTI2| 3442 HOUSEF_MULTI3| 3443 HOUSEF_MULTI4| 3444 HOUSEF_MULTI5| 3445 HOUSEF_MULTI6| 3446 HOUSEF_JP| 3447 HOUSEF_NEUTRAL| 3448 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 3449 WEAPON_NONE,WEAPON_NONE, 3450 ARMOR_WOOD, // ARMOR: Armor type 3451 0, // CANENTER: Units that can enter building. 3452 0, // CAPACITY: Spice storage capacity. 3453 0, // POWER: Power points required. 3454 0, // DRAIN: Power points required. 3455 BSIZE_11, // SIZE: Building size. 3456 NULL, // Preferred exit cell list. 3457 (short const *)List1, // OCCUPYLIST: List of active foundation squares. 3458 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 3459 ); 3460 static BuildingTypeClass const ClassV37( 3461 STRUCT_V37, 3462 TXT_CIV37, // NAME: Short name of the structure. 3463 "V37", // NAME: Short name of the structure. 3464 XYP_COORD(0,0), // Exit point for produced units. 3465 99, // Build level. 3466 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 3467 false, // Has ability to detect adjacent cloaked objects? 3468 true, // Animation rate is regulated for constant speed? 3469 false, // Requires a bib dirt patch? 3470 true, // Always use the given name for the building? 3471 false, // Is this a wall type structure? 3472 false, // Is it a factory type building? 3473 false, // Can this building be captured? 3474 true, // Does it catch fire? 3475 true, // Simple (one frame) damage imagery? 3476 false, // Is it invisible to radar? 3477 true, // Can the player select this? 3478 true, // Is this a legal target for attack or move? 3479 false, // Is this an insignificant building? 3480 false, // Is it immune to normal combat damage? 3481 true, // Theater specific graphic image? 3482 false, // Does it have a rotating turret? 3483 false, // Fires multiple shots in quick succession? 3484 false, // Can it be repaired? 3485 false, // Can it be manufactured by the player? 3486 true, // Does it contain a crew? 3487 false, // Does building care less if placed on concrete? 3488 RTTI_NONE, // The object type produced at this factory. 3489 DIR_N, // Starting idle frame to match construction. 3490 300, // STRNTH: Full strength of building. 3491 2, // SIGHTRANGE: Range of sighting. 3492 0, // COST: Cost to purchase. 3493 0, // SCENARIO: Starting availability scenario. 3494 0,2, // RISK/RWRD: Risk/reward rating values. 3495 HOUSEF_MULTI1| 3496 HOUSEF_MULTI2| 3497 HOUSEF_MULTI3| 3498 HOUSEF_MULTI4| 3499 HOUSEF_MULTI5| 3500 HOUSEF_MULTI6| 3501 HOUSEF_JP| 3502 HOUSEF_NEUTRAL| 3503 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 3504 WEAPON_NONE,WEAPON_NONE, 3505 ARMOR_WOOD, // ARMOR: Armor type 3506 0, // CANENTER: Units that can enter building. 3507 0, // CAPACITY: Spice storage capacity. 3508 0, // POWER: Power points required. 3509 0, // DRAIN: Power points required. 3510 BSIZE_42, // SIZE: Building size. 3511 NULL, // Preferred exit cell list. 3512 (short const *)ListWestwood, // OCCUPYLIST: List of active foundation squares. 3513 (short const *)OListWestwood // OVERLAPLIST:List of overlap cell offset. 3514 ); 3515 static BuildingTypeClass const ClassMission( 3516 STRUCT_MISSION, 3517 TXT_CIVMISS, // NAME: Short name of the structure. 3518 "MISS", // NAME: Short name of the structure. 3519 XYP_COORD(0,0), // Exit point for produced units. 3520 99, // Build level. 3521 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 3522 true, // Has ability to detect adjacent cloaked objects? 3523 true, // Animation rate is regulated for constant speed? 3524 true, // Requires a bib dirt patch? 3525 true, // Always use the given name for the building? 3526 false, // Is this a wall type structure? 3527 false, // Is it a factory type building? 3528 true, // Can this building be captured? 3529 true, // Does it catch fire? 3530 true, // Simple (one frame) damage imagery? 3531 false, // Is it invisible to radar? 3532 true, // Can the player select this? 3533 true, // Is this a legal target for attack or move? 3534 false, // Is this an insignificant building? 3535 false, // Is it immune to normal combat damage? 3536 false, // Theater specific graphic image? 3537 false, // Does it have a rotating turret? 3538 false, // Fires multiple shots in quick succession? 3539 true, // Can it be repaired? 3540 false, // Can it be manufactured by the player? 3541 true, // Does it contain a crew? 3542 false, // Does building care less if placed on concrete? 3543 RTTI_NONE, // The object type produced at this factory. 3544 DIR_N, // Starting idle frame to match construction. 3545 200, // STRNTH: Full strength of building. 3546 2, // SIGHTRANGE: Range of sighting. 3547 1000, // COST: Cost to purchase. 3548 0, // SCENARIO: Starting availability scenario. 3549 0,2, // RISK/RWRD: Risk/reward rating values. 3550 HOUSEF_MULTI1| 3551 HOUSEF_MULTI2| 3552 HOUSEF_MULTI3| 3553 HOUSEF_MULTI4| 3554 HOUSEF_MULTI5| 3555 HOUSEF_MULTI6| 3556 HOUSEF_JP| 3557 HOUSEF_BAD| 3558 HOUSEF_NEUTRAL| 3559 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 3560 WEAPON_NONE,WEAPON_NONE, 3561 ARMOR_WOOD, // ARMOR: Armor type 3562 0, // CANENTER: Units that can enter building. 3563 0, // CAPACITY: Spice storage capacity. 3564 0, // POWER: Power points required. 3565 0, // DRAIN: Power points required. 3566 BSIZE_32, // SIZE: Building size. 3567 NULL, // Preferred exit cell list. 3568 (short const *)List32, // OCCUPYLIST: List of active foundation squares. 3569 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 3570 ); 3571 3572 // Sandbag wall 3573 static BuildingTypeClass const Sandbag( 3574 STRUCT_SANDBAG_WALL, 3575 TXT_SANDBAG_WALL, // NAME: Short name of the structure. 3576 "SBAG", // NAME: Short name of the structure. 3577 XYP_COORD(0,0), // Exit point for produced units. 3578 2, // Build level. 3579 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 3580 false, // Has ability to detect adjacent cloaked objects? 3581 false, // Animation rate is regulated for constant speed? 3582 false, // Requires a bib dirt patch? 3583 true, // Always use the given name for the building? 3584 true, // Is this a wall type structure? 3585 false, // Is it a factory type building? 3586 false, // Can this building be captured? 3587 false, // Does it catch fire? 3588 false, // Simple (one frame) damage imagery? 3589 false, // Is it invisible to radar? 3590 false, // Can the player select this? 3591 true, // Is this a legal target for attack or move? 3592 true, // Is this an insignificant building? 3593 false, // Is it immune to normal combat damage? 3594 false, // Theater specific graphic image? 3595 false, // Does it have a rotating turret? 3596 false, // Fires multiple shots in quick succession? 3597 false, // Can it be repaired? 3598 true, // Can it be manufactured by the player? 3599 false, // Does it contain a crew? 3600 true, // Does building care less if placed on concrete? 3601 RTTI_NONE, // The object type produced at this factory. 3602 DIR_N, // Starting idle frame to match construction. 3603 1, // STRNTH: Full strength of building. 3604 0, // SIGHTRANGE: Range of sighting. 3605 50, // COST: Cost to purchase. 3606 5, // SCENARIO: Starting availability scenario. 3607 0,0, // RISK/RWRD: Risk/reward rating values. 3608 HOUSEF_MULTI1| 3609 HOUSEF_MULTI2| 3610 HOUSEF_MULTI3| 3611 HOUSEF_MULTI4| 3612 HOUSEF_MULTI5| 3613 HOUSEF_MULTI6| 3614 HOUSEF_JP| 3615 HOUSEF_GOOD| 3616 HOUSEF_BAD, // OWNABLE: Ownable by house (bit field). 3617 WEAPON_NONE,WEAPON_NONE, 3618 ARMOR_ALUMINUM, // ARMOR: Armor type 3619 0, // CANENTER: Units that can enter building. 3620 0, // CAPACITY: Spice storage capacity. 3621 0, // POWER: Power points required. 3622 0, // DRAIN: Power points required. 3623 BSIZE_11, // SIZE: Building size. 3624 NULL, // Preferred exit cell list. 3625 (short const *)List1, // OCCUPYLIST: List of active foundation squares. 3626 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 3627 ); 3628 // Cyclone fence 3629 static BuildingTypeClass const Cyclone( 3630 STRUCT_CYCLONE_WALL, 3631 TXT_CYCLONE_WALL, // NAME: Short name of the structure. 3632 "CYCL", // NAME: Short name of the structure. 3633 XYP_COORD(0,0), // Exit point for produced units. 3634 5, // Build level. 3635 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 3636 false, // Has ability to detect adjacent cloaked objects? 3637 false, // Animation rate is regulated for constant speed? 3638 false, // Requires a bib dirt patch? 3639 true, // Always use the given name for the building? 3640 true, // Is this a wall type structure? 3641 false, // Is it a factory type building? 3642 false, // Can this building be captured? 3643 false, // Does it catch fire? 3644 false, // Simple (one frame) damage imagery? 3645 false, // Is it invisible to radar? 3646 false, // Can the player select this? 3647 true, // Is this a legal target for attack or move? 3648 true, // Is this an insignificant building? 3649 false, // Is it immune to normal combat damage? 3650 false, // Theater specific graphic image? 3651 false, // Does it have a rotating turret? 3652 false, // Fires multiple shots in quick succession? 3653 false, // Can it be repaired? 3654 true, // Can it be manufactured by the player? 3655 false, // Does it contain a crew? 3656 true, // Does building care less if placed on concrete? 3657 RTTI_NONE, // The object type produced at this factory. 3658 DIR_N, // Starting idle frame to match construction. 3659 1, // STRNTH: Full strength of building. 3660 0, // SIGHTRANGE: Range of sighting. 3661 75, // COST: Cost to purchase. 3662 9, // SCENARIO: Starting availability scenario. 3663 0,0, // RISK/RWRD: Risk/reward rating values. 3664 HOUSEF_MULTI1| 3665 HOUSEF_MULTI2| 3666 HOUSEF_MULTI3| 3667 HOUSEF_MULTI4| 3668 HOUSEF_MULTI5| 3669 HOUSEF_MULTI6| 3670 HOUSEF_JP| 3671 HOUSEF_GOOD| 3672 HOUSEF_BAD, // OWNABLE: Ownable by house (bit field). 3673 WEAPON_NONE,WEAPON_NONE, 3674 ARMOR_ALUMINUM, // ARMOR: Armor type 3675 0, // CANENTER: Units that can enter building. 3676 0, // CAPACITY: Spice storage capacity. 3677 0, // POWER: Power points required. 3678 0, // DRAIN: Power points required. 3679 BSIZE_11, // SIZE: Building size. 3680 NULL, // Preferred exit cell list. 3681 (short const *)List1, // OCCUPYLIST: List of active foundation squares. 3682 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 3683 ); 3684 // Brick wall 3685 static BuildingTypeClass const Brick( 3686 STRUCT_BRICK_WALL, 3687 TXT_BRICK_WALL, // NAME: Short name of the structure. 3688 "BRIK", // NAME: Short name of the structure. 3689 XYP_COORD(0,0), // Exit point for produced units. 3690 7, // Build level. 3691 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 3692 false, // Has ability to detect adjacent cloaked objects? 3693 false, // Animation rate is regulated for constant speed? 3694 false, // Requires a bib dirt patch? 3695 true, // Always use the given name for the building? 3696 true, // Is this a wall type structure? 3697 false, // Is it a factory type building? 3698 false, // Can this building be captured? 3699 false, // Does it catch fire? 3700 false, // Simple (one frame) damage imagery? 3701 false, // Is it invisible to radar? 3702 false, // Can the player select this? 3703 true, // Is this a legal target for attack or move? 3704 true, // Is this an insignificant building? 3705 false, // Is it immune to normal combat damage? 3706 false, // Theater specific graphic image? 3707 false, // Does it have a rotating turret? 3708 false, // Fires multiple shots in quick succession? 3709 false, // Can it be repaired? 3710 true, // Can it be manufactured by the player? 3711 false, // Does it contain a crew? 3712 true, // Does building care less if placed on concrete? 3713 RTTI_NONE, // The object type produced at this factory. 3714 DIR_N, // Starting idle frame to match construction. 3715 1, // STRNTH: Full strength of building. 3716 0, // SIGHTRANGE: Range of sighting. 3717 100, // COST: Cost to purchase. 3718 13, // SCENARIO: Starting availability scenario. 3719 0,0, // RISK/RWRD: Risk/reward rating values. 3720 HOUSEF_MULTI1| 3721 HOUSEF_MULTI2| 3722 HOUSEF_MULTI3| 3723 HOUSEF_MULTI4| 3724 HOUSEF_MULTI5| 3725 HOUSEF_MULTI6| 3726 HOUSEF_JP| 3727 HOUSEF_BAD| 3728 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 3729 WEAPON_NONE,WEAPON_NONE, 3730 ARMOR_ALUMINUM, // ARMOR: Armor type 3731 0, // CANENTER: Units that can enter building. 3732 0, // CAPACITY: Spice storage capacity. 3733 0, // POWER: Power points required. 3734 0, // DRAIN: Power points required. 3735 BSIZE_11, // SIZE: Building size. 3736 NULL, // Preferred exit cell list. 3737 (short const *)List1, // OCCUPYLIST: List of active foundation squares. 3738 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 3739 ); 3740 // Barbwire wall 3741 static BuildingTypeClass const Barbwire( 3742 STRUCT_BARBWIRE_WALL, 3743 TXT_BARBWIRE_WALL, // NAME: Short name of the structure. 3744 "BARB", // NAME: Short name of the structure. 3745 XYP_COORD(0,0), // Exit point for produced units. 3746 98, // Build level. 3747 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 3748 false, // Has ability to detect adjacent cloaked objects? 3749 false, // Animation rate is regulated for constant speed? 3750 false, // Requires a bib dirt patch? 3751 true, // Always use the given name for the building? 3752 true, // Is this a wall type structure? 3753 false, // Is it a factory type building? 3754 false, // Can this building be captured? 3755 false, // Does it catch fire? 3756 false, // Simple (one frame) damage imagery? 3757 false, // Is it invisible to radar? 3758 false, // Can the player select this? 3759 true, // Is this a legal target for attack or move? 3760 true, // Is this an insignificant building? 3761 false, // Is it immune to normal combat damage? 3762 false, // Theater specific graphic image? 3763 false, // Does it have a rotating turret? 3764 false, // Fires multiple shots in quick succession? 3765 false, // Can it be repaired? 3766 true, // Can it be manufactured by the player? 3767 false, // Does it contain a crew? 3768 true, // Does building care less if placed on concrete? 3769 RTTI_NONE, // The object type produced at this factory. 3770 DIR_N, // Starting idle frame to match construction. 3771 1, // STRNTH: Full strength of building. 3772 0, // SIGHTRANGE: Range of sighting. 3773 25, // COST: Cost to purchase. 3774 98, // SCENARIO: Starting availability scenario. 3775 0,0, // RISK/RWRD: Risk/reward rating values. 3776 HOUSEF_MULTI1| 3777 HOUSEF_MULTI2| 3778 HOUSEF_MULTI3| 3779 HOUSEF_MULTI4| 3780 HOUSEF_MULTI5| 3781 HOUSEF_MULTI6| 3782 HOUSEF_BAD| 3783 HOUSEF_JP| 3784 HOUSEF_NEUTRAL| 3785 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 3786 WEAPON_NONE,WEAPON_NONE, 3787 ARMOR_ALUMINUM, // ARMOR: Armor type 3788 0, // CANENTER: Units that can enter building. 3789 0, // CAPACITY: Spice storage capacity. 3790 0, // POWER: Power points required. 3791 0, // DRAIN: Power points required. 3792 BSIZE_11, // SIZE: Building size. 3793 NULL, // Preferred exit cell list. 3794 (short const *)List1, // OCCUPYLIST: List of active foundation squares. 3795 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 3796 ); 3797 // Wood wall 3798 static BuildingTypeClass const Wood( 3799 STRUCT_WOOD_WALL, 3800 TXT_WOOD_WALL, // NAME: Short name of the structure. 3801 "WOOD", // NAME: Short name of the structure. 3802 XYP_COORD(0,0), // Exit point for produced units. 3803 99, // Build level. 3804 STRUCTF_NONE, // PREREQ: Buildings that must exist first. 3805 false, // Has ability to detect adjacent cloaked objects? 3806 false, // Animation rate is regulated for constant speed? 3807 false, // Requires a bib dirt patch? 3808 true, // Always use the given name for the building? 3809 true, // Is this a wall type structure? 3810 false, // Is it a factory type building? 3811 false, // Can this building be captured? 3812 false, // Does it catch fire? 3813 false, // Simple (one frame) damage imagery? 3814 false, // Is it invisible to radar? 3815 false, // Can the player select this? 3816 true, // Is this a legal target for attack or move? 3817 true, // Is this an insignificant building? 3818 false, // Is it immune to normal combat damage? 3819 false, // Theater specific graphic image? 3820 false, // Does it have a rotating turret? 3821 false, // Fires multiple shots in quick succession? 3822 false, // Can it be repaired? 3823 true, // Can it be manufactured by the player? 3824 false, // Does it contain a crew? 3825 true, // Does building care less if placed on concrete? 3826 RTTI_NONE, // The object type produced at this factory. 3827 DIR_N, // Starting idle frame to match construction. 3828 1, // STRNTH: Full strength of building. 3829 0, // SIGHTRANGE: Range of sighting. 3830 25, // COST: Cost to purchase. 3831 98, // SCENARIO: Starting availability scenario. 3832 0,0, // RISK/RWRD: Risk/reward rating values. 3833 HOUSEF_MULTI1| 3834 HOUSEF_MULTI2| 3835 HOUSEF_MULTI3| 3836 HOUSEF_MULTI4| 3837 HOUSEF_MULTI5| 3838 HOUSEF_MULTI6| 3839 HOUSEF_JP| 3840 HOUSEF_NEUTRAL| 3841 HOUSEF_GOOD, // OWNABLE: Ownable by house (bit field). 3842 WEAPON_NONE,WEAPON_NONE, 3843 ARMOR_ALUMINUM, // ARMOR: Armor type 3844 0, // CANENTER: Units that can enter building. 3845 0, // CAPACITY: Spice storage capacity. 3846 0, // POWER: Power points required. 3847 0, // DRAIN: Power points required. 3848 BSIZE_11, // SIZE: Building size. 3849 NULL, // Preferred exit cell list. 3850 (short const *)List1, // OCCUPYLIST: List of active foundation squares. 3851 (short const *)NULL // OVERLAPLIST:List of overlap cell offset. 3852 ); 3853 3854 3855 BuildingTypeClass const * const BuildingTypeClass::Pointers[STRUCT_COUNT] = { 3856 &ClassWeapon, // STRUCT_WEAP 3857 &ClassGTower, // STRUCT_GTOWER 3858 &ClassATower, // STRUCT_ATOWER 3859 &ClassObelisk, // STRUCT_OBLISK 3860 &ClassCommand, // STRUCT_RADAR 3861 &ClassTurret, // STRUCT_TURRET 3862 &ClassConst, // STRUCT_CONST 3863 &ClassRefinery, // STRUCT_REFINERY 3864 &ClassStorage, // STRUCT_STORAGE 3865 &ClassHelipad, // STRUCT_HELIPAD 3866 &ClassSAM, // STRUCT_SAM 3867 &ClassAirStrip, // STRUCT_AIRSTRIP 3868 &ClassPower, // STRUCT_POWER 3869 &ClassAdvancedPower, // STRUCT_POWER 3870 &ClassHospital, // STRUCT_HOSPITAL 3871 &ClassBarracks, // STRUCT_BARRACKS 3872 &ClassTanker, // STRUCT_TANKER 3873 &ClassRepair, // STRUCT_REPAIR 3874 &ClassBioLab, // STRUCT_BIO_LAB 3875 &ClassHand, // STRUCT_HAND 3876 &ClassTemple, // STRUCT_TEMPLE 3877 &ClassEye, // STRUCT_EYE 3878 &ClassMission, // STRUCT_MISSION 3879 3880 &ClassV01, // STRUCT_V1 3881 &ClassV02, // STRUCT_V2 3882 &ClassV03, // STRUCT_V3 3883 &ClassV04, // STRUCT_V4 3884 &ClassV05, // STRUCT_V5 3885 &ClassV06, // STRUCT_V6 3886 &ClassV07, // STRUCT_V7 3887 &ClassV08, // STRUCT_V8 3888 &ClassV09, // STRUCT_V9 3889 &ClassV10, // STRUCT_V10 3890 &ClassV11, // STRUCT_V11 3891 &ClassV12, // STRUCT_V12 3892 &ClassV13, // STRUCT_V13 3893 &ClassV14, // STRUCT_V14 3894 &ClassV15, // STRUCT_V15 3895 &ClassV16, // STRUCT_V16 3896 &ClassV17, // STRUCT_V17 3897 &ClassV18, // STRUCT_V18 3898 &ClassV19, // STRUCT_PUMP 3899 &ClassV20, // STRUCT_V20 3900 &ClassV21, // STRUCT_V21 3901 &ClassV22, // STRUCT_V22 3902 &ClassV23, // STRUCT_V23 3903 &ClassV24, // STRUCT_V24 3904 &ClassV25, // STRUCT_V25 3905 &ClassV26, // STRUCT_V26 3906 &ClassV27, // STRUCT_V27 3907 &ClassV28, // STRUCT_V28 3908 &ClassV29, // STRUCT_V29 3909 &ClassV30, // STRUCT_V30 3910 &ClassV31, // STRUCT_V31 3911 &ClassV32, // STRUCT_V32 3912 &ClassV33, // STRUCT_V33 3913 &ClassV34, // STRUCT_V34 3914 &ClassV35, // STRUCT_V35 3915 &ClassV36, // STRUCT_V36 3916 &ClassV37, // STRUCT_V37 3917 #ifdef OBSOLETE 3918 &ClassRoad, // STRUCT_ROAD 3919 #endif 3920 &Sandbag, // STRUCT_SANDBAG_WALL 3921 &Cyclone, // STRUCT_CYCLONE_WALL 3922 &Brick, // STRUCT_BRICK_WALL 3923 &Barbwire, // STRUCT_BARBWIRE_WALL 3924 &Wood, // STRUCT_WOOD_WALL 3925 }; 3926 3927 void const *WarFactoryOverlay; 3928 3929 3930 /*********************************************************************************************** 3931 * BuildingTypeClass::BuildingTypeClass -- This is the constructor for the building types. * 3932 * * 3933 * This is the constructor used to create the building types. * 3934 * * 3935 * INPUT: see below... * 3936 * * 3937 * OUTPUT: none * 3938 * * 3939 * WARNINGS: none * 3940 * * 3941 * HISTORY: * 3942 * 07/29/1994 JLB : Created. * 3943 *=============================================================================================*/ 3944 BuildingTypeClass::BuildingTypeClass( 3945 StructType type, 3946 int name, 3947 char const *ininame, 3948 COORDINATE exitpoint, 3949 unsigned char level, 3950 long pre, 3951 bool is_scanner, 3952 bool is_regulated, 3953 bool is_bibbed, 3954 bool is_nominal, 3955 bool is_wall, 3956 bool is_factory, 3957 bool is_captureable, 3958 bool is_flammable, 3959 bool is_simpledamage, 3960 bool is_stealthy, 3961 bool is_selectable, 3962 bool is_legal_target, 3963 bool is_insignificant, 3964 bool is_immune, 3965 bool is_theater, 3966 bool is_turret_equipped, 3967 bool is_twoshooter, 3968 bool is_repairable, 3969 bool is_buildable, 3970 bool is_crew, 3971 bool is_sturdy, 3972 RTTIType tobuild, 3973 DirType sframe, 3974 unsigned short strength, 3975 int sightrange, 3976 int cost, 3977 int scenario, 3978 int risk, 3979 int reward, 3980 int ownable, 3981 WeaponType primary, WeaponType secondary, 3982 ArmorType armor, 3983 unsigned long canenter, 3984 unsigned capacity, 3985 int power, 3986 int drain, 3987 BSizeType size, 3988 short const *exitlist, 3989 short const *sizelist, 3990 short const *overlap, 3991 bool is_unsellable) : 3992 TechnoTypeClass(name, 3993 ininame, 3994 level, 3995 pre, 3996 false, 3997 is_scanner, 3998 is_nominal, 3999 false, 4000 is_flammable, 4001 false, 4002 is_stealthy, 4003 is_selectable, 4004 is_legal_target, 4005 is_insignificant, 4006 is_immune, 4007 is_theater, 4008 is_twoshooter, 4009 is_turret_equipped, 4010 is_repairable, 4011 is_buildable, 4012 is_crew, 4013 -1, 4014 strength*2, 4015 MPH_IMMOBILE, 4016 sightrange, 4017 cost, 4018 scenario, 4019 risk, 4020 reward, 4021 ownable, 4022 primary, 4023 secondary, 4024 armor) 4025 { 4026 CanEnter = canenter; 4027 Capacity = capacity; 4028 Drain = drain; 4029 ExitList = exitlist; 4030 ExitPoint = exitpoint; 4031 IsBibbed = is_bibbed; 4032 IsCaptureable = is_captureable; 4033 IsFactory = is_factory; 4034 IsRegulated = is_regulated; 4035 IsUnsellable = is_unsellable; 4036 IsSimpleDamage = is_simpledamage; 4037 IsSturdy = is_sturdy; 4038 IsWall = is_wall; 4039 OccupyList = sizelist; 4040 OverlapList = overlap; 4041 Power = power; 4042 Size = size; 4043 StartFace = sframe; 4044 ToBuild = tobuild; 4045 Type = type; 4046 4047 Anims[BSTATE_CONSTRUCTION].Start = 0; 4048 Anims[BSTATE_CONSTRUCTION].Count = 1; 4049 Anims[BSTATE_CONSTRUCTION].Rate = 0; 4050 4051 Anims[BSTATE_IDLE].Start = 0; 4052 Anims[BSTATE_IDLE].Count = 1; 4053 Anims[BSTATE_IDLE].Rate = 0; 4054 4055 Anims[BSTATE_ACTIVE].Start = 0; 4056 Anims[BSTATE_ACTIVE].Count = 1; 4057 Anims[BSTATE_ACTIVE].Rate = 0; 4058 4059 Anims[BSTATE_AUX1].Start = 0; 4060 Anims[BSTATE_AUX1].Count = 1; 4061 Anims[BSTATE_AUX1].Rate = 0; 4062 4063 Anims[BSTATE_AUX2].Start = 0; 4064 Anims[BSTATE_AUX2].Count = 1; 4065 Anims[BSTATE_AUX2].Rate = 0; 4066 } 4067 4068 4069 /*********************************************************************************************** 4070 * BuildingTypeClass::One_Time -- Performs special one time action for buildings. * 4071 * * 4072 * This routine is used to do the one time action necessary to handle building type class * 4073 * objects. This entails loading of the building shapes and the brain file used by * 4074 * buildings. * 4075 * * 4076 * INPUT: none * 4077 * * 4078 * OUTPUT: none * 4079 * * 4080 * WARNINGS: This routine should only be called ONCE. * 4081 * * 4082 * HISTORY: * 4083 * 05/28/1994 JLB : Created. * 4084 * 06/11/1994 JLB : Updated construction time and frame count logic. * 4085 *=============================================================================================*/ 4086 void BuildingTypeClass::One_Time(void) 4087 { 4088 static const struct { 4089 StructType Class; // Building class number. 4090 BStateType Stage; // Animation sequence to assign animation range to. 4091 int Start; // Starting frame number. 4092 int Length; // Number of frames (-1 means use all frames). 4093 int Rate; // Rate of animation. 4094 } _anims[] = { 4095 {STRUCT_OBELISK, BSTATE_ACTIVE, 0, 4, OBELISK_ANIMATION_RATE}, 4096 {STRUCT_ADVANCED_POWER, BSTATE_IDLE, 0, 4, 15}, 4097 {STRUCT_AIRSTRIP, BSTATE_IDLE, 0, 16,3}, 4098 {STRUCT_BARRACKS, BSTATE_ACTIVE, 0, 10,3}, 4099 {STRUCT_BARRACKS, BSTATE_IDLE, 0, 10,3}, 4100 {STRUCT_CONST, BSTATE_ACTIVE, 4, 20,3}, 4101 {STRUCT_CONST, BSTATE_IDLE, 0, 4, 3}, 4102 {STRUCT_EYE, BSTATE_IDLE, 0, 16,4}, 4103 {STRUCT_HELIPAD, BSTATE_ACTIVE, 0, 7, 4}, 4104 {STRUCT_HELIPAD, BSTATE_IDLE, 0, 0, 0}, 4105 {STRUCT_HOSPITAL, BSTATE_IDLE, 0, 4, 3}, 4106 {STRUCT_POWER, BSTATE_IDLE, 0, 4, 15}, 4107 {STRUCT_PUMP, BSTATE_IDLE, 0, 14,4}, 4108 {STRUCT_RADAR, BSTATE_IDLE, 0, 16,4}, 4109 {STRUCT_REFINERY, BSTATE_ACTIVE, 12,7, 4}, // Docking phase. 4110 {STRUCT_REFINERY, BSTATE_AUX1, 19,5, 4}, // Siphoning phase. 4111 {STRUCT_REFINERY, BSTATE_AUX2, 24,6, 4}, // Undocking phase. 4112 {STRUCT_REFINERY, BSTATE_IDLE, 0, 6, 4}, // Idle phase. 4113 {STRUCT_REFINERY, BSTATE_FULL, 6, 6, 4}, // Flashing lights 4114 {STRUCT_REPAIR, BSTATE_ACTIVE, 0, 7, 2}, 4115 {STRUCT_REPAIR, BSTATE_IDLE, 0, 1, 0}, 4116 {STRUCT_TEMPLE, BSTATE_IDLE, 0, 1, 0}, 4117 {STRUCT_V20, BSTATE_IDLE, 0, 3, 3}, 4118 {STRUCT_V21, BSTATE_IDLE, 0, 3, 3}, 4119 {STRUCT_V22, BSTATE_IDLE, 0, 3, 3}, 4120 {STRUCT_V23, BSTATE_IDLE, 0, 3, 3}, 4121 {STRUCT_WEAP, BSTATE_ACTIVE, 0, 1, 0}, 4122 {STRUCT_WEAP, BSTATE_IDLE, 0, 1, 0}, 4123 {STRUCT_TEMPLE, BSTATE_ACTIVE, 0, 5, 1}, 4124 }; 4125 4126 for (StructType sindex = STRUCT_FIRST; sindex < STRUCT_COUNT; sindex++) { 4127 char fullname[_MAX_FNAME+_MAX_EXT]; 4128 char buffer[_MAX_FNAME]; 4129 BuildingTypeClass const & building = As_Reference(sindex); 4130 4131 /* 4132 ** Fetch the sidebar cameo image for this building. 4133 */ 4134 if (building.IsBuildable) { 4135 if ( Get_Resolution_Factor() ) { 4136 sprintf(buffer, "%sICNH", building.IniName); 4137 } else { 4138 sprintf(buffer, "%sICON", building.IniName); 4139 } 4140 _makepath(fullname, NULL, NULL, buffer, ".SHP"); 4141 ((void const *&)building.CameoData) = MixFileClass::Retrieve(fullname); 4142 } 4143 4144 /* 4145 ** Fetch the construction animation for this building. 4146 */ 4147 sprintf(buffer, "%sMAKE", building.IniName); 4148 _makepath(fullname, NULL, NULL, buffer, ".SHP"); 4149 void const * dataptr = MixFileClass::Retrieve(fullname); 4150 ((void const *&)building.BuildupData) = dataptr; 4151 if (dataptr) { 4152 int timedelay = 1; 4153 int count = Get_Build_Frame_Count(dataptr); 4154 if (count) { 4155 timedelay = (5 * TICKS_PER_SECOND) / count; 4156 } 4157 building.Init_Anim(BSTATE_CONSTRUCTION, 0, count, timedelay); 4158 } 4159 4160 /* 4161 ** Fetch the normal game shape for this building. 4162 */ 4163 _makepath(fullname, NULL, NULL, building.IniName, ".SHP"); 4164 ((void const *&)building.ImageData) = MixFileClass::Retrieve(fullname); 4165 } 4166 4167 // Try to load weap2.shp 4168 char fullname[_MAX_FNAME+_MAX_EXT]; 4169 _makepath(fullname, NULL, NULL, (char const *)"WEAP2",".SHP"); 4170 WarFactoryOverlay = MixFileClass::Retrieve(fullname); 4171 4172 /* 4173 ** Install all the special animation sequences for the different building types. 4174 */ 4175 for (unsigned index = 0; index < (sizeof(_anims) / sizeof(_anims[0])); index++) { 4176 BuildingTypeClass const *b = &As_Reference(_anims[index].Class); 4177 if (b) { 4178 b->Init_Anim(_anims[index].Stage, _anims[index].Start, _anims[index].Length, _anims[index].Rate); 4179 } 4180 } 4181 } 4182 4183 4184 4185 4186 /*********************************************************************************************** 4187 * Struct_From_Name -- Find BData structure from its name. * 4188 * * 4189 * This routine will convert an ASCII name for a building class into * 4190 * the actual building class it represents. * 4191 * * 4192 * INPUT: name -- ASCII representation of a building class. * 4193 * * 4194 * OUTPUT: Returns with the actual building class number that the string * 4195 * represents. * 4196 * * 4197 * WARNINGS: none * 4198 * * 4199 * HISTORY: * 4200 * 10/07/1992 JLB : Created. * 4201 * 05/02/1994 JLB : Converted to member function. * 4202 *=============================================================================================*/ 4203 StructType BuildingTypeClass::From_Name(char const *name) 4204 { 4205 if (name) { 4206 for (StructType classid = STRUCT_FIRST; classid < STRUCT_COUNT; classid++) { 4207 if (stricmp(As_Reference(classid).IniName, name) == 0) { 4208 return(classid); 4209 } 4210 } 4211 } 4212 return(STRUCT_NONE); 4213 } 4214 4215 4216 #ifdef SCENARIO_EDITOR 4217 /*********************************************************************************************** 4218 * BuildingTypeClass::Display -- Renders a generic view of building. * 4219 * * 4220 * This routine is used to display a generic representation of the * 4221 * building. Typical use of this occurs with the scenario editor. * 4222 * * 4223 * INPUT: x,y -- Coordinate to display the building (centered). * 4224 * * 4225 * window -- The window the building should be rendered * 4226 * relative to. * 4227 * * 4228 * house -- The house color to use for the building. * 4229 * * 4230 * OUTPUT: none * 4231 * * 4232 * WARNINGS: none * 4233 * * 4234 * HISTORY: * 4235 * 05/23/1994 JLB : Created. * 4236 *=============================================================================================*/ 4237 void BuildingTypeClass::Display(int x, int y, WindowNumberType window, HousesType house) const 4238 { 4239 void const * ptr = Get_Cameo_Data(); 4240 if (!ptr) { 4241 ptr = Get_Image_Data(); 4242 } 4243 CC_Draw_Shape(ptr, 0, x, y, window, SHAPE_FADING|SHAPE_CENTER|SHAPE_WIN_REL, HouseTypeClass::As_Reference(house).RemapTable); 4244 } 4245 4246 4247 /*********************************************************************************************** 4248 * BuildingTypeClass::Prep_For_Add -- Prepares scenario editor for adding a * 4249 * * 4250 * This routine is used to prepare the scenario editor for the addition * 4251 * of a building object to the game. * 4252 * * 4253 * INPUT: none * 4254 * * 4255 * OUTPUT: none * 4256 * * 4257 * WARNINGS: none * 4258 * * 4259 * HISTORY: * 4260 * 05/23/1994 JLB : Created. * 4261 * 06/04/1994 JLB : Uses map editing interface routines. * 4262 *=============================================================================================*/ 4263 void BuildingTypeClass::Prep_For_Add(void) 4264 { 4265 for (StructType index = STRUCT_FIRST; index < STRUCT_COUNT; index++) { 4266 if (As_Reference(index).Get_Image_Data()) { 4267 Map.Add_To_List(&As_Reference(index)); 4268 } 4269 } 4270 } 4271 #endif 4272 4273 4274 /*********************************************************************************************** 4275 * BuildingTypeClass::Create_And_Place -- Creates and places a building object onto the map. * 4276 * * 4277 * This routine is used by the scenario editor to create and place buildings on the map. * 4278 * * 4279 * INPUT: cell -- The cell that the building is to be placed upon. * 4280 * * 4281 * house -- The owner of the building. * 4282 * * 4283 * OUTPUT: bool; Was the building successfully created and placed on the map? * 4284 * * 4285 * WARNINGS: none * 4286 * * 4287 * HISTORY: * 4288 * 05/28/1994 JLB : Created. * 4289 *=============================================================================================*/ 4290 bool BuildingTypeClass::Create_And_Place(CELL cell, HousesType house) const 4291 { 4292 BuildingClass * ptr; 4293 4294 ptr = new BuildingClass(Type, house); 4295 if (ptr) { 4296 return(ptr->Unlimbo(Cell_Coord(cell), DIR_N)); 4297 } 4298 return(false); 4299 } 4300 4301 4302 /*********************************************************************************************** 4303 * BuildingTypeClass::Create_One_Of -- Creates a building of this type. * 4304 * * 4305 * This routine will create a building object of this type. The building object is in a * 4306 * limbo state. It is presumed that the building object will be unlimboed at the correct * 4307 * place and time. Typical use is when the building is created in a factory situation * 4308 * and will be placed on the map when construction completes. * 4309 * * 4310 * INPUT: house -- Pointer to the house that is to be the owner of the building. * 4311 * * 4312 * OUTPUT: Returns with a pointer to the building. If the building could not be created * 4313 * then a NULL is returned. * 4314 * * 4315 * WARNINGS: none * 4316 * * 4317 * HISTORY: * 4318 * 06/07/1994 JLB : Created. * 4319 *=============================================================================================*/ 4320 ObjectClass * BuildingTypeClass::Create_One_Of(HouseClass * house) const 4321 { 4322 HousesType htype = HOUSE_NEUTRAL; 4323 if (house) { 4324 htype = house->Class->House; 4325 } 4326 return(new BuildingClass(Type, htype)); 4327 } 4328 4329 4330 /*********************************************************************************************** 4331 * BuildingTypeClass::Init_Anim -- Initialize an animation control for a building. * 4332 * * 4333 * This routine will initialize one animation control element for a * 4334 * specified building. This modifies a "const" class and thus must * 4335 * perform some strategic casting to get away with this. * 4336 * * 4337 * INPUT: state -- The animation state to apply these data values to. * 4338 * * 4339 * start -- Starting frame for the building's animation. * 4340 * * 4341 * count -- The number of frames in this animation. * 4342 * * 4343 * rate -- The countdown timer between animation frames. * 4344 * * 4345 * OUTPUT: none * 4346 * * 4347 * WARNINGS: none * 4348 * * 4349 * HISTORY: * 4350 * 04/18/1994 JLB : Created. * 4351 *=============================================================================================*/ 4352 void BuildingTypeClass::Init_Anim(BStateType state, int start, int count, int rate) const 4353 { 4354 ((int &)Anims[state].Start) = start; 4355 ((int &)Anims[state].Count) = count; 4356 ((int &)Anims[state].Rate) = rate; 4357 } 4358 4359 4360 /*********************************************************************************************** 4361 * BuildingTypeClass::Legal_Placement -- Determines if building can be legally placed at pos. * 4362 * * 4363 * This routine is used to determine if a building can be legally * 4364 * placed at the specified position. Buildings can only be placed on * 4365 * unoccupied rock terrain. * 4366 * * 4367 * INPUT: pos -- Position that the building would be placed (up-left) * 4368 * * 4369 * OUTPUT: 0=illegal, 1=on concrete, -1..-8=part on concrete. * 4370 * * 4371 * WARNINGS: none * 4372 * * 4373 * HISTORY: * 4374 * 09/15/1991 JLB : Created. * 4375 * 04/26/1992 JLB : Concrete and scenario init adjustment. * 4376 * 05/06/1992 JLB : Good, Bad, and Adjacent checking added. * 4377 * 08/09/1992 JLB : Determines full or partial concrete foundation. * 4378 * 06/07/1994 JLB : Handles concrete special check. * 4379 * 06/21/1994 JLB : Converted to building type class member function. * 4380 *=============================================================================================*/ 4381 int BuildingTypeClass::Legal_Placement(CELL pos) const 4382 { 4383 short const *offset; // Pointer to cell offset list. 4384 4385 if (pos == -1) return(false); 4386 4387 #ifdef NEVER 4388 /* 4389 ** Concrete has special checking performed to determine legal placement. Concrete 4390 ** can legally be placed if there is any cell that would be affected by the concrete 4391 ** placement. Unlike other buildings, only one cell needs to be effective in order 4392 ** to flag legal placement for the entire "structure". 4393 */ 4394 if (Type == STRUCT_CONCRETE_NOD || Type == STRUCT_CONCRETE_GDI) { 4395 offset = Occupy_List(); 4396 while (*offset != REFRESH_EOL) { 4397 if (!Map.Cell_Template(pos + (CELL)*offset++)) { 4398 return(true); 4399 } 4400 } 4401 4402 /* 4403 ** No squares would be affected by concrete placement so consider legal 4404 ** placement query to be false. 4405 */ 4406 return(false); 4407 } 4408 #endif 4409 4410 /* 4411 ** Normal buildings must check to see that every foundation square is free of 4412 ** obstacles. If this check passes for all foundation squares, only then does the 4413 ** routine return that it is legal to place. 4414 */ 4415 offset = Occupy_List(true); 4416 while (*offset != REFRESH_EOL) { 4417 CELL cell = pos + *offset++; 4418 if (!Map.In_Radar(cell)) return(false); 4419 if (!Map[cell].Is_Generally_Clear()) { 4420 return(false); 4421 } 4422 } 4423 return(true); 4424 } 4425 4426 4427 /*********************************************************************************************** 4428 * BuildingTypeClass::Who_Can_Build_Me -- Determines which factory can create the building. * 4429 * * 4430 * Use this routine to determine which building is available to build the building. If * 4431 * there are no suitable buildings, then NULL is returned. Typical use of this function is * 4432 * to maintain the construction list sidebar. * 4433 * * 4434 * INPUT: intheory -- If true, then it merely checks for a building of the proper ownership * 4435 * when determining if construction is allowed. It doesn't consider the * 4436 * possibility that the construction building is currently busy or not. * 4437 * * 4438 * legal -- Should building prerequisite legality checks be performed as well? * 4439 * For building placements, this is usually false. For sidebar button * 4440 * adding, this is usually true. * 4441 * * 4442 * house -- The owner of the building to be built. Only construction buildings of * 4443 * the same ownership are allowed to build. * 4444 * * 4445 * OUTPUT: Returns with a pointer to the construction object (building) that can build * 4446 * the building type. * 4447 * * 4448 * WARNINGS: none * 4449 * * 4450 * HISTORY: * 4451 * 11/29/1994 JLB : Created. * 4452 * 01/02/1995 JLB : Scans in reverse order so that later buildings are biased. * 4453 *=============================================================================================*/ 4454 BuildingClass * BuildingTypeClass::Who_Can_Build_Me(bool intheory, bool legal, HousesType house) const 4455 { 4456 for (int index = Buildings.Count()-1; index >= 0; index--) { 4457 BuildingClass * building = Buildings.Ptr(index); 4458 4459 if (building && !building->IsInLimbo && 4460 building->House->Class->House == house && 4461 building->Class->ToBuild == RTTI_BUILDINGTYPE && 4462 building->Mission != MISSION_DECONSTRUCTION && 4463 ((1L << building->ActLike) & Ownable) && 4464 (!legal || building->House->Can_Build(Type, building->ActLike)) && 4465 (intheory || !building->In_Radio_Contact())) { 4466 return(building); 4467 } 4468 } 4469 return(0); 4470 } 4471 4472 4473 /*********************************************************************************************** 4474 * BuildingTypeClass::Init -- Performs theater specific initialization. * 4475 * * 4476 * This routine is used to perform any initialization that is custom per theater. * 4477 * Typically, this is fetching the building shape data for those building types that have * 4478 * theater specific art. * 4479 * * 4480 * INPUT: theater -- The theater to base this initialization on. * 4481 * * 4482 * OUTPUT: none * 4483 * * 4484 * WARNINGS: none * 4485 * * 4486 * HISTORY: * 4487 * 01/21/1995 JLB : Created. * 4488 *=============================================================================================*/ 4489 void BuildingTypeClass::Init(TheaterType theater) 4490 { 4491 if (theater != LastTheater){ 4492 char fullname[_MAX_FNAME+_MAX_EXT]; 4493 4494 for (StructType sindex = STRUCT_FIRST; sindex < STRUCT_COUNT; sindex++) { 4495 BuildingTypeClass const *classptr = &As_Reference(sindex); 4496 4497 if (classptr->IsTheater) { 4498 _makepath(fullname, NULL, NULL, classptr->IniName, Theaters[theater].Suffix); 4499 ((void const *&)classptr->ImageData) = MixFileClass::Retrieve(fullname); 4500 } 4501 4502 if ( Get_Resolution_Factor() ) { 4503 char buffer[_MAX_FNAME]; 4504 char fullname[_MAX_FNAME+_MAX_EXT]; 4505 void const * cameo_ptr; 4506 4507 ((void const *&)classptr->CameoData) = NULL; 4508 4509 sprintf(buffer, "%.4sICNH", classptr->IniName); 4510 _makepath (fullname, NULL, NULL, buffer, Theaters[theater].Suffix); 4511 cameo_ptr = MixFileClass::Retrieve(fullname); 4512 if (cameo_ptr){ 4513 ((void const *&)classptr->CameoData) = cameo_ptr; 4514 } 4515 } 4516 } 4517 } 4518 } 4519 4520 4521 /*********************************************************************************************** 4522 * BuildingTypeClass::Dimensions -- Fetches the pixel dimensions of the building. * 4523 * * 4524 * This routine will fetch the dimensions of the building (in pixels). These dimensions are * 4525 * used to render the selection rectangle and the health bar. * 4526 * * 4527 * INPUT: width -- Reference to the pixel width (to be filled in). * 4528 * * 4529 * height -- Reference to the pixel height (to be filled in). * 4530 * * 4531 * OUTPUT: none * 4532 * * 4533 * WARNINGS: none * 4534 * * 4535 * HISTORY: * 4536 * 01/23/1995 JLB : Created. * 4537 *=============================================================================================*/ 4538 void BuildingTypeClass::Dimensions(int &width, int &height) const 4539 { 4540 static struct { 4541 int Width; 4542 int Height; 4543 } _dimensions[BSIZE_COUNT] = { 4544 {1,1}, 4545 {2,1}, 4546 {1,2}, 4547 {2,2}, 4548 {2,3}, 4549 {3,2}, 4550 {3,3}, 4551 {4,2}, 4552 {5,5} 4553 }; 4554 4555 width = _dimensions[Size].Width * ICON_PIXEL_W; 4556 width -= (width/5); 4557 height = _dimensions[Size].Height * ICON_PIXEL_H; 4558 height -= (height/5); 4559 } 4560 4561 4562 /*********************************************************************************************** 4563 * BuildingTypeClass::As_Reference -- Fetches reference to the building type specified. * 4564 * * 4565 * This routine will fetch a reference to the BuildingTypeClass as indicated by the * 4566 * building type number specified. * 4567 * * 4568 * INPUT: type -- The building type number to convert into a BuildingTypeClass reference. * 4569 * * 4570 * OUTPUT: Returns with a reference to the building type class as indicated by the * 4571 * parameter. * 4572 * * 4573 * WARNINGS: none * 4574 * * 4575 * HISTORY: * 4576 * 01/23/1995 JLB : Created. * 4577 *=============================================================================================*/ 4578 BuildingTypeClass const & BuildingTypeClass::As_Reference(StructType type) 4579 { 4580 return(* Pointers[type]); 4581 } 4582 4583 4584 /*********************************************************************************************** 4585 * BuildingTypeClass::Occupy_List -- Fetches the occupy list for the building. * 4586 * * 4587 * Use this routine to fetch the occupy list pointer for the building. The occupy list is * 4588 * used to determine what cells the building occupies and thus precludes other buildings * 4589 * or objects from using. * 4590 * * 4591 * INPUT: placement -- Is this for placement legality checking only? The normal condition * 4592 * is for marking occupation flags. * 4593 * * 4594 * OUTPUT: Returns with a pointer to a cell offset list to be used to determine what cells * 4595 * this building occupies. * 4596 * * 4597 * WARNINGS: none * 4598 * * 4599 * HISTORY: * 4600 * 01/23/1995 JLB : Created. * 4601 *=============================================================================================*/ 4602 short const * BuildingTypeClass::Occupy_List(bool placement) const 4603 { 4604 SmudgeType bib = SMUDGE_NONE; 4605 CELL cell=0; 4606 4607 if ((placement && Bib_And_Offset(bib, cell)) || (Special.IsRoad && (*this == STRUCT_BARRACKS || (placement && *this == STRUCT_REFINERY)))) { 4608 4609 /* 4610 ** The barracks is always considered to have a bib under it for placement reasons even 4611 ** if the bib logic is turned off. 4612 */ 4613 if (Special.IsRoad && *this == STRUCT_BARRACKS) { 4614 bib = SMUDGE_BIB3; 4615 cell = 0; 4616 } 4617 4618 /* 4619 ** If bibs are disabled, then always ensure that the refinery bib is marked 4620 ** as occupied. 4621 */ 4622 if (Special.IsRoad && *this == STRUCT_REFINERY) { 4623 bib = SMUDGE_BIB2; 4624 cell = MAP_CELL_W; 4625 } 4626 4627 SmudgeTypeClass const & smudge = SmudgeTypeClass::As_Reference(bib); 4628 static short _list[25]; 4629 short * dest = &_list[0]; 4630 4631 /* 4632 ** Copy the bib overlap list into the working buffer. 4633 */ 4634 short const * src = smudge.Occupy_List(); 4635 while (*src != REFRESH_EOL) { 4636 *dest++ = (*src++) + cell; 4637 } 4638 4639 /* 4640 ** Append the building occupy list to this working buffer. 4641 */ 4642 src = OccupyList; 4643 while (src && *src != REFRESH_EOL) { 4644 *dest++ = *src++; 4645 } 4646 *dest = REFRESH_EOL; 4647 4648 return(&_list[0]); 4649 } 4650 4651 if (OccupyList) { 4652 return(OccupyList); 4653 } 4654 4655 static short const _templap[] = {REFRESH_EOL}; 4656 return(&_templap[0]); 4657 } 4658 4659 4660 /*********************************************************************************************** 4661 * BuildingTypeClass::Overlap_List -- Fetches the overlap list for the building. * 4662 * * 4663 * This routine will fetch the overlap list for the building. The overlap list is used * 4664 * to determine what cells the building's graphics cover, but is not considered to occupy * 4665 * for movement purposes. * 4666 * * 4667 * INPUT: none * 4668 * * 4669 * OUTPUT: Returns with a pointer to the cell offset list that is used to determine the * 4670 * cells that this building overlaps. * 4671 * * 4672 * WARNINGS: none * 4673 * * 4674 * HISTORY: * 4675 * 01/23/1995 JLB : Created. * 4676 *=============================================================================================*/ 4677 short const * BuildingTypeClass::Overlap_List(void) const 4678 { 4679 if (OverlapList) { 4680 return(OverlapList); 4681 } 4682 4683 static short const _templap[] = {REFRESH_EOL}; 4684 return(&_templap[0]); 4685 } 4686 4687 4688 /*********************************************************************************************** 4689 * BuildingTypeClass::Width -- Determines width of bulding in icons. * 4690 * * 4691 * Use this routine to determine the width of the building type in icons. * 4692 * * 4693 * INPUT: none * 4694 * * 4695 * OUTPUT: Returns with the building width in icons. * 4696 * * 4697 * WARNINGS: none * 4698 * * 4699 * HISTORY: * 4700 * 02/23/1995 JLB : Created. * 4701 *=============================================================================================*/ 4702 int BuildingTypeClass::Width(void) const 4703 { 4704 static int width[BSIZE_COUNT] = { 4705 1, 4706 2, 4707 1, 4708 2, 4709 2, 4710 3, 4711 3, 4712 4, 4713 5 4714 }; 4715 return(width[Size]); 4716 } 4717 4718 4719 /*********************************************************************************************** 4720 * BuildingTypeClass::Height -- Determins the height of the building in icons. * 4721 * * 4722 * Use this routine to find the height of the building in icons. * 4723 * * 4724 * INPUT: none * 4725 * * 4726 * OUTPUT: Returns with the building height in icons. * 4727 * * 4728 * WARNINGS: none * 4729 * * 4730 * HISTORY: * 4731 * 02/23/1995 JLB : Created. * 4732 *=============================================================================================*/ 4733 int BuildingTypeClass::Height(void) const 4734 { 4735 static int height[BSIZE_COUNT] = { 4736 1, 4737 1, 4738 2, 4739 2, 4740 3, 4741 2, 4742 3, 4743 2, 4744 5 4745 }; 4746 return(height[Size]); 4747 } 4748 4749 4750 /*********************************************************************************************** 4751 * BuildingTypeClass::Repair_Cost -- Determines cost per "step" of repair. * 4752 * * 4753 * Use this routine to determine how much it will cost to repair the building one * 4754 * step. A step is defined as the number of hit points returned from the Repair_Step() * 4755 * function. * 4756 * * 4757 * INPUT: none * 4758 * * 4759 * OUTPUT: Returns with the credit cost to repair this building one step. * 4760 * * 4761 * WARNINGS: none * 4762 * * 4763 * HISTORY: * 4764 * 02/23/1995 JLB : Created. * 4765 *=============================================================================================*/ 4766 int BuildingTypeClass::Repair_Cost(void) const 4767 { 4768 int cost = (Raw_Cost()*REPAIR_STEP) / MaxStrength; 4769 cost /= 2; 4770 cost = MAX(cost, 1); 4771 cost = Fixed_To_Cardinal(cost, REPAIR_PERCENT); 4772 return(MAX(cost, 1)); 4773 } 4774 4775 4776 /*********************************************************************************************** 4777 * BuildingTypeClass::Repair_Step -- Determines the repair step rate. * 4778 * * 4779 * This routine will determine how many strength points get healed for each "step". The * 4780 * cost to repair one step is determine from the Repair_Cost() function. * 4781 * * 4782 * INPUT: none * 4783 * * 4784 * OUTPUT: Returns with the number of health points repaired for each "step". * 4785 * * 4786 * WARNINGS: none * 4787 * * 4788 * HISTORY: * 4789 * 02/23/1995 JLB : Created. * 4790 *=============================================================================================*/ 4791 int BuildingTypeClass::Repair_Step(void) const 4792 { 4793 return(REPAIR_STEP); 4794 } 4795 4796 4797 /*********************************************************************************************** 4798 * BuildingTypeClass::Bib_And_Offset -- Determines the bib and appropriate cell offset. * 4799 * * 4800 * This routine is used to determine what (if any) bib should be used for this building * 4801 * and also the cell offset for the upper left corner of the bib smudge type. * 4802 * * 4803 * INPUT: bib -- Reference to the bib that should be used for this building. * 4804 * * 4805 * cell -- The cell offset for the upper left corner of the bib. This offset is * 4806 * relative to the upper left corner of the building. * 4807 * * 4808 * OUTPUT: Is a bib required for this building? If the result is true, then the correct * 4809 * bib and cell offset will be filled in. * 4810 * * 4811 * WARNINGS: none * 4812 * * 4813 * HISTORY: * 4814 * 05/23/1995 JLB : Created. * 4815 *=============================================================================================*/ 4816 bool BuildingTypeClass::Bib_And_Offset(SmudgeType & bib, CELL & cell) const 4817 { 4818 bib = SMUDGE_NONE; 4819 4820 if (IsBibbed && !Special.IsRoad) { 4821 switch (Width()) { 4822 case 2: 4823 bib = SMUDGE_BIB3; 4824 break; 4825 4826 case 3: 4827 bib = SMUDGE_BIB2; 4828 break; 4829 4830 case 4: 4831 bib = SMUDGE_BIB1; 4832 break; 4833 } 4834 4835 /* 4836 ** Adjust the bib position for special buildings that have the bib as part 4837 ** of the building art itself. 4838 */ 4839 if (bib != SMUDGE_NONE) { 4840 cell += ((Height()-1)*MAP_CELL_W); 4841 } 4842 } 4843 return(bib != SMUDGE_NONE); 4844 } 4845 4846 4847 /*********************************************************************************************** 4848 * BuildingTypeClass::Max_Pips -- Determines the maximum pips to display. * 4849 * * 4850 * Use this routine to determine the maximum number of pips to display on this building * 4851 * when it is rendered. Typically, this is the tiberium capacity divided by 100. * 4852 * * 4853 * INPUT: none * 4854 * * 4855 * OUTPUT: Returns with the number of pips to display on this building when selected. * 4856 * * 4857 * WARNINGS: none * 4858 * * 4859 * HISTORY: * 4860 * 06/29/1995 JLB : Created. * 4861 *=============================================================================================*/ 4862 int BuildingTypeClass::Max_Pips(void) const 4863 { 4864 return(Bound(Capacity/100, 0, 10)); 4865 } 4866 4867 4868 /*********************************************************************************************** 4869 * BuildingTypeClass::Full_Name -- Fetches the full name text number. * 4870 * * 4871 * This routine will fetch the full name of this building (expressed as a text number). * 4872 * If special civilian names are enabled, then the civilian buildings will show their true * 4873 * name rather than "civilian building". * 4874 * * 4875 * INPUT: none * 4876 * * 4877 * OUTPUT: Returns with the full name of this building. * 4878 * * 4879 * WARNINGS: none * 4880 * * 4881 * HISTORY: * 4882 * 06/29/1995 JLB : Created. * 4883 * 07/17/1995 JLB : Village wells will always have their name displayed. * 4884 *=============================================================================================*/ 4885 int BuildingTypeClass::Full_Name(void) const 4886 { 4887 if (::Scenario == 3 && Type == STRUCT_MISSION) { 4888 return(TXT_PRISON); 4889 } 4890 if (!IsNominal || Special.IsNamed || IsWall || Debug_Map || Type == STRUCT_V23 || Type == STRUCT_V30 || Type == STRUCT_MISSION || Type == STRUCT_BIO_LAB) { 4891 return(TechnoTypeClass::Full_Name()); 4892 } 4893 return(TXT_CIVILIAN_BUILDING); 4894 } 4895 4896 4897 int BuildingTypeClass::Raw_Cost(void) const 4898 { 4899 #ifdef PATCH 4900 /* 4901 ** Forces the turret cost down to original 250 for old 4902 ** version games. 4903 */ 4904 if (IsV107 && Type == STRUCT_TURRET && GameToPlay != GAME_NORMAL) { 4905 return(250); 4906 } 4907 #endif 4908 4909 int cost = TechnoTypeClass::Raw_Cost(); 4910 4911 if (Type == STRUCT_HELIPAD) { 4912 cost -= AircraftTypeClass::As_Reference(AIRCRAFT_ORCA).Cost; 4913 } 4914 if (Type == STRUCT_REFINERY) { 4915 cost -= UnitTypeClass::As_Reference(UNIT_HARVESTER).Cost; 4916 } 4917 return(cost); 4918 } 4919 4920 4921 int BuildingTypeClass::Cost_Of(void) const 4922 { 4923 if (Special.IsSeparate && Type == STRUCT_HELIPAD) { 4924 return(Raw_Cost()); 4925 } 4926 4927 #ifdef PATCH 4928 /* 4929 ** Forces the turret cost down to original 250 for old 4930 ** version games. 4931 */ 4932 if (IsV107 && Type == STRUCT_TURRET && GameToPlay != GAME_NORMAL) { 4933 return(250); 4934 } 4935 #endif 4936 4937 return(TechnoTypeClass::Cost_Of()); 4938 }