BDATA.CPP 215 KB

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