| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154 |
- /*
- ** Command & Conquer(tm)
- ** Copyright 2025 Electronic Arts Inc.
- **
- ** This program is free software: you can redistribute it and/or modify
- ** it under the terms of the GNU General Public License as published by
- ** the Free Software Foundation, either version 3 of the License, or
- ** (at your option) any later version.
- **
- ** This program is distributed in the hope that it will be useful,
- ** but WITHOUT ANY WARRANTY; without even the implied warranty of
- ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ** GNU General Public License for more details.
- **
- ** You should have received a copy of the GNU General Public License
- ** along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
- /* $Header: F:\projects\c&c\vcs\code\idata.cpv 2.12 02 Aug 1995 17:00:30 JOE_BOSTIC $ */
- /***********************************************************************************************
- *** 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 ***
- ***********************************************************************************************
- * *
- * Project Name : Command & Conquer *
- * *
- * File Name : IDATA.CPP *
- * *
- * Programmer : Joe L. Bostic *
- * *
- * Start Date : August 15, 1994 *
- * *
- * Last Update : June 29, 1995 [JLB] *
- * *
- *---------------------------------------------------------------------------------------------*
- * Functions: *
- * InfantryTypeClass::Create_And_Place -- Creates and places infantry object onto the map. *
- * InfantryTypeClass::Create_One_Of -- Creates an infantry object. *
- * InfantryTypeClass::Display -- Displays a generic infantry object. *
- * InfantryTypeClass::From_Name -- Converts an ASCII name into an infantry type number. *
- * InfantryTypeClass::Full_Name -- Fetches the full name text number. *
- * InfantryTypeClass::Get_Cameo_Data -- Fetches the small cameo shape for sidebar strip. *
- * InfantryTypeClass::InfantryTypeClass -- Constructor for infantry type class objects. *
- * InfantryTypeClass::Occupy_List -- Returns with default infantry occupation list. *
- * InfantryTypeClass::One_Time -- Performs any one time processing for infantry system. *
- * InfantryTypeClass::Prep_For_Add -- Prepares the scenario editor for adding of infantry object.*
- * InfantryTypeClass::Who_Can_Build_Me -- Determines what can build the infantry object. *
- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- #include "function.h"
- #include "type.h"
- /*
- * There were too many parameters for the InfantryTypeClass constructor so I have
- * created a table of Do Controls for each unit type and I am passing a pointer
- * to the table to the constructor instead of passing each value as it was before.
- *
- * If this offends anyones C++ sensibilities then please feel free to implement a
- * more elegant oop solution.
- *
- * Steve T. 10/3/95 10:13AM
- *
- */
- // Minigunners
- int MiniGunnerDos [DO_COUNT][3]={
- 0, 1, 1, // DO_STAND_READY
- 8, 1, 1, // DO_STAND_GUARD
- 192, 1, 8, // DO_PRONE
- 16, 6, 6, // DO_WALK
- 64, 8, 8, // DO_FIRE_WEAPON
- 128, 2, 2, // DO_LIE_DOWN
- 144, 4, 4, // DO_CRAWL
- 176, 2, 2, // DO_GET_UP
- 192, 6, 8, // DO_FIRE_PRONE
- 256, 16,0, // DO_IDLE1
- 272, 16,0, // DO_IDLE2
- 288, 13,0, // DO_ON_GUARD
- 292, 10,0, // DO_FIGHT_READY
- 301, 2, 0, // DO_PUNCH
- 303, 6, 0, // DO_KICK
- 309, 2, 0, // DO_PUNCH_HIT1
- 311, 4, 0, // DO_PUNCH_HIT2
- 315, 5, 0, // DO_PUNCH_DEATH
- 319, 2, 0, // DO_KICK_HIT1
- 321, 4, 0, // DO_KICK_HIT2
- 325, 5, 0, // DO_KICK_DEATH
- 330, 5, 0, // DO_READY_WEAPON
- 382, 8, 0, // DO_GUN_DEATH
- 398, 8, 0, // DO_EXPLOSION_DEATH
- 398, 8, 0, // DO_EXPLOSION2_DEATH
- 406, 12,0, // DO_GRENADE_DEATH
- 418, 18,0, // DO_FIRE_DEATH
- 436, 3, 3, // DO_GESTURE1
- 460, 3, 3, // DO_SALUTE1
- 484, 3, 3, // DO_GESTURE2
- 508, 3, 3, // DO_SALUTE2
- 0, 1, 1, // DO_PULL_GUN // N/A
- 0, 1, 1, // DO_PLEAD // N/A
- 0, 1, 1 // DO_PLEAD_DEATH // N/A
- };
- static InfantryTypeClass const E1(
- INFANTRY_E1, // Infantry type number.
- TXT_E1, // Translate name number for infantry type.
- "E1", // INI name for infantry.
- 1, // Build level.
- STRUCTF_NONE, // Building prerequisite.
- false, // Is this a female type?
- true, // Is a leader type?
- true, // Has crawling animation frames?
- false, // Is this a civlian?
- false, // Always use the given name for the infantry?
- false, // Is this a "fraidycat" run-away type infantry?
- false, // Can this infantry type capture a building?
- false, // Theater specific graphic image?
- -1, // Number of shots it has (default).
- &MiniGunnerDos[0][0], // Ptr to minigunner 'DO' table above
- 2, // Frame of projectile launch.
- 2, // Frame of projectile launch while prone.
- 50, // Strength of infantry (in damage points).
- 1, // Sight range.
- 100, // Cost of infantry (in credits).
- 1, // Scenario when they first appear.
- 80,10, // Risk/Reward of this infantry unit.
- HOUSEF_MULTI1|
- HOUSEF_MULTI2|
- HOUSEF_MULTI3|
- HOUSEF_MULTI4|
- HOUSEF_MULTI5|
- HOUSEF_MULTI6|
- HOUSEF_JP|
- HOUSEF_GOOD|
- HOUSEF_BAD, // Who can own this infantry unit.
- WEAPON_M16,WEAPON_NONE,
- MPH_SLOW // Maximum speed of infantry.
- );
- // Grenadiers
- int GrenadierDos [DO_COUNT][3]={
- 0, 1, 1, // DO_STAND_READY
- 8, 1, 1, // DO_STAND_GUARD
- 288, 1, 12, // DO_PRONE
- 16, 6, 6, // DO_WALK
- 64, 20,20, // DO_FIRE_WEAPON
- 224, 2, 2, // DO_LIE_DOWN
- 240, 4, 4, // DO_CRAWL
- 272, 2, 2, // DO_GET_UP
- 288, 8, 12, // DO_FIRE_PRONE
- 384, 16,0, // DO_IDLE1
- 400, 16,0, // DO_IDLE2
- 416, 13,0, // DO_ON_GUARD
- 420, 10,0, // DO_FIGHT_READY
- 429, 2, 0, // DO_PUNCH
- 431, 6, 0, // DO_KICK
- 437, 2, 0, // DO_PUNCH_HIT1
- 439, 4, 0, // DO_PUNCH_HIT2
- 443, 4, 0, // DO_PUNCH_DEATH
- 447, 2, 0, // DO_KICK_HIT1
- 449, 4, 0, // DO_KICK_HIT2
- 453, 5, 0, // DO_KICK_DEATH
- 458, 5, 0, // DO_READY_WEAPON
- 510, 8, 0, // DO_GUN_DEATH
- 526, 8, 0, // DO_EXPLOSION_DEATH
- 526, 8, 0, // DO_EXPLOSION2_DEATH
- 534, 12,0, // DO_GRENADE_DEATH
- 546, 18,0, // DO_FIRE_DEATH
- 564, 3, 3, // DO_GESTURE1
- 588, 3, 3, // DO_SALUTE1
- 612, 3, 3, // DO_GESTURE2
- 636, 3, 3, // DO_SALUTE2
- 0, 1, 1, // DO_PULL_GUN // N/A
- 0, 1, 1, // DO_PLEAD // N/A
- 0, 1, 1 // DO_PLEAD_DEATH // N/A
- };
- static InfantryTypeClass const E2(
- INFANTRY_E2, // Infantry type number.
- TXT_E2, // Translate name number for infantry type.
- "E2", // INI name for infantry.
- 1, // Build level.
- STRUCTF_NONE, // Building prerequisite.
- false, // Is this a female type?
- true, // Is a leader type?
- true, // Has crawling animation frames?
- false, // Is this a civlian?
- false, // Always use the given name for the infantry?
- false, // Is this a "fraidycat" run-away type infantry?
- false, // Can this infantry type capture a building?
- false, // Theater specific graphic image?
- -1, // Number of shots it has (default).
- &GrenadierDos[0][0], // Ptr to grenadier DO table (above)
- 14, // Frame of projectile launch.
- 6, // Frame of projectile launch while prone.
- 50, // Strength of infantry (in damage points).
- 1, // Sight range.
- 160, // Cost of infantry (in credits).
- 3, // Scenario when they first appear.
- 80,10, // Risk/Reward of this infantry unit.
- HOUSEF_MULTI1|
- HOUSEF_MULTI2|
- HOUSEF_MULTI3|
- HOUSEF_MULTI4|
- HOUSEF_MULTI5|
- HOUSEF_MULTI6|
- HOUSEF_JP|
- HOUSEF_GOOD, // Who can own this infantry unit.
- WEAPON_GRENADE,WEAPON_NONE,
- MPH_SLOW_ISH // Maximum speed of infantry.
- );
- // Bazooka
- int BazookaDos [DO_COUNT][3]={
- 0, 1, 1, // DO_STAND_READY
- 8, 1, 1, // DO_STAND_GUARD
- 192, 1,10, // DO_PRONE
- 16, 6, 6, // DO_WALK
- 64, 8, 8, // DO_FIRE_WEAPON
- 128, 2, 2, // DO_LIE_DOWN
- 144, 4, 4, // DO_CRAWL
- 176, 2, 2, // DO_GET_UP
- 192, 10,10, // DO_FIRE_PRONE
- 272, 16,0, // DO_IDLE1
- 288, 16,0, // DO_IDLE2
- 304, 13,0, // DO_ON_GUARD
- 308, 10,0, // DO_FIGHT_READY
- 307, 2, 0, // DO_PUNCH
- 319, 6, 0, // DO_KICK
- 325, 2, 0, // DO_PUNCH_HIT1
- 327, 4, 0, // DO_PUNCH_HIT2
- 331, 4, 0, // DO_PUNCH_DEATH
- 335, 2, 0, // DO_KICK_HIT1
- 337, 4, 0, // DO_KICK_HIT2
- 341, 5, 0, // DO_KICK_DEATH
- 346, 5, 0, // DO_READY_WEAPON
- 398, 8, 0, // DO_GUN_DEATH
- 414, 8, 0, // DO_EXPLOSION_DEATH
- 414, 8, 0, // DO_EXPLOSION2_DEATH
- 422, 12,0, // DO_GRENADE_DEATH
- 434, 18,0, // DO_FIRE_DEATH
- 452, 3, 3, // DO_GESTURE1
- 476, 3, 3, // DO_SALUTE1
- 500, 3, 3, // DO_GESTURE2
- 524, 3, 3, // DO_SALUTE2
- 0, 1, 1, // DO_PULL_GUN // N/A
- 0, 1, 1, // DO_PLEAD // N/A
- 0, 1, 1 // DO_PLEAD_DEATH // N/A
- };
- static InfantryTypeClass const E3(
- INFANTRY_E3, // Infantry type number.
- TXT_E3, // Translate name number for infantry type.
- "E3", // INI name for infantry.
- 2, // Build level.
- STRUCTF_NONE, // Building prerequisite.
- false, // Is this a female type?
- true, // Is a leader type?
- true, // Has crawling animation frames?
- false, // Is this a civlian?
- false, // Always use the given name for the infantry?
- false, // Is this a "fraidycat" run-away type infantry?
- false, // Can this infantry type capture a building?
- false, // Theater specific graphic image?
- -1, // Number of shots it has (default).
- &BazookaDos[0][0], // Ptr to DO table (above)
- 3, // Frame of projectile launch.
- 3, // Frame of projectile launch while prone.
- 25, // Strength of infantry (in damage points).
- 2, // Sight range.
- 300, // Cost of infantry (in credits).
- 3, // Scenario when they first appear.
- 80,10, // Risk/Reward of this infantry unit.
- HOUSEF_MULTI1|
- HOUSEF_MULTI2|
- HOUSEF_MULTI3|
- HOUSEF_MULTI4|
- HOUSEF_MULTI5|
- HOUSEF_MULTI6|
- HOUSEF_JP|
- HOUSEF_GOOD|
- HOUSEF_BAD, // Who can own this infantry unit.
- WEAPON_DRAGON,WEAPON_NONE,
- MPH_KINDA_SLOW // Maximum speed of infantry.
- );
- // Flamethrower
- int FlamethrowerDos [DO_COUNT][3]={
- 0, 1, 1, // DO_STAND_READY
- 8, 1, 1, // DO_STAND_GUARD
- 256, 1,16, // DO_PRONE
- 16, 6, 6, // DO_WALK
- 64, 16,16, // DO_FIRE_WEAPON
- 192, 2, 2, // DO_LIE_DOWN
- 208, 4, 4, // DO_CRAWL
- 240, 2, 2, // DO_GET_UP
- 256, 16,16, // DO_FIRE_PRONE
- 384, 16,0, // DO_IDLE1
- 400, 16,0, // DO_IDLE2
- 416, 13,0, // DO_ON_GUARD
- 420, 10,0, // DO_FIGHT_READY
- 429, 2, 0, // DO_PUNCH
- 431, 6, 0, // DO_KICK
- 437, 2, 0, // DO_PUNCH_HIT1
- 439, 4, 0, // DO_PUNCH_HIT2
- 443, 4, 0, // DO_PUNCH_DEATH
- 447, 2, 0, // DO_KICK_HIT1
- 449, 4, 0, // DO_KICK_HIT2
- 453, 5, 0, // DO_KICK_DEATH
- 458, 5, 0, // DO_READY_WEAPON
- 510, 8, 0, // DO_GUN_DEATH
- 526, 8, 0, // DO_EXPLOSION_DEATH
- 526, 8, 0, // DO_EXPLOSION2_DEATH
- 534, 12,0, // DO_GRENADE_DEATH
- 546, 18,0, // DO_FIRE_DEATH
- 564, 3, 3, // DO_GESTURE1
- 588, 3, 3, // DO_SALUTE1
- 612, 3, 3, // DO_GESTURE2
- 636, 3, 3, // DO_SALUTE2
- 0, 1, 1, // DO_PULL_GUN // N/A
- 0, 1, 1, // DO_PLEAD // N/A
- 0, 1, 1 // DO_PLEAD_DEATH // N/A
- };
- static InfantryTypeClass const E4(
- INFANTRY_E4, // Infantry type number.
- TXT_E4, // Translate name number for infantry type.
- "E4", // INI name for infantry.
- 1, // Build level.
- STRUCTF_NONE, // Building prerequisite.
- false, // Is this a female type?
- true, // Is a leader type?
- true, // Has crawling animation frames?
- false, // Is this a civlian?
- false, // Always use the given name for the infantry?
- false, // Is this a "fraidycat" run-away type infantry?
- false, // Can this infantry type capture a building?
- false, // Theater specific graphic image?
- -1, // Number of shots it has (default).
- &FlamethrowerDos[0][0], // ptr to DO table (above)
- 2, // Frame of projectile launch.
- 0, // Frame of projectile launch while prone.
- 70, // Strength of infantry (in damage points).
- 1, // Sight range.
- 200, // Cost of infantry (in credits).
- 5, // Scenario when they first appear.
- 80,10, // Risk/Reward of this infantry unit.
- HOUSEF_MULTI1|
- HOUSEF_MULTI2|
- HOUSEF_MULTI3|
- HOUSEF_MULTI4|
- HOUSEF_MULTI5|
- HOUSEF_MULTI6|
- HOUSEF_JP|
- HOUSEF_BAD, // Who can own this infantry unit.
- WEAPON_FLAMETHROWER,WEAPON_NONE,
- MPH_SLOW_ISH
- );
- // Chemwarrior
- int ChemwarriorDos [DO_COUNT][3]={
- 0, 1, 1, // DO_STAND_READY
- 8, 1, 1, // DO_STAND_GUARD
- 256, 1,16, // DO_PRONE
- 16, 6, 6, // DO_WALK
- 64, 16,16, // DO_FIRE_WEAPON
- 192, 2, 2, // DO_LIE_DOWN
- 208, 4, 4, // DO_CRAWL
- 240, 2, 2, // DO_GET_UP
- 256, 16,16, // DO_FIRE_PRONE
- 384, 16,0, // DO_IDLE1
- 400, 16,0, // DO_IDLE2
- 416, 13,0, // DO_ON_GUARD
- 420, 10,0, // DO_FIGHT_READY
- 429, 2, 0, // DO_PUNCH
- 431, 6, 0, // DO_KICK
- 437, 2, 0, // DO_PUNCH_HIT1
- 439, 4, 0, // DO_PUNCH_HIT2
- 443, 4, 0, // DO_PUNCH_DEATH
- 447, 2, 0, // DO_KICK_HIT1
- 449, 4, 0, // DO_KICK_HIT2
- 453, 5, 0, // DO_KICK_DEATH
- 458, 5, 0, // DO_READY_WEAPON
- 510, 8, 0, // DO_GUN_DEATH
- 526, 8, 0, // DO_EXPLOSION_DEATH
- 526, 8, 0, // DO_EXPLOSION2_DEATH
- 534, 12,0, // DO_GRENADE_DEATH
- 546, 18,0, // DO_FIRE_DEATH
- 564, 3, 3, // DO_GESTURE1
- 588, 3, 3, // DO_SALUTE1
- 612, 3, 3, // DO_GESTURE2
- 636, 3, 3, // DO_SALUTE2
- 0, 1, 1, // DO_PULL_GUN // N/A
- 0, 1, 1, // DO_PLEAD // N/A
- 0, 1, 1 // DO_PLEAD_DEATH // N/A
- };
- static InfantryTypeClass const E5(
- INFANTRY_E5, // Infantry type number.
- TXT_E5, // Translate name number for infantry type.
- "E5", // INI name for infantry.
- 7, // Build level.
- STRUCTF_EYE, // Building prerequisite.
- false, // Is this a female type?
- true, // Is a leader type?
- true, // Has crawling animation frames?
- false, // Is this a civlian?
- false, // Always use the given name for the infantry?
- true, // Is this a "fraidycat" run-away type infantry?
- false, // Can this infantry type capture a building?
- false, // Theater specific graphic image?
- -1, // Number of shots it has (default).
- &ChemwarriorDos[0][0], // ptr to DO table
- 2, // Frame of projectile launch.
- 0, // Frame of projectile launch while prone.
- 70, // Strength of infantry (in damage points).
- 1, // Sight range.
- 300, // Cost of infantry (in credits).
- 99, // Scenario when they first appear.
- 80,10, // Risk/Reward of this infantry unit.
- HOUSEF_MULTI1|
- HOUSEF_MULTI2|
- HOUSEF_MULTI3|
- HOUSEF_MULTI4|
- HOUSEF_MULTI5|
- HOUSEF_MULTI6|
- HOUSEF_JP|
- // HOUSEF_GOOD|
- HOUSEF_BAD, // Who can own this infantry unit.
- WEAPON_CHEMSPRAY,WEAPON_NONE,
- MPH_SLOW
- );
- // Engineer
- int EngineerDos[DO_COUNT][3]={
- 0, 1, 1, // DO_STAND_READY
- 8, 1, 1, // DO_STAND_GUARD
- 82, 1, 4, // DO_PRONE
- 16, 6, 6, // DO_WALK
- 0, 0, 0, // DO_FIRE_WEAPON
- 67, 2, 2, // DO_LIE_DOWN
- 82, 4, 4, // DO_CRAWL
- 114, 2, 2, // DO_GET_UP
- 0, 0, 0, // DO_FIRE_PRONE
- 130, 16,0, // DO_IDLE1
- 0, 0, 0, // DO_IDLE2
- 0, 0, 0, // DO_ON_GUARD
- 0, 0, 0, // DO_FIGHT_READY
- 0, 0, 0, // DO_PUNCH
- 0, 0, 0, // DO_KICK
- 0, 0, 0, // DO_PUNCH_HIT1
- 0, 0, 0, // DO_PUNCH_HIT2
- 0, 0, 0, // DO_PUNCH_DEATH
- 0, 0, 0, // DO_KICK_HIT1
- 0, 0, 0, // DO_KICK_HIT2
- 0, 0, 0, // DO_KICK_DEATH
- 0, 0, 0, // DO_READY_WEAPON
- 146, 8, 0, // DO_GUN_DEATH
- 154, 8, 0, // DO_EXPLOSION_DEATH
- 162, 8, 0, // DO_EXPLOSION2_DEATH
- 162, 12,0, // DO_GRENADE_DEATH
- 182, 18,0, // DO_FIRE_DEATH
- 200, 3, 3, // DO_GESTURE1
- 224, 3, 3, // DO_SALUTE1
- 200, 3, 3, // DO_GESTURE2
- 224, 3, 3, // DO_SALUTE2
- 0, 1, 1, // DO_PULL_GUN // N/A
- 0, 1, 1, // DO_PLEAD // N/A
- 0, 1, 1 // DO_PLEAD_DEATH // N/A
- };
- static InfantryTypeClass const E7(
- INFANTRY_E7, // Infantry type number.
- TXT_E7, // Translate name number for infantry type.
- "E6", // INI name for infantry.
- 3, // Build level.
- STRUCTF_NONE, // Building prerequisite.
- false, // Is this a female type?
- false, // Is a leader type?
- false, // Has crawling animation frames?
- false, // Is this a civlian?
- false, // Always use the given name for the infantry?
- false, // Is this a "fraidycat" run-away type infantry?
- true, // Can this infantry type capture a building?
- false, // Theater specific graphic image?
- -1, // Number of shots it has (default).
- &EngineerDos[0][0], // ptr to DO table
- 3, // Frame of projectile launch.
- 3, // Frame of projectile launch while prone.
- 25, // Strength of infantry (in damage points).
- 2, // Sight range.
- 500, // Cost of infantry (in credits).
- 2, // Scenario when they first appear.
- 80,75, // Risk/Reward of this infantry unit.
- HOUSEF_MULTI1|
- HOUSEF_MULTI2|
- HOUSEF_MULTI3|
- HOUSEF_MULTI4|
- HOUSEF_MULTI5|
- HOUSEF_MULTI6|
- HOUSEF_JP|
- HOUSEF_BAD|
- HOUSEF_GOOD, // Who can own this infantry unit.
- WEAPON_NONE,WEAPON_NONE,
- MPH_SLOW // Maximum speed of infantry.
- );
- // Commandos
- int CommandoDos[DO_COUNT][3]={
- 0, 1, 1, // DO_STAND_READY
- 8, 1, 1, // DO_STAND_GUARD
- 160, 1, 4, // DO_PRONE
- 16, 6, 6, // DO_WALK
- 64, 4, 4, // DO_FIRE_WEAPON
- 96, 2, 2, // DO_LIE_DOWN
- 112, 4, 4, // DO_CRAWL
- 144, 2, 2, // DO_GET_UP
- 160, 4, 4, // DO_FIRE_PRONE
- 192, 16,0, // DO_IDLE1
- 208, 16,0, // DO_IDLE2
- 224, 13,0, // DO_ON_GUARD
- 228, 9, 0, // DO_FIGHT_READY
- 237, 2, 0, // DO_PUNCH
- 239, 6, 0, // DO_KICK
- 245, 2, 0, // DO_PUNCH_HIT1
- 247, 4, 0, // DO_PUNCH_HIT2
- 251, 4, 0, // DO_PUNCH_DEATH
- 255, 2, 0, // DO_KICK_HIT1
- 257, 4, 0, // DO_KICK_HIT2
- 261, 5, 0, // DO_KICK_DEATH
- 266, 5, 0, // DO_READY_WEAPON
- 318, 8, 0, // DO_GUN_DEATH
- 334, 8, 0, // DO_EXPLOSION_DEATH
- 334, 8, 0, // DO_EXPLOSION2_DEATH
- 342, 12,0, // DO_GRENADE_DEATH
- 354, 18,0, // DO_FIRE_DEATH
- 372, 3, 3, // DO_GESTURE1
- 396, 3, 3, // DO_SALUTE1
- 420, 3, 3, // DO_GESTURE2
- 444, 3, 3, // DO_SALUTE2
- 0, 1, 1, // DO_PULL_GUN // N/A
- 0, 1, 1, // DO_PLEAD // N/A
- 0, 1, 1 // DO_PLEAD_DEATH // N/A
- };
- static InfantryTypeClass const Commando(
- INFANTRY_RAMBO, // Infantry type number.
- TXT_RAMBO, // Translate name number for infantry type.
- "RMBO", // INI name for infantry.
- 7, // Build level.
- STRUCTF_EYE, // Building prerequisite.
- false, // Is this a female type?
- true, // Is a leader type?
- true, // Has crawling animation frames?
- false, // Is this a civlian?
- false, // Always use the given name for the infantry?
- false, // Is this a "fraidycat" run-away type infantry?
- true, // Can this infantry type capture a building?
- false, // Theater specific graphic image?
- -1, // Number of shots it has (default).
- &CommandoDos[0][0], // ptr to DO table
- 2, // Frame of projectile launch.
- 2, // Frame of projectile launch while prone.
- 80, // Strength of infantry (in damage points).
- 5, // Sight range.
- 1000, // Cost of infantry (in credits).
- 98, // Scenario when they first appear.
- 80,75, // Risk/Reward of this infantry unit.
- HOUSEF_MULTI1|
- HOUSEF_MULTI2|
- HOUSEF_MULTI3|
- HOUSEF_MULTI4|
- HOUSEF_MULTI5|
- HOUSEF_MULTI6|
- HOUSEF_JP|
- HOUSEF_GOOD|
- HOUSEF_BAD, // Who can own this infantry unit.
- WEAPON_RIFLE,WEAPON_NONE,
- MPH_SLOW_ISH // Maximum speed of infantry.
- );
- // Civilians
- int CivilianDos1[DO_COUNT][3]={
- 0, 1, 1, // DO_STAND_READY
- 0, 1, 1, // DO_STAND_GUARD
- 0, 1, 1, // DO_PRONE // N/A
- 56, 6, 6, // DO_WALK
- 205, 4, 4, // DO_FIRE_WEAPON
- 0, 1, 1, // DO_LIE_DOWN // N/A
- 8, 6, 6, // DO_CRAWL
- 0, 1, 1, // DO_GET_UP // N/A
- 205, 4, 4, // DO_FIRE_PRONE
- 189, 10,0, // DO_IDLE1
- 199, 6, 0, // DO_IDLE2
- 104, 3, 0, // DO_ON_GUARD
- 107, 7, 0, // DO_FIGHT_READY
- 114, 2, 0, // DO_PUNCH
- 116, 6, 0, // DO_KICK
- 122, 2, 0, // DO_PUNCH_HIT1
- 124, 4, 0, // DO_PUNCH_HIT2
- 128, 4, 0, // DO_PUNCH_DEATH
- 133, 2, 0, // DO_KICK_HIT1
- 135, 4, 0, // DO_KICK_HIT2
- 139, 5, 0, // DO_KICK_DEATH
- 144, 3, 0, // DO_READY_WEAPON
- 329, 8, 0, // DO_GUN_DEATH
- 337, 8, 0, // DO_EXPLOSION_DEATH
- 337, 8, 0, // DO_EXPLOSION2_DEATH
- 345, 12,0, // DO_GRENADE_DEATH
- 357, 18,0, // DO_FIRE_DEATH
- 0, 0, 0, // DO_GESTURE1 // N/A
- 0, 0, 0, // DO_SALUTE1 // N/A
- 0, 0, 0, // DO_GESTURE2 // N/A
- 0, 0, 0, // DO_SALUTE2 // N/A
- 199, 6, 0, // DO_PULL_GUN
- 237, 40,0, // DO_PLEAD
- 277, 6, 0 // DO_PLEAD_DEATH
- };
- static InfantryTypeClass const C1(
- INFANTRY_C1, // Infantry type number.
- TXT_C1, // Translate name number for infantry type.
- "C1", // INI name for infantry.
- 99, // Build level.
- STRUCTF_NONE, // Building prerequisite.
- false, // Is this a female type?
- true, // Is a leader type?
- false, // Has crawling animation frames?
- true, // Is this a civlian?
- true, // Always use the given name for the infantry?
- true, // Is this a "fraidycat" run-away type infantry?
- false, // Can this infantry type capture a building?
- false, // Theater specific graphic image?
- 10, // Number of shots it has (default).
- &CivilianDos1[0][0], // ptr to DO table
- 2, // Frame of projectile launch.
- 0, // Frame of projectile launch while prone.
- 25, // Strength of infantry (in damage points).
- 0, // Sight range.
- 10, // Cost of infantry (in credits).
- 99, // Scenario when they first appear.
- 0,1, // Risk/Reward of this infantry unit.
- HOUSEF_MULTI1|
- HOUSEF_MULTI2|
- HOUSEF_MULTI3|
- HOUSEF_MULTI4|
- HOUSEF_MULTI5|
- HOUSEF_MULTI6|
- HOUSEF_JP|
- HOUSEF_GOOD|
- HOUSEF_BAD|
- HOUSEF_NEUTRAL, // Who can own this infantry unit.
- WEAPON_PISTOL,WEAPON_NONE,
- MPH_SLOW_ISH
- );
- int CivilianDos2[DO_COUNT][3]={
- 0, 1, 1, // DO_STAND_READY
- 0, 1, 1, // DO_STAND_GUARD
- 0, 1, 1, // DO_PRONE // N/A
- 56, 6, 6, // DO_WALK
- 205, 4, 4, // DO_FIRE_WEAPON
- 0, 1, 1, // DO_LIE_DOWN // N/A
- 8, 6, 6, // DO_CRAWL
- 0, 1, 1, // DO_GET_UP // N/A
- 205, 4, 4, // DO_FIRE_PRONE
- 189, 10,0, // DO_IDLE1
- 199, 6, 0, // DO_IDLE2
- 104, 3, 0, // DO_ON_GUARD
- 107, 7, 0, // DO_FIGHT_READY
- 114, 2, 0, // DO_PUNCH
- 116, 6, 0, // DO_KICK
- 122, 2, 0, // DO_PUNCH_HIT1
- 124, 4, 0, // DO_PUNCH_HIT2
- 128, 4, 0, // DO_PUNCH_DEATH
- 133, 2, 0, // DO_KICK_HIT1
- 135, 4, 0, // DO_KICK_HIT2
- 139, 5, 0, // DO_KICK_DEATH
- 144, 3, 0, // DO_READY_WEAPON
- 329, 8, 0, // DO_GUN_DEATH
- 337, 8, 0, // DO_EXPLOSION_DEATH
- 337, 8, 0, // DO_EXPLOSION2_DEATH
- 345, 12,0, // DO_GRENADE_DEATH
- 357, 18,0, // DO_FIRE_DEATH
- 0, 0, 0, // DO_GESTURE1 // N/A
- 0, 0, 0, // DO_SALUTE1 // N/A
- 0, 0, 0, // DO_GESTURE2 // N/A
- 0, 0, 0, // DO_SALUTE2 // N/A
- 199, 6, 0, // DO_PULL_GUN
- 237, 40,0, // DO_PLEAD
- 277, 6, 0 // DO_PLEAD_DEATH
- };
- static InfantryTypeClass const C2(
- INFANTRY_C2, // Infantry type number.
- TXT_C2, // Translate name number for infantry type.
- "C2", // INI name for infantry.
- 99, // Build level.
- STRUCTF_NONE, // Building prerequisite.
- false, // Is this a female type?
- false, // Is a leader type?
- false, // Has crawling animation frames?
- true, // Is this a civlian?
- true, // Always use the given name for the infantry?
- true, // Is this a "fraidycat" run-away type infantry?
- false, // Can this infantry type capture a building?
- false, // Theater specific graphic image?
- 0, // Number of shots it has (default).
- &CivilianDos2[0][0], // ptr to DO table
- 2, // Frame of projectile launch.
- 0, // Frame of projectile launch while prone.
- 5, // Strength of infantry (in damage points).
- 0, // Sight range.
- 10, // Cost of infantry (in credits).
- 99, // Scenario when they first appear.
- 0,1, // Risk/Reward of this infantry unit.
- HOUSEF_MULTI1|
- HOUSEF_MULTI2|
- HOUSEF_MULTI3|
- HOUSEF_MULTI4|
- HOUSEF_MULTI5|
- HOUSEF_MULTI6|
- HOUSEF_JP|
- HOUSEF_GOOD|
- HOUSEF_BAD|
- HOUSEF_NEUTRAL, // Who can own this infantry unit.
- WEAPON_NONE,WEAPON_NONE,
- MPH_SLOW_ISH
- );
- int CivilianDos3[DO_COUNT][3]={
- 0, 1, 1, // DO_STAND_READY
- 0, 1, 1, // DO_STAND_GUARD
- 0, 1, 1, // DO_PRONE // N/A
- 56, 6, 6, // DO_WALK
- 205, 4, 4, // DO_FIRE_WEAPON
- 0, 1, 1, // DO_LIE_DOWN // N/A
- 8, 6, 6, // DO_CRAWL
- 0, 1, 1, // DO_GET_UP // N/A
- 205, 4, 4, // DO_FIRE_PRONE
- 189, 10,0, // DO_IDLE1
- 199, 6, 0, // DO_IDLE2
- 104, 3, 0, // DO_ON_GUARD
- 107, 7, 0, // DO_FIGHT_READY
- 114, 2, 0, // DO_PUNCH
- 116, 6, 0, // DO_KICK
- 122, 2, 0, // DO_PUNCH_HIT1
- 124, 4, 0, // DO_PUNCH_HIT2
- 128, 4, 0, // DO_PUNCH_DEATH
- 133, 2, 0, // DO_KICK_HIT1
- 135, 4, 0, // DO_KICK_HIT2
- 139, 5, 0, // DO_KICK_DEATH
- 144, 3, 0, // DO_READY_WEAPON
- 329, 8, 0, // DO_GUN_DEATH
- 337, 8, 0, // DO_EXPLOSION_DEATH
- 337, 8, 0, // DO_EXPLOSION2_DEATH
- 345, 12,0, // DO_GRENADE_DEATH
- 357, 18,0, // DO_FIRE_DEATH
- 0, 0, 0, // DO_GESTURE1 // N/A
- 0, 0, 0, // DO_SALUTE1 // N/A
- 0, 0, 0, // DO_GESTURE2 // N/A
- 0, 0, 0, // DO_SALUTE2 // N/A
- 199, 6, 0, // DO_PULL_GUN
- 237, 40,0, // DO_PLEAD
- 277, 6, 0 // DO_PLEAD_DEATH
- };
- static InfantryTypeClass const C3(
- INFANTRY_C3, // Infantry type number.
- TXT_C3, // Translate name number for infantry type.
- "C3", // INI name for infantry.
- 99, // Build level.
- STRUCTF_NONE, // Building prerequisite.
- true, // Is this a female type?
- false, // Is a leader type?
- false, // Has crawling animation frames?
- true, // Is this a civlian?
- true, // Always use the given name for the infantry?
- true, // Is this a "fraidycat" run-away type infantry?
- false, // Can this infantry type capture a building?
- false, // Theater specific graphic image?
- 0, // Number of shots it has (default).
- &CivilianDos3[0][0], // ptr to DO table
- 2, // Frame of projectile launch.
- 0, // Frame of projectile launch while prone.
- 5, // Strength of infantry (in damage points).
- 0, // Sight range.
- 10, // Cost of infantry (in credits).
- 99, // Scenario when they first appear.
- 0,1, // Risk/Reward of this infantry unit.
- HOUSEF_MULTI1|
- HOUSEF_MULTI2|
- HOUSEF_MULTI3|
- HOUSEF_MULTI4|
- HOUSEF_MULTI5|
- HOUSEF_MULTI6|
- HOUSEF_JP|
- HOUSEF_GOOD|
- HOUSEF_BAD|
- HOUSEF_NEUTRAL, // Who can own this infantry unit.
- WEAPON_NONE,WEAPON_NONE,
- MPH_SLOW_ISH
- );
- int CivilianDos4[DO_COUNT][3]={
- 0, 1, 1, // DO_STAND_READY
- 0, 1, 1, // DO_STAND_GUARD
- 0, 1, 1, // DO_PRONE // N/A
- 56, 6, 6, // DO_WALK
- 205, 4, 4, // DO_FIRE_WEAPON
- 0, 1, 1, // DO_LIE_DOWN // N/A
- 8, 6, 6, // DO_CRAWL
- 0, 1, 1, // DO_GET_UP // N/A
- 205, 4, 4, // DO_FIRE_PRONE
- 189, 10,0, // DO_IDLE1
- 199, 6, 0, // DO_IDLE2
- 104, 3, 0, // DO_ON_GUARD
- 107, 7, 0, // DO_FIGHT_READY
- 114, 2, 0, // DO_PUNCH
- 116, 6, 0, // DO_KICK
- 122, 2, 0, // DO_PUNCH_HIT1
- 124, 4, 0, // DO_PUNCH_HIT2
- 128, 4, 0, // DO_PUNCH_DEATH
- 133, 2, 0, // DO_KICK_HIT1
- 135, 4, 0, // DO_KICK_HIT2
- 139, 5, 0, // DO_KICK_DEATH
- 144, 3, 0, // DO_READY_WEAPON
- 329, 8, 0, // DO_GUN_DEATH
- 337, 8, 0, // DO_EXPLOSION_DEATH
- 337, 8, 0, // DO_EXPLOSION2_DEATH
- 345, 12,0, // DO_GRENADE_DEATH
- 357, 18,0, // DO_FIRE_DEATH
- 0, 0, 0, // DO_GESTURE1 // N/A
- 0, 0, 0, // DO_SALUTE1 // N/A
- 0, 0, 0, // DO_GESTURE2 // N/A
- 0, 0, 0, // DO_SALUTE2 // N/A
- 199, 6, 0, // DO_PULL_GUN
- 237, 40,0, // DO_PLEAD
- 277, 6, 0, // DO_PLEAD_DEATH
- };
- static InfantryTypeClass const C4(
- INFANTRY_C4, // Infantry type number.
- TXT_C4, // Translate name number for infantry type.
- "C4", // INI name for infantry.
- 99, // Build level.
- STRUCTF_NONE, // Building prerequisite.
- true, // Is this a female type?
- false, // Is a leader type?
- false, // Has crawling animation frames?
- true, // Is this a civlian?
- true, // Always use the given name for the infantry?
- true, // Is this a "fraidycat" run-away type infantry?
- false, // Can this infantry type capture a building?
- false, // Theater specific graphic image?
- 0, // Number of shots it has (default).
- &CivilianDos4[0][0], // ptr to DO table
- 2, // Frame of projectile launch.
- 0, // Frame of projectile launch while prone.
- 5, // Strength of infantry (in damage points).
- 0, // Sight range.
- 10, // Cost of infantry (in credits).
- 99, // Scenario when they first appear.
- 0,1, // Risk/Reward of this infantry unit.
- HOUSEF_MULTI1|
- HOUSEF_MULTI2|
- HOUSEF_MULTI3|
- HOUSEF_MULTI4|
- HOUSEF_MULTI5|
- HOUSEF_MULTI6|
- HOUSEF_JP|
- HOUSEF_GOOD|
- HOUSEF_BAD|
- HOUSEF_NEUTRAL, // Who can own this infantry unit.
- WEAPON_NONE,WEAPON_NONE,
- MPH_SLOW_ISH
- );
- int CivilianDos5[DO_COUNT][3]={
- 0, 1, 1, // DO_STAND_READY
- 0, 1, 1, // DO_STAND_GUARD
- 0, 1, 1, // DO_PRONE // N/A
- 56, 6, 6, // DO_WALK
- 205, 4, 4, // DO_FIRE_WEAPON
- 0, 1, 1, // DO_LIE_DOWN // N/A
- 8, 6, 6, // DO_CRAWL
- 0, 1, 1, // DO_GET_UP // N/A
- 205, 4, 4, // DO_FIRE_PRONE
- 189, 10,0, // DO_IDLE1
- 199, 6, 0, // DO_IDLE2
- 104, 3, 0, // DO_ON_GUARD
- 107, 7, 0, // DO_FIGHT_READY
- 114, 2, 0, // DO_PUNCH
- 116, 6, 0, // DO_KICK
- 122, 2, 0, // DO_PUNCH_HIT1
- 124, 4, 0, // DO_PUNCH_HIT2
- 128, 4, 0, // DO_PUNCH_DEATH
- 133, 2, 0, // DO_KICK_HIT1
- 135, 4, 0, // DO_KICK_HIT2
- 139, 5, 0, // DO_KICK_DEATH
- 144, 3, 0, // DO_READY_WEAPON
- 329, 8, 0, // DO_GUN_DEATH
- 337, 8, 0, // DO_EXPLOSION_DEATH
- 337, 8, 0, // DO_EXPLOSION2_DEATH
- 345, 12,0, // DO_GRENADE_DEATH
- 357, 18,0, // DO_FIRE_DEATH
- 0, 0, 0, // DO_GESTURE1 // N/A
- 0, 0, 0, // DO_SALUTE1 // N/A
- 0, 0, 0, // DO_GESTURE2 // N/A
- 0, 0, 0, // DO_SALUTE2 // N/A
- 199, 6, 0, // DO_PULL_GUN
- 237, 40,0, // DO_PLEAD
- 277, 6, 0 // DO_PLEAD_DEATH
- };
- static InfantryTypeClass const C5(
- INFANTRY_C5, // Infantry type number.
- TXT_C5, // Translate name number for infantry type.
- "C5", // INI name for infantry.
- 99, // Build level.
- STRUCTF_NONE, // Building prerequisite.
- false, // Is this a female type?
- false, // Is a leader type?
- false, // Has crawling animation frames?
- true, // Is this a civlian?
- true, // Always use the given name for the infantry?
- true, // Is this a "fraidycat" run-away type infantry?
- false, // Can this infantry type capture a building?
- false, // Theater specific graphic image?
- 0, // Number of shots it has (default).
- &CivilianDos5[0][0], // ptr to DO table
- 2, // Frame of projectile launch.
- 0, // Frame of projectile launch while prone.
- 5, // Strength of infantry (in damage points).
- 0, // Sight range.
- 10, // Cost of infantry (in credits).
- 99, // Scenario when they first appear.
- 0,1, // Risk/Reward of this infantry unit.
- HOUSEF_MULTI1|
- HOUSEF_MULTI2|
- HOUSEF_MULTI3|
- HOUSEF_MULTI4|
- HOUSEF_MULTI5|
- HOUSEF_MULTI6|
- HOUSEF_JP|
- HOUSEF_GOOD|
- HOUSEF_BAD|
- HOUSEF_NEUTRAL, // Who can own this infantry unit.
- WEAPON_NONE,WEAPON_NONE,
- MPH_SLOW_ISH
- );
- int CivilianDos6[DO_COUNT][3]={
- 0, 1, 1, // DO_STAND_READY
- 0, 1, 1, // DO_STAND_GUARD
- 0, 1, 1, // DO_PRONE // N/A
- 56, 6, 6, // DO_WALK
- 205, 4, 4, // DO_FIRE_WEAPON
- 0, 1, 1, // DO_LIE_DOWN // N/A
- 8, 6, 6, // DO_CRAWL
- 0, 1, 1, // DO_GET_UP // N/A
- 205, 4, 4, // DO_FIRE_PRONE
- 189, 10,0, // DO_IDLE1
- 199, 6, 0, // DO_IDLE2
- 104, 3, 0, // DO_ON_GUARD
- 107, 7, 0, // DO_FIGHT_READY
- 114, 2, 0, // DO_PUNCH
- 116, 6, 0, // DO_KICK
- 122, 2, 0, // DO_PUNCH_HIT1
- 124, 4, 0, // DO_PUNCH_HIT2
- 128, 4, 0, // DO_PUNCH_DEATH
- 133, 2, 0, // DO_KICK_HIT1
- 135, 4, 0, // DO_KICK_HIT2
- 139, 5, 0, // DO_KICK_DEATH
- 144, 3, 0, // DO_READY_WEAPON
- 329, 8, 0, // DO_GUN_DEATH
- 337, 8, 0, // DO_EXPLOSION_DEATH
- 337, 8, 0, // DO_EXPLOSION2_DEATH
- 345, 12,0, // DO_GRENADE_DEATH
- 357, 18,0, // DO_FIRE_DEATH
- 0, 0, 0, // DO_GESTURE1 // N/A
- 0, 0, 0, // DO_SALUTE1 // N/A
- 0, 0, 0, // DO_GESTURE2 // N/A
- 0, 0, 0, // DO_SALUTE2 // N/A
- 199, 6, 0, // DO_PULL_GUN
- 237, 40,0, // DO_PLEAD
- 277, 6, 0 // DO_PLEAD_DEATH
- };
- static InfantryTypeClass const C6(
- INFANTRY_C6, // Infantry type number.
- TXT_C6, // Translate name number for infantry type.
- "C6", // INI name for infantry.
- 99, // Build level.
- STRUCTF_NONE, // Building prerequisite.
- false, // Is this a female type?
- false, // Is a leader type?
- false, // Has crawling animation frames?
- true, // Is this a civlian?
- true, // Always use the given name for the infantry?
- true, // Is this a "fraidycat" run-away type infantry?
- false, // Can this infantry type capture a building?
- false, // Theater specific graphic image?
- 0, // Number of shots it has (default).
- &CivilianDos6[0][0], // ptr to DO table
- 2, // Frame of projectile launch.
- 0, // Frame of projectile launch while prone.
- 5, // Strength of infantry (in damage points).
- 0, // Sight range.
- 10, // Cost of infantry (in credits).
- 99, // Scenario when they first appear.
- 0,1, // Risk/Reward of this infantry unit.
- HOUSEF_MULTI1|
- HOUSEF_MULTI2|
- HOUSEF_MULTI3|
- HOUSEF_MULTI4|
- HOUSEF_MULTI5|
- HOUSEF_MULTI6|
- HOUSEF_JP|
- HOUSEF_GOOD|
- HOUSEF_BAD|
- HOUSEF_NEUTRAL, // Who can own this infantry unit.
- WEAPON_NONE,WEAPON_NONE,
- MPH_SLOW_ISH
- );
- int CivilianDos7[DO_COUNT][3]={
- 0, 1, 1, // DO_STAND_READY
- 0, 1, 1, // DO_STAND_GUARD
- 0, 1, 1, // DO_PRONE // N/A
- 56, 6, 6, // DO_WALK
- 205, 4, 4, // DO_FIRE_WEAPON
- 0, 1, 1, // DO_LIE_DOWN // N/A
- 8, 6, 6, // DO_CRAWL
- 0, 1, 1, // DO_GET_UP // N/A
- 205, 4, 4, // DO_FIRE_PRONE
- 189, 10,0, // DO_IDLE1
- 199, 6, 0, // DO_IDLE2
- 104, 3, 0, // DO_ON_GUARD
- 107, 7, 0, // DO_FIGHT_READY
- 114, 2, 0, // DO_PUNCH
- 116, 6, 0, // DO_KICK
- 122, 2, 0, // DO_PUNCH_HIT1
- 124, 4, 0, // DO_PUNCH_HIT2
- 128, 4, 0, // DO_PUNCH_DEATH
- 133, 2, 0, // DO_KICK_HIT1
- 135, 4, 0, // DO_KICK_HIT2
- 139, 5, 0, // DO_KICK_DEATH
- 144, 3, 0, // DO_READY_WEAPON
- 329, 8, 0, // DO_GUN_DEATH
- 337, 8, 0, // DO_EXPLOSION_DEATH
- 337, 8, 0, // DO_EXPLOSION2_DEATH
- 345, 12,0, // DO_GRENADE_DEATH
- 357, 18,0, // DO_FIRE_DEATH
- 0, 0, 0, // DO_GESTURE1 // N/A
- 0, 0, 0, // DO_SALUTE1 // N/A
- 0, 0, 0, // DO_GESTURE2 // N/A
- 0, 0, 0, // DO_SALUTE2 // N/A
- 199, 6, 0, // DO_PULL_GUN
- 237, 40,0, // DO_PLEAD
- 277, 6, 0 // DO_PLEAD_DEATH
- };
- static InfantryTypeClass const C7(
- INFANTRY_C7, // Infantry type number.
- TXT_C7, // Translate name number for infantry type.
- "C7", // INI name for infantry.
- 99, // Build level.
- STRUCTF_NONE, // Building prerequisite.
- false, // Is this a female type?
- true, // Is a leader type?
- false, // Has crawling animation frames?
- true, // Is this a civlian?
- true, // Always use the given name for the infantry?
- true, // Is this a "fraidycat" run-away type infantry?
- false, // Can this infantry type capture a building?
- false, // Theater specific graphic image?
- 10, // Number of shots it has (default).
- &CivilianDos7[0][0], // ptr to DO table
- 2, // Frame of projectile launch.
- 0, // Frame of projectile launch while prone.
- 5, // Strength of infantry (in damage points).
- 0, // Sight range.
- 10, // Cost of infantry (in credits).
- 99, // Scenario when they first appear.
- 0,1, // Risk/Reward of this infantry unit.
- HOUSEF_MULTI1|
- HOUSEF_MULTI2|
- HOUSEF_MULTI3|
- HOUSEF_MULTI4|
- HOUSEF_MULTI5|
- HOUSEF_MULTI6|
- HOUSEF_JP|
- HOUSEF_GOOD|
- HOUSEF_BAD|
- HOUSEF_NEUTRAL, // Who can own this infantry unit.
- WEAPON_PISTOL,WEAPON_NONE,
- MPH_SLOW_ISH
- );
- int CivilianDos8[DO_COUNT][3]={
- 0, 1, 1, // DO_STAND_READY
- 0, 1, 1, // DO_STAND_GUARD
- 0, 1, 1, // DO_PRONE // N/A
- 56, 6, 6, // DO_WALK
- 205, 4, 4, // DO_FIRE_WEAPON
- 0, 1, 1, // DO_LIE_DOWN // N/A
- 8, 6, 6, // DO_CRAWL
- 0, 1, 1, // DO_GET_UP // N/A
- 205, 4, 4, // DO_FIRE_PRONE
- 189, 10,0, // DO_IDLE1
- 199, 6, 0, // DO_IDLE2
- 104, 3, 0, // DO_ON_GUARD
- 107, 7, 0, // DO_FIGHT_READY
- 114, 2, 0, // DO_PUNCH
- 116, 6, 0, // DO_KICK
- 122, 2, 0, // DO_PUNCH_HIT1
- 124, 4, 0, // DO_PUNCH_HIT2
- 128, 4, 0, // DO_PUNCH_DEATH
- 133, 2, 0, // DO_KICK_HIT1
- 135, 4, 0, // DO_KICK_HIT2
- 139, 5, 0, // DO_KICK_DEATH
- 144, 3, 0, // DO_READY_WEAPON
- 329, 8, 0, // DO_GUN_DEATH
- 337, 8, 0, // DO_EXPLOSION_DEATH
- 337, 8, 0, // DO_EXPLOSION2_DEATH
- 345, 12,0, // DO_GRENADE_DEATH
- 357, 18,0, // DO_FIRE_DEATH
- 0, 0, 0, // DO_GESTURE1 // N/A
- 0, 0, 0, // DO_SALUTE1 // N/A
- 0, 0, 0, // DO_GESTURE2 // N/A
- 0, 0, 0, // DO_SALUTE2 // N/A
- 199, 6, 0, // DO_PULL_GUN
- 237, 40,0, // DO_PLEAD
- 277, 6, 0 // DO_PLEAD_DEATH
- };
- static InfantryTypeClass const C8(
- INFANTRY_C8, // Infantry type number.
- TXT_C8, // Translate name number for infantry type.
- "C8", // INI name for infantry.
- 99, // Build level.
- STRUCTF_NONE, // Building prerequisite.
- false, // Is this a female type?
- false, // Is a leader type?
- false, // Has crawling animation frames?
- true, // Is this a civlian?
- true, // Always use the given name for the infantry?
- true, // Is this a "fraidycat" run-away type infantry?
- false, // Can this infantry type capture a building?
- false, // Theater specific graphic image?
- 0, // Number of shots it has (default).
- &CivilianDos8[0][0], // ptr to DO table
- 2, // Frame of projectile launch.
- 0, // Frame of projectile launch while prone.
- 5, // Strength of infantry (in damage points).
- 0, // Sight range.
- 10, // Cost of infantry (in credits).
- 99, // Scenario when they first appear.
- 0,1, // Risk/Reward of this infantry unit.
- HOUSEF_MULTI1|
- HOUSEF_MULTI2|
- HOUSEF_MULTI3|
- HOUSEF_MULTI4|
- HOUSEF_MULTI5|
- HOUSEF_MULTI6|
- HOUSEF_JP|
- HOUSEF_GOOD|
- HOUSEF_BAD|
- HOUSEF_NEUTRAL, // Who can own this infantry unit.
- WEAPON_NONE,WEAPON_NONE,
- MPH_SLOW_ISH
- );
- int CivilianDos9[DO_COUNT][3]={
- 0, 1, 1, // DO_STAND_READY
- 0, 1, 1, // DO_STAND_GUARD
- 0, 1, 1, // DO_PRONE // N/A
- 56, 6, 6, // DO_WALK
- 205, 4, 4, // DO_FIRE_WEAPON
- 0, 1, 1, // DO_LIE_DOWN // N/A
- 8, 6, 6, // DO_CRAWL
- 0, 1, 1, // DO_GET_UP // N/A
- 205, 4, 4, // DO_FIRE_PRONE
- 189, 10,0, // DO_IDLE1
- 199, 6, 0, // DO_IDLE2
- 104, 3, 0, // DO_ON_GUARD
- 107, 7, 0, // DO_FIGHT_READY
- 114, 2, 0, // DO_PUNCH
- 116, 6, 0, // DO_KICK
- 122, 2, 0, // DO_PUNCH_HIT1
- 124, 4, 0, // DO_PUNCH_HIT2
- 128, 4, 0, // DO_PUNCH_DEATH
- 133, 2, 0, // DO_KICK_HIT1
- 135, 4, 0, // DO_KICK_HIT2
- 139, 5, 0, // DO_KICK_DEATH
- 144, 3, 0, // DO_READY_WEAPON
- 329, 8, 0, // DO_GUN_DEATH
- 337, 8, 0, // DO_EXPLOSION_DEATH
- 337, 8, 0, // DO_EXPLOSION2_DEATH
- 345, 12,0, // DO_GRENADE_DEATH
- 357, 18,0, // DO_FIRE_DEATH
- 0, 0, 0, // DO_GESTURE1 // N/A
- 0, 0, 0, // DO_SALUTE1 // N/A
- 0, 0, 0, // DO_GESTURE2 // N/A
- 0, 0, 0, // DO_SALUTE2 // N/A
- 199, 6, 0, // DO_PULL_GUN
- 237, 40,0, // DO_PLEAD
- 277, 6, 0 // DO_PLEAD_DEATH
- };
- static InfantryTypeClass const C9(
- INFANTRY_C9, // Infantry type number.
- TXT_C9, // Translate name number for infantry type.
- "C9", // INI name for infantry.
- 99, // Build level.
- STRUCTF_NONE, // Building prerequisite.
- false, // Is this a female type?
- false, // Is a leader type?
- false, // Has crawling animation frames?
- true, // Is this a civlian?
- true, // Always use the given name for the infantry?
- true, // Is this a "fraidycat" run-away type infantry?
- false, // Can this infantry type capture a building?
- false, // Theater specific graphic image?
- 0, // Number of shots it has (default).
- &CivilianDos9[0][0], // ptr to DO table
- 2, // Frame of projectile launch.
- 0, // Frame of projectile launch while prone.
- 5, // Strength of infantry (in damage points).
- 0, // Sight range.
- 10, // Cost of infantry (in credits).
- 99, // Scenario when they first appear.
- 0,1, // Risk/Reward of this infantry unit.
- HOUSEF_MULTI1|
- HOUSEF_MULTI2|
- HOUSEF_MULTI3|
- HOUSEF_MULTI4|
- HOUSEF_MULTI5|
- HOUSEF_MULTI6|
- HOUSEF_JP|
- HOUSEF_GOOD|
- HOUSEF_BAD|
- HOUSEF_NEUTRAL, // Who can own this infantry unit.
- WEAPON_NONE,WEAPON_NONE,
- MPH_SLOW_ISH
- );
- int NikoombaDos[DO_COUNT][3]={
- 0, 1, 1, // DO_STAND_READY
- 0, 1, 1, // DO_STAND_GUARD
- 0, 1, 1, // DO_PRONE // N/A
- 56, 6, 6, // DO_WALK
- 205, 4, 4, // DO_FIRE_WEAPON
- 0, 1, 1, // DO_LIE_DOWN // N/A
- 8, 6, 6, // DO_CRAWL
- 0, 1, 1, // DO_GET_UP // N/A
- 205, 4, 4, // DO_FIRE_PRONE
- 189, 10,0, // DO_IDLE1
- 199, 6, 0, // DO_IDLE2
- 104, 3, 0, // DO_ON_GUARD
- 107, 7, 0, // DO_FIGHT_READY
- 114, 2, 0, // DO_PUNCH
- 116, 6, 0, // DO_KICK
- 122, 2, 0, // DO_PUNCH_HIT1
- 124, 4, 0, // DO_PUNCH_HIT2
- 128, 4, 0, // DO_PUNCH_DEATH
- 133, 2, 0, // DO_KICK_HIT1
- 135, 4, 0, // DO_KICK_HIT2
- 139, 5, 0, // DO_KICK_DEATH
- 144, 3, 0, // DO_READY_WEAPON
- 329, 8, 0, // DO_GUN_DEATH
- 337, 8, 0, // DO_EXPLOSION_DEATH
- 337, 8, 0, // DO_EXPLOSION2_DEATH
- 345, 12,0, // DO_GRENADE_DEATH
- 357, 18,0, // DO_FIRE_DEATH
- 0, 0, 0, // DO_GESTURE1 // N/A
- 0, 0, 0, // DO_SALUTE1 // N/A
- 0, 0, 0, // DO_GESTURE2 // N/A
- 0, 0, 0, // DO_SALUTE2 // N/A
- 199, 6, 0, // DO_PULL_GUN
- 237, 40,0, // DO_PLEAD
- 277, 6, 0, // DO_PLEAD_DEATH
- };
- // Nikoomba
- static InfantryTypeClass const C10(
- INFANTRY_C10, // Infantry type number.
- TXT_C10, // Translate name number for infantry type.
- "C10", // INI name for infantry.
- 99, // Build level.
- STRUCTF_NONE, // Building prerequisite.
- false, // Is this a female type?
- false, // Is a leader type?
- false, // Has crawling animation frames?
- true, // Is this a civlian?
- true, // Always use the given name for the infantry?
- true, // Is this a "fraidycat" run-away type infantry?
- false, // Can this infantry type capture a building?
- false, // Theater specific graphic image?
- 0, // Number of shots it has (default).
- &NikoombaDos[0][0], // ptr to DO table
- 2, // Frame of projectile launch.
- 0, // Frame of projectile launch while prone.
- 50, // Strength of infantry (in damage points).
- 0, // Sight range.
- 10, // Cost of infantry (in credits).
- 99, // Scenario when they first appear.
- 0,1, // Risk/Reward of this infantry unit.
- HOUSEF_MULTI1|
- HOUSEF_MULTI2|
- HOUSEF_MULTI3|
- HOUSEF_MULTI4|
- HOUSEF_MULTI5|
- HOUSEF_MULTI6|
- HOUSEF_JP|
- HOUSEF_GOOD|
- HOUSEF_BAD|
- HOUSEF_NEUTRAL, // Who can own this infantry unit.
- WEAPON_NONE,WEAPON_NONE,
- MPH_SLOW_ISH
- );
- int MoebiusDos[DO_COUNT][3]={
- 0, 1, 1, // DO_STAND_READY
- 0, 1, 1, // DO_STAND_GUARD
- 0, 1, 1, // DO_PRONE // N/A
- 56, 6, 6, // DO_WALK
- 205, 4, 4, // DO_FIRE_WEAPON
- 0, 1, 1, // DO_LIE_DOWN // N/A
- 8, 6, 6, // DO_CRAWL
- 0, 1, 1, // DO_GET_UP // N/A
- 0, 0, 0, // DO_FIRE_PRONE
- 104, 16,0, // DO_IDLE1
- 120, 20,0, // DO_IDLE2
- 0, 0, 0, // DO_ON_GUARD
- 0, 0, 0, // DO_FIGHT_READY
- 0, 0, 0, // DO_PUNCH
- 0, 0, 0, // DO_KICK
- 0, 0, 0, // DO_PUNCH_HIT1
- 0, 0, 0, // DO_PUNCH_HIT2
- 0, 0, 0, // DO_PUNCH_DEATH
- 0, 0, 0, // DO_KICK_HIT1
- 0, 0, 0, // DO_KICK_HIT2
- 0, 0, 0, // DO_KICK_DEATH
- 0, 0, 0, // DO_READY_WEAPON
- 212, 8, 0, // DO_GUN_DEATH
- 220, 8, 0, // DO_EXPLOSION_DEATH
- 228, 12,0, // DO_EXPLOSION2_DEATH
- 228, 12,0, // DO_GRENADE_DEATH
- 240, 18,0, // DO_FIRE_DEATH
- 0, 0, 0, // DO_GESTURE1 // N/A
- 0, 0, 0, // DO_SALUTE1 // N/A
- 0, 0, 0, // DO_GESTURE2 // N/A
- 0, 0, 0, // DO_SALUTE2 // N/A
- 0, 0, 0, // DO_PULL_GUN
- 120, 31,0, // DO_PLEAD
- 151, 14,0 // DO_PLEAD_DEATH
- };
- static InfantryTypeClass const Moebius(
- INFANTRY_MOEBIUS, // Infantry type number.
- TXT_MOEBIUS, // Translate name number for infantry type.
- "MOEBIUS", // INI name for infantry.
- 99, // Build level.
- STRUCTF_NONE, // Building prerequisite.
- false, // Is this a female type?
- false, // Is a leader type?
- false, // Has crawling animation frames?
- true, // Is this a civlian?
- true, // Always use the given name for the infantry?
- true, // Is this a "fraidycat" run-away type infantry?
- false, // Can this infantry type capture a building?
- false, // Theater specific graphic image?
- 0, // Number of shots it has (default).
- &MoebiusDos[0][0], // ptr to DO table
- 0, // Frame of projectile launch.
- 0, // Frame of projectile launch while prone.
- 50, // Strength of infantry (in damage points).
- 0, // Sight range.
- 10, // Cost of infantry (in credits).
- 99, // Scenario when they first appear.
- 0,10, // Risk/Reward of this infantry unit.
- HOUSEF_MULTI1|
- HOUSEF_MULTI2|
- HOUSEF_MULTI3|
- HOUSEF_MULTI4|
- HOUSEF_MULTI5|
- HOUSEF_MULTI6|
- HOUSEF_JP|
- HOUSEF_GOOD|
- HOUSEF_BAD|
- HOUSEF_NEUTRAL, // Who can own this infantry unit.
- WEAPON_NONE,WEAPON_NONE,
- MPH_SLOW_ISH
- );
- int DelphiDos[DO_COUNT][3]={
- 0, 1, 1, // DO_STAND_READY
- 0, 1, 1, // DO_STAND_GUARD
- 0, 1, 1, // DO_PRONE // N/A
- 56, 6, 6, // DO_WALK
- 205, 4, 4, // DO_FIRE_WEAPON
- 0, 1, 1, // DO_LIE_DOWN // N/A
- 8, 6, 6, // DO_CRAWL
- 0, 1, 1, // DO_GET_UP // N/A
- 205, 4, 4, // DO_FIRE_PRONE
- 189, 10,0, // DO_IDLE1
- 199, 6, 0, // DO_IDLE2
- 104, 3, 0, // DO_ON_GUARD
- 107, 7, 0, // DO_FIGHT_READY
- 114, 2, 0, // DO_PUNCH
- 116, 6, 0, // DO_KICK
- 122, 2, 0, // DO_PUNCH_HIT1
- 124, 4, 0, // DO_PUNCH_HIT2
- 128, 4, 0, // DO_PUNCH_DEATH
- 133, 2, 0, // DO_KICK_HIT1
- 135, 4, 0, // DO_KICK_HIT2
- 139, 5, 0, // DO_KICK_DEATH
- 144, 3, 0, // DO_READY_WEAPON
- 329, 8, 0, // DO_GUN_DEATH
- 337, 8, 0, // DO_EXPLOSION_DEATH
- 337, 8, 0, // DO_EXPLOSION2_DEATH
- 345, 12,0, // DO_GRENADE_DEATH
- 357, 18,0, // DO_FIRE_DEATH
- 0, 0, 0, // DO_GESTURE1 // N/A
- 0, 0, 0, // DO_SALUTE1 // N/A
- 0, 0, 0, // DO_GESTURE2 // N/A
- 0, 0, 0, // DO_SALUTE2 // N/A
- 199, 6, 0, // DO_PULL_GUN
- 237, 40,0, // DO_PLEAD
- 277, 6, 0, // DO_PLEAD_DEATH
- };
- static InfantryTypeClass const Delphi(
- INFANTRY_DELPHI, // Infantry type number.
- TXT_DELPHI, // Translate name number for infantry type.
- "DELPHI", // INI name for infantry.
- 99, // Build level.
- STRUCTF_NONE, // Building prerequisite.
- false, // Is this a female type?
- false, // Is a leader type?
- false, // Has crawling animation frames?
- true, // Is this a civlian?
- true, // Always use the given name for the infantry?
- true, // Is this a "fraidycat" run-away type infantry?
- false, // Can this infantry type capture a building?
- false, // Theater specific graphic image?
- 10, // Number of shots it has (default).
- &DelphiDos[0][0], // ptr to DO table
- 2, // Frame of projectile launch.
- 0, // Frame of projectile launch while prone.
- 25, // Strength of infantry (in damage points).
- 0, // Sight range.
- 10, // Cost of infantry (in credits).
- 99, // Scenario when they first appear.
- 0,0, // Risk/Reward of this infantry unit.
- HOUSEF_MULTI1|
- HOUSEF_MULTI2|
- HOUSEF_MULTI3|
- HOUSEF_MULTI4|
- HOUSEF_MULTI5|
- HOUSEF_MULTI6|
- HOUSEF_JP|
- HOUSEF_GOOD|
- HOUSEF_NEUTRAL, // Who can own this infantry unit.
- WEAPON_PISTOL,WEAPON_NONE,
- MPH_SLOW_ISH
- );
- int DrChanDos[DO_COUNT][3]={
- 0, 1, 1, // DO_STAND_READY
- 0, 1, 1, // DO_STAND_GUARD
- 0, 1, 1, // DO_PRONE // N/A
- 56, 6, 6, // DO_WALK
- 205, 4, 4, // DO_FIRE_WEAPON
- 0, 1, 1, // DO_LIE_DOWN // N/A
- 8, 6, 6, // DO_CRAWL
- 0, 1, 1, // DO_GET_UP // N/A
- 0, 0, 0, // DO_FIRE_PRONE
- 104, 16,0, // DO_IDLE1
- 120, 20,0, // DO_IDLE2
- 0, 0, 0, // DO_ON_GUARD
- 0, 0, 0, // DO_FIGHT_READY
- 0, 0, 0, // DO_PUNCH
- 0, 0, 0, // DO_KICK
- 0, 0, 0, // DO_PUNCH_HIT1
- 0, 0, 0, // DO_PUNCH_HIT2
- 0, 0, 0, // DO_PUNCH_DEATH
- 0, 0, 0, // DO_KICK_HIT1
- 0, 0, 0, // DO_KICK_HIT2
- 0, 0, 0, // DO_KICK_DEATH
- 0, 0, 0, // DO_READY_WEAPON
- 212, 8, 0, // DO_GUN_DEATH
- 220, 8, 0, // DO_EXPLOSION_DEATH
- 228, 12,0, // DO_EXPLOSION2_DEATH
- 228, 12,0, // DO_GRENADE_DEATH
- 240, 18,0, // DO_FIRE_DEATH
- 0, 0, 0, // DO_GESTURE1 // N/A
- 0, 0, 0, // DO_SALUTE1 // N/A
- 0, 0, 0, // DO_GESTURE2 // N/A
- 0, 0, 0, // DO_SALUTE2 // N/A
- 0, 0, 0, // DO_PULL_GUN
- 120, 31,0, // DO_PLEAD
- 151, 14,0 // DO_PLEAD_DEATH
- };
- static InfantryTypeClass const DrChan(
- INFANTRY_CHAN, // Infantry type number.
- TXT_CHAN, // Translate name number for infantry type.
- "CHAN", // INI name for infantry.
- 99, // Build level.
- STRUCTF_NONE, // Building prerequisite.
- false, // Is this a female type?
- false, // Is a leader type?
- false, // Has crawling animation frames?
- true, // Is this a civlian?
- true, // Always use the given name for the infantry?
- true, // Is this a "fraidycat" run-away type infantry?
- false, // Can this infantry type capture a building?
- false, // Theater specific graphic image?
- 10, // Number of shots it has (default).
- &DrChanDos[0][0], // ptr to DO table
- 2, // Frame of projectile launch.
- 0, // Frame of projectile launch while prone.
- 25, // Strength of infantry (in damage points).
- 0, // Sight range.
- 10, // Cost of infantry (in credits).
- 99, // Scenario when they first appear.
- 0,1, // Risk/Reward of this infantry unit.
- HOUSEF_MULTI1|
- HOUSEF_MULTI2|
- HOUSEF_MULTI3|
- HOUSEF_MULTI4|
- HOUSEF_MULTI5|
- HOUSEF_MULTI6|
- HOUSEF_JP|
- HOUSEF_GOOD|
- HOUSEF_NEUTRAL, // Who can own this infantry unit.
- WEAPON_NONE,WEAPON_NONE,
- MPH_SLOW_ISH
- );
- /*
- ** This is the array of pointers to the static data associated with each
- ** infantry type.
- */
- InfantryTypeClass const * const InfantryTypeClass::Pointers[INFANTRY_COUNT] = {
- &E1,
- &E2,
- &E3,
- &E4,
- &E5,
- // &E6,
- &E7,
- &Commando,
- &C1,
- &C2,
- &C3,
- &C4,
- &C5,
- &C6,
- &C7,
- &C8,
- &C9,
- &C10,
- &Moebius,
- &Delphi,
- &DrChan
- };
- /***********************************************************************************************
- * InfantryTypeClass::InfantryTypeClass -- Constructor for infantry type class objects. *
- * *
- * This routine will construct the infantry type objects. It is use to create the static *
- * infantry types that are used to give each of the infantry objects their characteristics. *
- * *
- * INPUT: see below... *
- * *
- * OUTPUT: none *
- * *
- * WARNINGS: none *
- * *
- * HISTORY: *
- * 09/24/1994 JLB : Created. *
- *=============================================================================================*/
- InfantryTypeClass::InfantryTypeClass (
- InfantryType type, int name, char const *ininame,
- unsigned char level, long pre,
- bool is_female,
- bool is_leader,
- bool is_crawling,
- bool is_civilian,
- bool is_nominal,
- bool is_fraidycat,
- bool is_capture,
- bool is_theater,
- int ammo,
- int *do_table,
- int firelaunch, int pronelaunch,
- unsigned short strength, int sightrange,
- int cost, int scenario, int risk, int reward, int ownable,
- WeaponType primary, WeaponType secondary,
- MPHType maxspeed)
- : TechnoTypeClass(name, ininame, level, pre,
- is_leader, true, is_nominal, false, false, true, true, true, true, false, false,
- is_theater, false, false, false, true, false,
- ammo, strength, maxspeed, sightrange, cost,
- scenario, risk, reward, ownable,
- primary, secondary,
- ARMOR_NONE)
- {
- IsFemale = is_female;
- IsCrawling = is_crawling;
- IsCapture = is_capture;
- IsFraidyCat = is_fraidycat;
- IsCivilian = is_civilian;
- Type = type;
- FireLaunch = firelaunch;
- ProneLaunch = pronelaunch;
- /*
- ** Set the animation sequence custom values.
- */
- for ( int i=0 ; i<DO_COUNT ; i++ ){
- DoControls[i].Frame = *do_table++;
- DoControls[i].Count = *do_table++;
- DoControls[i].Jump = *do_table++;
- }
- #ifdef cuts //ST - 10/3/95 10:09AM
- DoControls[DO_STAND_READY].Frame = dostandready;
- DoControls[DO_STAND_READY].Count = dostandreadyframe;
- DoControls[DO_STAND_READY].Jump = dostandreadyjump;
- DoControls[DO_STAND_GUARD].Frame = dostandguard;
- DoControls[DO_STAND_GUARD].Count = dostandguardframe;
- DoControls[DO_STAND_GUARD].Jump = dostandguardjump;
- DoControls[DO_PRONE].Frame = doprone;
- DoControls[DO_PRONE].Count = doproneframe;
- DoControls[DO_PRONE].Jump = dopronejump;
- DoControls[DO_WALK].Frame = dowalk;
- DoControls[DO_WALK].Count = dowalkframe;
- DoControls[DO_WALK].Jump = dowalkjump;
- DoControls[DO_FIRE_WEAPON].Frame = dofireweapon;
- DoControls[DO_FIRE_WEAPON].Count = dofireweaponframe;
- DoControls[DO_FIRE_WEAPON].Jump = dofireweaponjump;
- DoControls[DO_LIE_DOWN].Frame = doliedown;
- DoControls[DO_LIE_DOWN].Count = doliedownframe;
- DoControls[DO_LIE_DOWN].Jump = doliedownjump;
- DoControls[DO_CRAWL].Frame = docrawl;
- DoControls[DO_CRAWL].Count = docrawlframe;
- DoControls[DO_CRAWL].Jump = docrawljump;
- DoControls[DO_GET_UP].Frame = dogetup;
- DoControls[DO_GET_UP].Count = dogetupframe;
- DoControls[DO_GET_UP].Jump = dogetupjump;
- DoControls[DO_FIRE_PRONE].Frame = dofireprone;
- DoControls[DO_FIRE_PRONE].Count = dofireproneframe;
- DoControls[DO_FIRE_PRONE].Jump = dofirepronejump;
- DoControls[DO_IDLE1].Frame = doidle1;
- DoControls[DO_IDLE1].Count = doidle1frame;
- DoControls[DO_IDLE1].Jump = doidle1jump;
- DoControls[DO_IDLE2].Frame = doidle2;
- DoControls[DO_IDLE2].Count = doidle2frame;
- DoControls[DO_IDLE2].Jump = doidle2jump;
- DoControls[DO_ON_GUARD].Frame = doonguard;
- DoControls[DO_ON_GUARD].Count = doonguardframe;
- DoControls[DO_ON_GUARD].Jump = doonguardjump;
- DoControls[DO_FIGHT_READY].Frame = dofightready;
- DoControls[DO_FIGHT_READY].Count = dofightreadyframe;
- DoControls[DO_FIGHT_READY].Jump = dofightreadyjump;
- DoControls[DO_PUNCH].Frame = dopunch;
- DoControls[DO_PUNCH].Count = dopunchframe;
- DoControls[DO_PUNCH].Jump = dopunchjump;
- DoControls[DO_KICK].Frame = dokick;
- DoControls[DO_KICK].Count = dokickframe;
- DoControls[DO_KICK].Jump = dokickjump;
- DoControls[DO_PUNCH_HIT1].Frame = dopunchhit1;
- DoControls[DO_PUNCH_HIT1].Count = dopunchhit1frame;
- DoControls[DO_PUNCH_HIT1].Jump = dopunchhit1jump;
- DoControls[DO_PUNCH_HIT2].Frame = dopunchhit2;
- DoControls[DO_PUNCH_HIT2].Count = dopunchhit2frame;
- DoControls[DO_PUNCH_HIT2].Jump = dopunchhit2jump;
- DoControls[DO_PUNCH_DEATH].Frame = dopunchdeath;
- DoControls[DO_PUNCH_DEATH].Count = dopunchdeathframe;
- DoControls[DO_PUNCH_DEATH].Jump = dopunchdeathjump;
- DoControls[DO_KICK_HIT1].Frame = dokickhit1;
- DoControls[DO_KICK_HIT1].Count = dokickhit1frame;
- DoControls[DO_KICK_HIT1].Jump = dokickhit1jump;
- DoControls[DO_KICK_HIT2].Frame = dokickhit2;
- DoControls[DO_KICK_HIT2].Count = dokickhit2frame;
- DoControls[DO_KICK_HIT2].Jump = dokickhit2jump;
- DoControls[DO_KICK_DEATH].Frame = dokickdeath;
- DoControls[DO_KICK_DEATH].Count = dokickdeathframe;
- DoControls[DO_KICK_DEATH].Jump = dokickdeathjump;
- DoControls[DO_READY_WEAPON].Frame = doreadyweapon;
- DoControls[DO_READY_WEAPON].Count = doreadyweaponframe;
- DoControls[DO_READY_WEAPON].Jump = doreadyweaponjump;
- DoControls[DO_GUN_DEATH].Frame = dogundeath;
- DoControls[DO_GUN_DEATH].Count = dogundeathframe;
- DoControls[DO_GUN_DEATH].Jump = dogundeathjump;
- DoControls[DO_EXPLOSION_DEATH].Frame = doexplosiondeath;
- DoControls[DO_EXPLOSION_DEATH].Count = doexplosiondeathframe;
- DoControls[DO_EXPLOSION_DEATH].Jump = doexplosiondeathjump;
- DoControls[DO_EXPLOSION2_DEATH].Frame = doexplosion2death;
- DoControls[DO_EXPLOSION2_DEATH].Count = doexplosion2deathframe;
- DoControls[DO_EXPLOSION2_DEATH].Jump = doexplosion2deathjump;
- DoControls[DO_GRENADE_DEATH].Frame = dogrenadedeath;
- DoControls[DO_GRENADE_DEATH].Count = dogrenadedeathframe;
- DoControls[DO_GRENADE_DEATH].Jump = dogrenadedeathjump;
- DoControls[DO_FIRE_DEATH].Frame = dofiredeath;
- DoControls[DO_FIRE_DEATH].Count = dofiredeathframe;
- DoControls[DO_FIRE_DEATH].Jump = dofiredeathjump;
- DoControls[DO_GESTURE1].Frame = dogesture1;
- DoControls[DO_GESTURE1].Count = dogesture1frame;
- DoControls[DO_GESTURE1].Jump = dogesture1jump;
- DoControls[DO_SALUTE1].Frame = dosalute1;
- DoControls[DO_SALUTE1].Count = dosalute1frame;
- DoControls[DO_SALUTE1].Jump = dosalute1jump;
- DoControls[DO_GESTURE2].Frame = dogesture2;
- DoControls[DO_GESTURE2].Count = dogesture2frame;
- DoControls[DO_GESTURE2].Jump = dogesture2jump;
- DoControls[DO_SALUTE2].Frame = dosalute2;
- DoControls[DO_SALUTE2].Count = dosalute2frame;
- DoControls[DO_SALUTE2].Jump = dosalute2jump;
- DoControls[DO_PULL_GUN].Frame = dopullgun;
- DoControls[DO_PULL_GUN].Count = dopullgunframe;
- DoControls[DO_PULL_GUN].Jump = dopullgunjump;
- DoControls[DO_PLEAD].Frame = doplead;
- DoControls[DO_PLEAD].Count = dopleadframe;
- DoControls[DO_PLEAD].Jump = dopleadjump;
- DoControls[DO_PLEAD_DEATH].Frame = dopleaddeath;
- DoControls[DO_PLEAD_DEATH].Count = dopleaddeathframe;
- DoControls[DO_PLEAD_DEATH].Jump = dopleaddeathjump;
- #endif //cuts
- }
- /***********************************************************************************************
- * InfantryTypeClass::Create_One_Of -- Creates an infantry object. *
- * *
- * This creates an infantry object, but does not attempt to place it on the map. It is *
- * typically used by the scenario editor when an object is needed, but the location has *
- * not yet been specified for where it should appear on the map. *
- * *
- * INPUT: house -- The owner of the infantry object. *
- * *
- * OUTPUT: Returns with a pointer to the created infantry object. If an object could not be *
- * created, then NULL is returned. *
- * *
- * WARNINGS: none *
- * *
- * HISTORY: *
- * 09/24/1994 JLB : Created. *
- *=============================================================================================*/
- ObjectClass * InfantryTypeClass::Create_One_Of(HouseClass * house) const
- {
- return(new InfantryClass(Type, house->Class->House));
- }
- /***********************************************************************************************
- * InfantryTypeClass::Create_And_Place -- Creates and places infantry object onto the map. *
- * *
- * This routine is used by the scenario editor to create and place an infantry object onto *
- * the map at the location specified. *
- * *
- * INPUT: cell -- The cell location to place the infantry object at. *
- * *
- * house -- The owner of the infantry object. *
- * *
- * OUTPUT: bool; Was the infantry object successfully created and placed at the location *
- * specified? *
- * *
- * WARNINGS: none *
- * *
- * HISTORY: *
- * 09/24/1994 JLB : Created. *
- *=============================================================================================*/
- bool InfantryTypeClass::Create_And_Place(CELL cell, HousesType house) const
- {
- InfantryClass * i = new InfantryClass(Type, house);
- if (i) {
- COORDINATE coord = Map[cell].Closest_Free_Spot(Cell_Coord(cell));
- if (coord) {
- return(i->Unlimbo(coord, DIR_E));
- } else {
- delete i;
- }
- }
- return(false);
- }
- /***********************************************************************************************
- * InfantryTypeClass::Occupy_List -- Returns with default infantry occupation list. *
- * *
- * This routine will return with a cell offset occupation list for a generic infantry *
- * object. This is typically just a single cell since infantry are never bigger than one *
- * cell and this routine presumes the infantry is located in the center of the cell. *
- * *
- * INPUT: placement -- Is this for placement legality checking only? The normal condition *
- * is for marking occupation flags. *
- * *
- * OUTPUT: Returns with a cell offset list for the infantry object as if it were located *
- * in the center of a cell. *
- * *
- * WARNINGS: none *
- * *
- * HISTORY: *
- * 09/24/1994 JLB : Created. *
- *=============================================================================================*/
- short const * InfantryTypeClass::Occupy_List(bool) const
- {
- static short const _list[] = {0, REFRESH_EOL};
- return(&_list[0]);
- }
- #ifdef SCENARIO_EDITOR
- /***********************************************************************************************
- * InfantryTypeClass::Display -- Displays a generic infantry object. *
- * *
- * This routine is used by the scenario editor to display a generic representation of the *
- * infantry object for the scenario editor. It simply draws a single (nice profile) view *
- * of the infantry type. *
- * *
- * INPUT: x,y -- The display coordinates to render the infantry object at. *
- * *
- * window -- The window that the display coordinates are relative to. *
- * *
- * house -- The house colors to use when rendering this infantry object. *
- * *
- * OUTPUT: none *
- * *
- * WARNINGS: none *
- * *
- * HISTORY: *
- * 09/24/1994 JLB : Created. *
- *=============================================================================================*/
- void InfantryTypeClass::Display(int x, int y, WindowNumberType window, HousesType house) const
- {
- if (house != HOUSE_NONE) {
- int shape = 0;
- void const * ptr = Get_Cameo_Data();
- if (!ptr) {
- ptr = Get_Image_Data();
- shape = 2;
- }
- CC_Draw_Shape(ptr, shape, x, y, window, SHAPE_NORMAL|SHAPE_CENTER|SHAPE_WIN_REL);
- }
- }
- /***********************************************************************************************
- * InfantryTypeClass::Prep_For_Add -- Prepares the scenario editor for adding of infantry object.*
- * *
- * This routine will prepare the scenario editor so that the infantry objects appear on *
- * the object list. *
- * *
- * INPUT: none *
- * *
- * OUTPUT: none *
- * *
- * WARNINGS: none *
- * *
- * HISTORY: *
- * 09/24/1994 JLB : Created. *
- *=============================================================================================*/
- void InfantryTypeClass::Prep_For_Add(void)
- {
- for (InfantryType index = INFANTRY_FIRST; index < INFANTRY_COUNT; index++) {
- Map.Add_To_List(&As_Reference(index));
- }
- }
- #endif
- /***********************************************************************************************
- * InfantryTypeClass::From_Name -- Converts an ASCII name into an infantry type number. *
- * *
- * This routine is used to convert the infantry ASCII name as specified into an infantry *
- * type number. This is called from the INI reader routine in the process if creating the *
- * infantry objects needed for the scenario. *
- * *
- * INPUT: name -- The ASCII name to convert into an infantry type number. *
- * *
- * OUTPUT: Returns with the infantry type number that corresponds to the infantry ASCII name *
- * specified. If no match could be found, then INFANTRY_NONE is returned. *
- * *
- * WARNINGS: none *
- * *
- * HISTORY: *
- * 09/24/1994 JLB : Created. *
- *=============================================================================================*/
- InfantryType InfantryTypeClass::From_Name(char const *name)
- {
- if (name) {
- for (InfantryType classid = INFANTRY_FIRST; classid < INFANTRY_COUNT; classid++) {
- if (stricmp(Pointers[classid]->IniName, name) == 0) {
- return(classid);
- }
- }
- }
- return(INFANTRY_NONE);
- }
- /***********************************************************************************************
- * InfantryTypeClass::One_Time -- Performs any one time processing for infantry system. *
- * *
- * This routine will perform one time processing for the infantry type system. This is *
- * generally restricted to loading of the infantry shape data. *
- * *
- * INPUT: none *
- * *
- * OUTPUT: none *
- * *
- * WARNINGS: none *
- * *
- * HISTORY: *
- * 09/24/1994 JLB : Created. *
- *=============================================================================================*/
- void InfantryTypeClass::One_Time(void)
- {
- InfantryType index;
- for (index = INFANTRY_FIRST; index < INFANTRY_COUNT; index++) {
- char fullname[_MAX_FNAME+_MAX_EXT];
- InfantryTypeClass const *uclass;
- CCFileClass file;
- uclass = &As_Reference(index);
- /*
- ** Generic shape for all houses load method.
- */
- _makepath(fullname, NULL, NULL, uclass->IniName, ".SHP");
- ((void const *&)uclass->ImageData) = MixFileClass::Retrieve(fullname);
- /*
- ** The small build image icon sized shapes are always generic.
- */
- char buffer[_MAX_FNAME];
- if ( Get_Resolution_Factor() ) {
- sprintf(buffer, "%.4sICNH", uclass->IniName);
- } else {
- sprintf(buffer, "%.4sICON", uclass->IniName);
- }
- _makepath(fullname, NULL, NULL, buffer, ".SHP");
- ((void const *&)uclass->CameoData) = MixFileClass::Retrieve(fullname);
- }
- }
- /***********************************************************************************************
- * ITC::Init -- load up terrain set dependant sidebar icons *
- * *
- * *
- * *
- * INPUT: theater type *
- * *
- * OUTPUT: Nothing *
- * *
- * WARNINGS: None *
- * *
- * HISTORY: *
- * 4/25/96 0:33AM ST : Created *
- *=============================================================================================*/
- void InfantryTypeClass::Init(TheaterType theater)
- {
- if ( Get_Resolution_Factor() ) {
- if (theater != LastTheater){
- InfantryType index;
- char buffer[_MAX_FNAME];
- char fullname[_MAX_FNAME+_MAX_EXT];
- void const * cameo_ptr;
- for (index = INFANTRY_FIRST; index < INFANTRY_COUNT; index++) {
- InfantryTypeClass const *uclass;
- CCFileClass file;
- uclass = &As_Reference(index);
- ((void const *&)uclass->CameoData) = NULL;
- sprintf(buffer, "%.4sICNH", uclass->IniName);
- _makepath (fullname, NULL, NULL, buffer, Theaters[theater].Suffix);
- cameo_ptr = MixFileClass::Retrieve(fullname);
- if (cameo_ptr){
- ((void const *&)uclass->CameoData) = cameo_ptr;
- }
- }
- }
- }
- }
- /***********************************************************************************************
- * InfantryTypeClass::Who_Can_Build_Me -- Determines what can build the infantry object. *
- * *
- * Use this routine to determine what building can produce the infantry object. This is *
- * typically used to maintain the construction list sidebar. *
- * *
- * INPUT: intheory -- If no regard is to be given to whether the construction building is *
- * currently busy, then this flag should be true. In such a case, only *
- * the existance of the building is sufficient to achieve success. *
- * *
- * legal -- Should building prerequisite legality checks be performed as well? *
- * For building placements, this is usually false. For sidebar button *
- * adding, this is usually true. *
- * *
- * house -- The house of the infantry to be produced. Only construction buildings *
- * of the same house are considered. *
- * *
- * OUTPUT: Returns with a pointer to the object (building) that can produce the infantry *
- * type. If there are no available buildings then the return value is NULL. *
- * *
- * WARNINGS: none *
- * *
- * HISTORY: *
- * 11/29/1994 JLB : Created. *
- *=============================================================================================*/
- BuildingClass * InfantryTypeClass::Who_Can_Build_Me(bool intheory, bool legal, HousesType house) const
- {
- BuildingClass * anybuilding = NULL;
- for (int index = 0; index < Buildings.Count(); index++) {
- BuildingClass * building = Buildings.Ptr(index);
- if (building &&
- !building->IsInLimbo &&
- building->House->Class->House == house &&
- building->Mission != MISSION_DECONSTRUCTION &&
- building->Class->ToBuild == RTTI_INFANTRYTYPE &&
- ((1L << building->ActLike) & Ownable) &&
- (!legal || building->House->Can_Build(Type, building->ActLike)) &&
- (intheory || !building->In_Radio_Contact())) {
- anybuilding = building;
- if (building->IsLeader) return(building);
- }
- }
- return(anybuilding);
- }
- /***********************************************************************************************
- * InfantryTypeClass::Full_Name -- Fetches the full name text number. *
- * *
- * This routine will fetch the full name text number for this infantry type. It examines *
- * the special custom name flag to determine whether the custom name or the generic name *
- * is to be used. *
- * *
- * INPUT: none *
- * *
- * OUTPUT: Returns with text number for the name to give this infantry type object. *
- * *
- * WARNINGS: none *
- * *
- * HISTORY: *
- * 06/29/1995 JLB : Created. *
- *=============================================================================================*/
- int InfantryTypeClass::Full_Name(void) const
- {
- if (Debug_Map || !IsNominal || Special.IsNamed || Type == INFANTRY_C10 || Type == INFANTRY_DELPHI || Type == INFANTRY_MOEBIUS) {
- return(TechnoTypeClass::Full_Name());
- }
- return(TXT_CIVILIAN);
- }
|