Improvements to harvester resource finding logic. Don't allow the Advanced Comm Center to be capturable in skirmish or multiplayer. Increased failed pathfinding fudge factor. Buildings accept the Guard command if they can attack. Don't allow force capturing of ally structures. Fixes for laser Orcas in S3cr3t M1ss10n. Properly restore them after save. Reset Orcas after loads. Fixed flag animation rendering in CTF. Potentially fix a crash if aircraft are destroyed outside the map bounds. Fixed legacy Obelisk line rendering. Fix out-of-bounds crash in TD; issue was already fixed in RA. Disable capture flag on Commandos. Drop the flag when entering the limbo state. Fixed end game race condition, winning team ID is always sent before individual player win/lose messages. Fixed Chan spawn on SCB10EA. Don't show enter cursor for enemy units on refineries and repair pads. Changing right-click support for first put building on hold, and then subsequenct right-clicks to decrement that queue count for 1x or 5x; Then, 1x or 5x Left click will resume from hold. Don't debug reveal legacy rendering when a player is defeated. Fixed crash when loading saves of custom campaign maps. Reset harvester archived target when given a direct harvest order. Prevent NOD cargo planes from being force attacked. Fixed unit selection on load. Migrated queued repair pad functionality from RA to TD. Randomly animate infantry in area guard mode. Fixed crash accessing inactive objects. Added some walls in SCG08EB to prevent civilians from killing themselves. TD + RA: Audio: Overiding "Our base is under attack" cooldown timing from legacy from 2 minutes to 30 seconds, so it will be heard 4x as often. Fixed adjacent cell out-of-bounds crash issues. Kill player on disconnect Fixed and improved build time calculations to be consistent between TD and RA. Don't show health bars for cloaked Stealth Tanks in the legacy renderer. Fix selection of individual control groups after mixed selection. More adjustments to SCG08EB; switch C7 to C5, and add civilian AI to avoid Tiberium. Extra safety checks for units that have no weapons and aircraft that can't hunt. Fix loading of multiple infantry onto an APC. Additional safety checks for invalid coordinates. Prevent units from being instantly repaired. Fix map passability. Fail Allied mission 5B if the spy re-boards the starting transport (matches 5A and 5C behavior). Fixed multiplayer formation move causing units to move at light speed. Ignore movement destination checks if a unit is part of a mission-driven team. Fix buffer overrun crash. Ignore mines when determining win conditions. Fixed river passability in Blue Lakes.
2153 lines
No EOL
80 KiB
C++
2153 lines
No EOL
80 KiB
C++
//
|
|
// Copyright 2020 Electronic Arts Inc.
|
|
//
|
|
// TiberianDawn.DLL and RedAlert.dll and corresponding source code 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.
|
|
|
|
// TiberianDawn.DLL and RedAlert.dll and corresponding source code is distributed
|
|
// in the hope that it will be useful, but with permitted additional restrictions
|
|
// under Section 7 of the GPL. See the GNU General Public License in LICENSE.TXT
|
|
// distributed with this program. You should have received a copy of the
|
|
// GNU General Public License along with permitted additional restrictions
|
|
// with this program. If not, see https://github.com/electronicarts/CnC_Remastered_Collection
|
|
|
|
/* $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?
|
|
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).
|
|
&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
|
|
170, 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?
|
|
false, // 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;
|
|
IsAvoidingTiberium = false;
|
|
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);
|
|
} |