home *** CD-ROM | disk | FTP | other *** search
/ Micromanía 26 / CDMM26.iso / data / dark / parts.txt < prev    next >
Encoding:
Text File  |  1996-11-29  |  73.9 KB  |  1,792 lines

  1. ;;;
  2. ;;; This file has two parts, one defining unit part types, the other, units
  3. ;;;
  4.  
  5.  
  6. ;;;
  7. ;;; Part Type Definitions
  8. ;;;
  9.  
  10. ;; Bottom part of an Imperial Mobile Air Defence system
  11.  
  12. DefinePartType(impMAD)
  13. {
  14.   SetImage(madmrow.spr 5)                  ;; Image name, number of frames
  15.   SetIsometricImage(madiso.spr 54 40)    ;; Image name, x size, y size
  16.   SetDescription(Mobile_Air_Defence)       ;; Editor description
  17.   SetPrerequisite(7 60 13 0 0 0)           ;; Prerequisite building
  18.   SetSide(1)
  19.   SetCPULoad(6)                            ;; Load on CPU
  20.   SetPhysics(3 5 1 900000)                 ;; Weight, speed, rotation rate, max energy
  21.   SetStrength(2000 1800 700)               ;; Shield, armour internal hitpoints
  22.   SetCost(500 10)                          ;; Credits, time in seconds
  23.   SetSelectSounds(gisvhic1.wav gisvhic2.wav gisvhic3.wav gisvhic4.wav)
  24.   SetResponseSounds(girvhic1.wav girvhic2.wav girvhic3.wav girvhic4.wav)
  25.   UseEffects(Foot)                        ;;
  26.   CanBottom()
  27.   SetVulnerability(TankPlating 100)
  28. }
  29.  
  30. ;; Firing part of an Imperial Mobile Air Defence system
  31.  
  32. DefinePartType(impMADFire)
  33. {
  34.   SetImage(madgrow.spr 3)                  ;; Image name, number of frames
  35.   SetIsometricImage(blankiso.spr 54 40)  ;; Image name, x size, y size
  36.   SetDescription(Mobile_Air_Defence_Gun)   ;; Editor description
  37.   SetPrerequisite(7 60 13 0 0 0)           ;; Prerequisite building
  38.   SetSide(1)
  39.   SetCPULoad(6)                            ;; Load on CPU
  40.   SetPhysics(3 0 1 900000)                 ;; Weight, speed, rotation rate, max energy
  41.   SetStrength(2000 1000 800)               ;; Shield, armour internal hitpoints
  42.   SetCost(500 7)                           ;; Credits, time in seconds
  43.   SetWeapon(12 1000 50 2000 200 230 250 guidedmissile) ;; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  44.   {
  45.     SetProjectileImage(mrow.spr 20 20 3)
  46.     SetHitImage(exporow.spr 50 50 11)
  47.     SetEffectRadius(3)
  48.     CanShootFlyer()
  49.     CanShootGround()
  50.   }
  51.   CanMiddle()
  52.   CanTop()
  53.   SetVulnerability(TankPlating 100)
  54. }
  55.  
  56. ;; Bottom part of a Spider bike
  57.  
  58. DefinePartType(SpiderBike)
  59. {
  60.   SetImage(spim.spr 4)                  ;; Image name, number of frames
  61.   SetIsometricImage(spiiso.spr 54 40)    ;; Image name, x size, y size
  62.   SetDescription(Spider_Bike)              ;; Editor description
  63.   SetPrerequisite(7 30 7 0 0 0)            ;; Prerequisite building
  64.   SetSide(0)
  65.   SetCPULoad(6)                            ;; Load on CPU
  66.   SetPhysics(2 10 2 900000)                ;; Weight, speed, rotation rate, max energy
  67.   SetStrength(2000 1800 700)               ;; Shield, armour internal hitpoints
  68.   SetCost(500 10)                          ;; Credits, time in seconds
  69.   SetSelectSounds(gfsvhic1.wav gfsvhic2.wav gfsvhic3.wav gfsvhic4.wav)
  70.   SetResponseSounds(gfrvhic1.wav gfrvhic2.wav gfrvhic3.wav gfrvhic4.wav)
  71.   UseEffects(Wheel)                        ;;
  72.   CanBottom()
  73.   SetVulnerability(TankPlating 100)
  74.   ; test health explosions! remove!!!
  75.   SetHealthExplosion(600 smor_explosion attached)    ;; health_level, explosionid, attached/unattached
  76.   SetHealthExplosion(300 smallfired_explosion attached)
  77.   SetHealthExplosion(0 nuke_explosion unattached)
  78. }
  79.  
  80. ;; Gun part of a Spider Bike
  81.  
  82. DefinePartType(SpiderBikeFire)
  83. {
  84.   SetImage(spigrow.spr 2)                  ;; Image name, number of frames
  85.   SetIsometricImage(blankiso.spr 54 40)  ;; Image name, x size, y size
  86.   SetDescription(Spider_Bike_Gun)          ;; Editor description
  87.   SetPrerequisite(7 30 7 0 0 0)            ;; Prerequisite building
  88.   SetSide(0)
  89.   SetCPULoad(6)                            ;; Load on CPU
  90.   SetPhysics(2 0 3 900000)                 ;; Weight, speed, rotation rate, max energy
  91.   SetStrength(500 500 80)                  ;; Shield, armour internal hitpoints
  92.   SetCost(500 7)                           ;; Credits, time in seconds
  93.   SetWeapon(6 1000 50 2000 30 30 50 cannon);; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  94.   {
  95.     SetHitImage(explrow.spr 40 40 11)
  96.     CanShootFlyer()
  97.     CanShootGround()
  98.   }
  99.   CanMiddle()
  100.   CanTop()
  101.   SetVulnerability(TankPlating 100)
  102. }
  103.  
  104. ;; Bottom part of an Imperial VTOL
  105.  
  106. DefinePartType(ImperialVTOL)
  107. {
  108.   SetImage(vtomrow.spr 3)                  ;; Image name, number of frames
  109.   SetIsometricImage(vtoiso.spr 54 40)    ;; Image name, x size, y size
  110.   SetDescription(Imperial_VTOL)            ;; Editor description
  111.   SetPrerequisite(7 61 7 0 0 0)           ;; Prerequisite building
  112.   SetSide(1)
  113.   SetCPULoad(6)                            ;; Load on CPU
  114.   SetPhysics(2 20 2 900000)                ;; Weight, speed, rotation rate, max energy
  115.   SetStrength(2000 1800 700)               ;; Shield, armour internal hitpoints
  116.   SetCost(500 10)                          ;; Credits, time in seconds
  117.   SetSelectSounds(gisvhic1.wav gisvhic2.wav gisvhic3.wav gisvhic4.wav)
  118.   SetResponseSounds(girvhic1.wav girvhic2.wav girvhic3.wav girvhic4.wav)
  119.   UseEffects(Flying)                       ;;
  120.   CanFly()
  121.   CanBottom()
  122.   SetVulnerability(TankPlating 100)
  123. }
  124.  
  125. ;; Gun part of an Imperial VTOL
  126.  
  127. DefinePartType(ImperialVTOLFire)
  128. {
  129.   SetImage(vtogrow.spr 3)                  ;; Image name, number of frames
  130.   SetIsometricImage(blankiso.spr 54 40)  ;; Image name, x size, y size
  131.   SetDescription(Imperial_VTOL_Gun)        ;; Editor description
  132.   SetPrerequisite(7 61 7 0 0 0)              ;; Prerequisite building
  133.   SetSide(1)
  134.   SetCPULoad(6)                             ;; Load on CPU
  135.   SetPhysics(2 0 3 900000)                 ;; Weight, speed, rotation rate, max energy
  136.   SetStrength(2000 1000 550)               ;; Shield, armour internal hitpoints
  137.   SetCost(500 7)                           ;; Credits, time in seconds
  138.   SetWeapon(10 1000 50 2000 30 30 50 cannon);; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  139.   {
  140.     SetHitImage(expxrow.spr 75 75 13)
  141.     CanShootFlyer()
  142.     CanShootGround()
  143.   }
  144.   CanMiddle()
  145.   CanTop()
  146.   SetVulnerability(TankPlating 100)
  147. }
  148.  
  149. ;; Bottom part of a freedom guard assault copter
  150.  
  151. DefinePartType(fgAssaultCopter)
  152. {
  153.   SetImage(copmrow.spr 5)                  ;; Image name, number of frames
  154.   SetIsometricImage(copiso.spr 54 40)    ;; Image name, x size, y size
  155.   SetDescription(Freedom_Guard_Assault_Copter);; Editor description
  156.   SetPrerequisite(7 61 7 0 0 0)            ;; Prerequisite building
  157.   SetSide(0)
  158.   SetCPULoad(6)                            ;; Load on CPU
  159.   SetPhysics(2 20 2 900000)                ;; Weight, speed, rotation rate, max energy
  160.   SetStrength(2000 1800 700)               ;; Shield, armour internal hitpoints
  161.   SetCost(500 10)                          ;; Credits, time in seconds
  162.   SetTransport(5 13 2 0 0 0 0 0)                    ;; Number of people, units of energy, chemical and mineral
  163.   SetSelectSounds(gfscopt1.wav gfscopt2.wav none none)
  164.   SetResponseSounds(gfrcopt1.wav gfrcopt2.wav none none)
  165.   UseEffects(Flying)                       ;;
  166.   CanFly()
  167.   CanBottom()
  168.   SetVulnerability(TankPlating 100)
  169. }
  170.  
  171. ;; Gun part of an Assault Copter
  172.  
  173. DefinePartType(fgAssaultCopterFire)
  174. {
  175.   SetImage(copgrow.spr 1)                  ;; Image name, number of frames
  176.   SetIsometricImage(copiso.spr 54 40)    ;; Image name, x size, y size
  177.   SetDescription(fFreedom_Guard_AssaultCopter)   ;; Editor description
  178.   SetPrerequisite(7 61 7 0 0 0)            ;; Prerequisite building
  179.   SetSide(0)
  180.   SetCPULoad(6)                            ;; Load on CPU
  181.   SetPhysics(2 0 3 900000)                 ;; Weight, speed, rotation rate, max energy
  182.   SetStrength(2000 1000 550)               ;; Shield, armour internal hitpoints
  183.   SetCost(700 7)                           ;; Credits, time in seconds
  184.   SetWeapon(10 1000 50 2000 200 230 250 guidedmissile) ;; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  185.   {
  186.     SetProjectileImage(mrow.spr 20 20 3)
  187.     SetHitImage(exporow.spr 50 50 11)
  188.     SetEffectRadius(3)
  189.     CanShootFlyer()
  190.     CanShootGround()
  191.   }
  192.   CanMiddle()
  193.   CanTop()
  194.   SetVulnerability(TankPlating 100)
  195. }
  196.  
  197. ;; Bottom part of a Scout Tank
  198.  
  199. DefinePartType(ScoutTank)
  200. {
  201.   SetImage(scomrow.spr 1)                  ;; Image name, number of frames
  202.   SetIsometricImage(scoiso.spr 54 40)    ;; Image name, x size, y size
  203.   SetDescription(Scout_Tank)               ;; Editor description
  204.   SetPrerequisite(7 57 7 0 0 0)              ;; Prerequisite building
  205.   SetSide(1)
  206.   SetCPULoad(6)                            ;; Load on CPU
  207.   SetPhysics(2 12 2 900000)                ;; Weight, speed, rotation rate, max energy
  208.   SetStrength(2000 1800 700)               ;; Shield, armour internal hitpoints
  209.   SetCost(500 10)                          ;; Credits, time in seconds
  210.   SetSelectSounds(gisvhic1.wav gisvhic2.wav gisvhic3.wav gisvhic4.wav)
  211.   SetResponseSounds(girvhic1.wav girvhic2.wav girvhic3.wav girvhic4.wav)
  212.   UseEffects(Hover)                        ;;
  213.   CanHover()
  214.   CanBottom()
  215.   SetVulnerability(TankPlating 100)
  216. }
  217.  
  218. ;; Gun part of a Scout Tank
  219.  
  220. DefinePartType(ScoutTankFire)
  221. {
  222.   SetImage(scogrow.spr 2)                  ;; Image name, number of frames
  223.   SetIsometricImage(blankiso.spr 54 40)  ;; Image name, x size, y size
  224.   SetDescription(Scout_Tank_Gun)           ;; Editor description
  225.   SetPrerequisite(7 57 7 0 0 0)              ;; Prerequisite building
  226.   SetSide(1)
  227.   SetCPULoad(6)                            ;; Load on CPU
  228.   SetPhysics(2 0 3 900000)                 ;; Weight, speed, rotation rate, max energy
  229.   SetStrength(2000 1000 550)               ;; Shield, armour internal hitpoints
  230.   SetCost(500 7)                           ;; Credits, time in seconds
  231.   SetWeapon(8 1000 50 2000 30 130 150 energy) ;; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  232.   {
  233.     SetHitImage(expmrow.spr 40 40 11)
  234.     CanShootGround()
  235.   }
  236.   CanMiddle()
  237.   CanTop()
  238.   SetVulnerability(TankPlating 100)
  239. }
  240.  
  241. ;; Bottom part of a Tachyon Tank
  242.  
  243. DefinePartType(TachyonTank)
  244. {
  245.   SetImage(tacmrow.spr 1)                  ;; Image name, number of frames
  246.   SetIsometricImage(taciso.spr 54 40)    ;; Image name, x size, y size
  247.   SetDescription(Tachyon_Tank)               ;; Editor description
  248.   SetPrerequisite(7 59 7 0 0 0)              ;; Prerequisite building
  249.   SetSide(1)
  250.   SetCPULoad(6)                            ;; Load on CPU
  251.   SetPhysics(2 12 2 900000)                ;; Weight, speed, rotation rate, max energy
  252.   SetStrength(2000 1800 700)               ;; Shield, armour internal hitpoints
  253.   SetCost(500 10)                          ;; Credits, time in seconds
  254.   SetSelectSounds(gisvhic1.wav gisvhic2.wav gisvhic3.wav gisvhic4.wav)
  255.   SetResponseSounds(girvhic1.wav girvhic2.wav girvhic3.wav girvhic4.wav)
  256.   UseEffects(Hover)                      ;;
  257.   CanHover()
  258.   CanBottom()
  259.   SetVulnerability(TankPlating 100)
  260. }
  261.  
  262. ;; Gun part of a Tachyon Tank
  263.  
  264. DefinePartType(TachyonTankFire)
  265. {
  266.   SetImage(tacgrow.spr 2)                  ;; Image name, number of frames
  267.   SetIsometricImage(blankiso.spr 54 40)  ;; Image name, x size, y size
  268.   SetDescription(Tachyon_Gun)              ;; Editor description
  269.   SetPrerequisite(7 59 7 0 0 0)              ;; Prerequisite building
  270.   SetSide(1)
  271.   SetCPULoad(6)                            ;; Load on CPU
  272.   SetPhysics(2 0 3 900000)                 ;; Weight, speed, rotation rate, max energy
  273.   SetStrength(2000 1000 550)               ;; Shield, armour internal hitpoints
  274.   SetCost(500 7)                           ;; Credits, time in seconds
  275.   SetWeapon(8 1000 50 2000 30 150 200 energy);; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  276.   {
  277.     SetHitImage(expxrow.spr 75 75 13)
  278.     CanShootFlyer()
  279.     CanShootGround()
  280.   }
  281.   CanMiddle()
  282.   CanTop()
  283.   SetVulnerability(TankPlating 100)
  284. }
  285.  
  286. ;; Bottom part of a Triple Rail Gun tank
  287.  
  288. DefinePartType(TripleRailTank)
  289. {
  290.   SetImage(trimrow.spr 1)                  ;; Image name, number of frames
  291.   SetIsometricImage(raiiso.spr 54 40)    ;; Image name, x size, y size
  292.   SetDescription(Triple_Rail_Hover_Tank)   ;; Editor description
  293.   SetPrerequisite(7 61 7 0 0 0)             ;; Prerequisite building
  294.   SetSide(0)
  295.   SetCPULoad(6)                            ;; Load on CPU
  296.   SetPhysics(2 9 2 900000)                 ;; Weight, speed, rotation rate, max energy
  297.   SetStrength(4000 1800 700)               ;; Shield, armour internal hitpoints
  298.   SetCost(500 10)                          ;; Credits, time in seconds
  299.   SetSelectSounds(gfsvhic1.wav gfsvhic2.wav gfsvhic3.wav gfsvhic4.wav)
  300.   SetResponseSounds(gfrvhic1.wav gfrvhic2.wav gfrvhic3.wav gfrvhic4.wav)
  301.   UseEffects(Hover)                        ;;
  302.   CanHover()
  303.   CanBottom()
  304.   SetVulnerability(TankPlating 100)
  305. }
  306.  
  307. ;; Gun part of a Triple Rail Gun tank
  308.  
  309. DefinePartType(TripleRailGun)
  310. {
  311.   SetImage(trigrow.spr 3)                  ;; Image name, number of frames
  312.   SetIsometricImage(blankiso.spr 54 40)  ;; Image name, x size, y size
  313.   SetDescription(Triple_Rail_Gun)          ;; Editor description
  314.   SetPrerequisite(7 61 7 0 0 0)             ;; Prerequisite building
  315.   SetSide(0)
  316.   SetCPULoad(6)                            ;; Load on CPU
  317.   SetPhysics(2 0 3 900000)                 ;; Weight, speed, rotation rate, max energy
  318.   SetStrength(4000 1000 550)               ;; Shield, armour internal hitpoints
  319.   SetCost(500 7)                           ;; Credits, time in seconds
  320.   SetWeapon(8 1000 80 2000 54 280 300 rocket) ;; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  321.   {
  322.     SetProjectileImage(railrow.spr 20 20 3)
  323.     SetHitImage(exporow.spr 50 50 11)
  324.     SetEffectRadius(2)
  325.     CanShootFlyer()
  326.     CanShootGround()
  327.   }
  328.   CanMiddle()
  329.   CanTop()
  330.   SetVulnerability(TankPlating 100)
  331. }
  332.  
  333. ;; Bottom part of a plasma tank
  334.  
  335. DefinePartType(PlasmaTank)
  336. {
  337.   SetImage(plamrow.spr 1)                  ;; Image name, number of frames
  338.   SetIsometricImage(plaiso.spr 54 40)    ;; Image name, x size, y size
  339.   SetDescription(Plasma_Tank)              ;; Editor description
  340.   SetPrerequisite(7 58 7 0 0 0)              ;; Prerequisite building
  341.   SetSide(1)
  342.   SetCPULoad(6)                            ;; Load on CPU
  343.   SetPhysics(2 9 2 900000)                 ;; Weight, speed, rotation rate, max energy
  344.   SetStrength(4000 1800 700)               ;; Shield, armour internal hitpoints
  345.   SetCost(500 10)                          ;; Credits, time in seconds
  346.   SetSelectSounds(gisvhic1.wav gisvhic2.wav gisvhic3.wav gisvhic4.wav)
  347.   SetResponseSounds(girvhic1.wav girvhic2.wav girvhic3.wav girvhic4.wav)
  348.   UseEffects(Hover)                        ;;
  349.   CanHover()
  350.   CanBottom()
  351.   SetVulnerability(TankPlating 100)
  352. }
  353.  
  354. ;; Gun part of a plasma tank
  355.  
  356. DefinePartType(PlasmaTankGun)
  357. {
  358.   SetImage(plagrow.spr 2)                  ;; Image name, number of frames
  359.   SetIsometricImage(blankiso.spr 54 40)  ;; Image name, x size, y size
  360.   SetDescription(Plasma_Tank_Gun)          ;; Editor description
  361.   SetPrerequisite(7 58 7 0 0 0)              ;; Prerequisite building
  362.   SetSide(1)
  363.   SetCPULoad(6)                            ;; Load on CPU
  364.   SetPhysics(2 0 3 900000)                 ;; Weight, speed, rotation rate, max energy
  365.   SetStrength(4000 1000 550)               ;; Shield, armour internal hitpoints
  366.   SetCost(500 7)                           ;; Credits, time in seconds
  367.   SetWeapon(8 1000 80 2000 54 180 200 energy) ;; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  368.   {
  369.     SetHitImage(exporow.spr 50 50 13)
  370.     CanShootFlyer()
  371.     CanShootGround()
  372.   }
  373.   CanMiddle()
  374.   CanTop()
  375.   SetVulnerability(TankPlating 100)
  376. }
  377. ;; Bottom part of a Tank Hunter
  378.  
  379. DefinePartType(TankHunterTank)
  380. {
  381.   SetImage(hunmrow.spr 1)                  ;; Image name, number of frames
  382.   SetIsometricImage(huniso.spr 54 40)    ;; Image name, x size, y size
  383.   SetDescription(Tank_Hunter_Tank)         ;; Editor description
  384.   SetPrerequisite(7 48 7 0 0 0)              ;; Prerequisite building
  385.   SetSide(0)
  386.   SetCPULoad(6)                            ;; Load on CPU
  387.   SetPhysics(3 5 1 900000)                 ;; Weight, speed, rotation rate, max energy
  388.   SetStrength(2000 1800 700)               ;; Shield, armour internal hitpoints
  389.   SetCost(500 10)                          ;; Credits, time in seconds
  390.   SetSelectSounds(gfsvhic1.wav gfsvhic2.wav gfsvhic3.wav gfsvhic4.wav)
  391.   SetResponseSounds(gfrvhic1.wav gfrvhic2.wav gfrvhic3.wav gfrvhic4.wav)
  392.   UseEffects(Track)                      ;;
  393.   CanBottom()
  394.   SetVulnerability(TankPlating 100)
  395. }
  396.  
  397. ;; Gun part of a Tank hunter
  398.  
  399. DefinePartType(TankHunterFire)
  400. {
  401.   SetImage(hungrow.spr 2)                  ;; Image name, number of frames
  402.   SetIsometricImage(blankiso.spr 54 40)  ;; Image name, x size, y size
  403.   SetDescription(Tank_Hunter_Gun)          ;; Editor description
  404.   SetPrerequisite(7 48 7 0 0 0)              ;; Prerequisite building
  405.   SetSide(0)
  406.   SetCPULoad(6)                            ;; Load on CPU
  407.   SetPhysics(3 0 1 900000)                 ;; Weight, speed, rotation rate, max energy
  408.   SetStrength(2000 1000 800)               ;; Shield, armour internal hitpoints
  409.   SetCost(500 7)                           ;; Credits, time in seconds
  410.   SetWeapon(8 1000 50 2000 200 230 250 cannon) ;; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  411.   {
  412.     SetProjectileImage(crow.spr 20 20 3)
  413.     SetHitImage(nwxprow.spr 54 40 13)
  414.     SetEffectRadius(3)
  415.     CanShootFlyer()
  416.     CanShootGround()
  417.   }
  418.   CanMiddle()
  419.   CanTop()
  420.   SetVulnerability(TankPlating 100)
  421. }
  422.  
  423. ;; Bottom part of a Self Propelled Artillery piece
  424.  
  425. DefinePartType(SPA)
  426. {
  427.   SetImage(spamrow.spr 5)                  ;; Image name, number of frames
  428.   SetIsometricImage(spaiso.spr 54 40)   ;; Image name, x size, y size
  429.   SetDescription(Self_Propelled_Artillery) ;; Editor description
  430.   SetPrerequisite(7 36 8 0 0 0)              ;; Prerequisite building
  431.   SetSide(-1)
  432.   SetCPULoad(6)                            ;; Load on CPU
  433.   SetPhysics(3 5 1 900000)                 ;; Weight, speed, rotation rate, max energy
  434.   SetStrength(2000 1800 700)               ;; Shield, armour internal hitpoints
  435.   SetCost(500 10)                          ;; Credits, time in seconds
  436.   SetSelectSounds(gfsvhic1.wav gfsvhic2.wav gfsvhic3.wav gfsvhic4.wav)
  437.   SetResponseSounds(gfrvhic1.wav gfrvhic2.wav gfrvhic3.wav gfrvhic4.wav)
  438.   UseEffects(Track)                      ;;
  439.   CanBottom()
  440.   SetVulnerability(TankPlating 100)
  441. }
  442.  
  443. ; Gun part of a Self Propelled Artillery piece
  444.  
  445. DefinePartType(SPAFire)
  446. {
  447.   SetImage(spagrow.spr 2)                  ;; Image name, number of frames
  448.   SetIsometricImage(blankiso.spr 54 40)  ;; Image name, x size, y size
  449.   SetDescription(Self_Propelled_Artillery_Gun) ;; Editor description
  450.   SetPrerequisite(7 36 8 0 0 0)              ;; Prerequisite building
  451.   SetSide(-1)
  452.   SetCPULoad(6)                            ;; Load on CPU
  453.   SetPhysics(3 0 1 900000)                 ;; Weight, speed, rotation rate, max energy
  454.   SetStrength(2000 1000 800)               ;; Shield, armour internal hitpoints
  455.   SetCost(500 7)                           ;; Credits, time in seconds
  456.   SetWeapon(12 1000 50 2000 200 230 250 cannon) ;; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  457.   {
  458.     SetProjectileImage(crow.spr 20 20 3)
  459.     SetHitImage(nexprow.spr 54 40 13)
  460.     SetEffectRadius(3)
  461.     CanShootFlyer()
  462.     CanShootGround()
  463.     CanShootIndirect()
  464.   }
  465.   CanMiddle()
  466.   CanTop()
  467.   SetVulnerability(TankPlating 100)
  468. }
  469.  
  470. ;; Bottom part of a Chemical Mortar
  471.  
  472. DefinePartType(ChemicalMortar)
  473. {
  474.   SetImage(mormrow.spr 1)                  ;; Image name, number of frames
  475.   SetIsometricImage(moriso.spr 54 40)    ;; Image name, x size, y size
  476.   SetDescription(Chemical_Mortar)          ;; Editor description
  477.   SetPrerequisite(7 44 7 0 0 0)              ;; Prerequisite building
  478.   SetSide(0)
  479.   SetCPULoad(6)                            ;; Load on CPU
  480.   SetPhysics(3 5 1 900000)                 ;; Weight, speed, rotation rate, max energy
  481.   SetStrength(2000 1800 700)               ;; Shield, armour internal hitpoints
  482.   SetCost(500 10)                          ;; Credits, time in seconds
  483.   SetSelectSounds(gfsvhic1.wav gfsvhic2.wav gfsvhic3.wav gfsvhic4.wav)
  484.   SetResponseSounds(gfrvhic1.wav gfrvhic2.wav gfrvhic3.wav gfrvhic4.wav)
  485.   UseEffects(Wheel)                      ;;
  486.   CanBottom()
  487.   SetVulnerability(TankPlating 100)
  488. }
  489.  
  490. ;; Gun part of a Chemical Mortar
  491.  
  492. DefinePartType(ChemicalMortarFire)
  493. {
  494.   SetImage(morgrow.spr 1)                  ;; Image name, number of frames
  495.   SetIsometricImage(blankiso.spr 54 40)  ;; Image name, x size, y size
  496.   SetDescription(Chemical_Mortar_Tube)     ;; Editor description
  497.   SetPrerequisite(7 44 7 0 0 0)              ;; Prerequisite building
  498.   SetSide(0)
  499.   SetCPULoad(6)                            ;; Load on CPU
  500.   SetPhysics(3 0 1 900000)                 ;; Weight, speed, rotation rate, max energy
  501.   SetStrength(2000 1000 800)               ;; Shield, armour internal hitpoints
  502.   SetCost(500 7)                           ;; Credits, time in seconds
  503.   SetWeapon(8 1000 50 2000 200 130 150 cannon) ;; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  504.   {
  505.     SetProjectileImage(crow.spr 20 20 3)
  506.     SetHitImage(expsrow.spr 40 40 11)
  507.     SetEffectRadius(3)
  508.     CanShootFlyer()
  509.     CanShootGround()
  510.     CanShootIndirect()
  511.   }
  512.  
  513.   CanMiddle()
  514.   CanTop()
  515.   SetVulnerability(TankPlating 100)
  516. }
  517.  
  518. ;; Bottom part of a Freedom Guard Cruise Missile Launcher
  519.  
  520. DefinePartType(CruiseMissileLauncher)
  521. {
  522.   SetImage(crumrow.spr 1)                  ;; Image name, number of frames
  523.   SetIsometricImage(cruiso.spr 54 40)    ;; Image name, x size, y size
  524.   SetDescription(Cruise_Missile_Launcher)  ;; Editor description
  525.   SetPrerequisite(7 50 8 14 0 0 )              ;; Prerequisite building
  526.   SetSide(0)
  527.   SetCPULoad(6)                            ;; Load on CPU
  528.   SetPhysics(3 5 1 900000)                 ;; Weight, speed, rotation rate, max energy
  529.   SetStrength(2000 1800 700)               ;; Shield, armour internal hitpoints
  530.   SetCost(500 10)                          ;; Credits, time in seconds
  531.   SetSelectSounds(gfsvhic1.wav gfsvhic2.wav gfsvhic3.wav gfsvhic4.wav)
  532.   SetResponseSounds(gfrvhic1.wav gfrvhic2.wav gfrvhic3.wav gfrvhic4.wav)
  533.   UseEffects(Wheel)                      ;;
  534.   CanBottom()
  535.   SetVulnerability(TankPlating 100)
  536. }
  537.  
  538. ;; Gun part of a Freedom Guard Cruise Missile Launcher
  539.  
  540. DefinePartType(CruiseMissileLauncherFire)
  541. {
  542.   SetImage(crugrow.spr 3)                  ;; Image name, number of frames
  543.   SetIsometricImage(blankiso.spr 54 40)  ;; Image name, x size, y size
  544.   SetDescription(Cruise_Missile_Launcher_Gun)  ;; Editor description
  545.   SetPrerequisite(7 50 8 14 0 0 )              ;; Prerequisite building
  546.   SetSide(0)
  547.   SetCPULoad(6)                            ;; Load on CPU
  548.   SetPhysics(3 0 1 900000)                 ;; Weight, speed, rotation rate, max energy
  549.   SetStrength(2000 1000 800)               ;; Shield, armour internal hitpoints
  550.   SetCost(500 7)                           ;; Credits, time in seconds
  551.   SetWeapon(12 1000 50 2000 200 230 250 guidedmissile) ;; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  552.   {
  553.     SetProjectileImage(mrow.spr 20 20 3)
  554.     SetHitImage(exprrow.spr 65 65 18)
  555.     CanShootFlyer()
  556.   }
  557.  
  558.   CanMiddle()
  559.   CanTop()
  560.   SetVulnerability(TankPlating 100)
  561. }
  562.  
  563. ;; Bottom part of a HostageTaker
  564.  
  565. DefinePartType(HostageTaker)
  566. {
  567.   SetImage(hosmrow.spr 4)                  ;; Image name, number of frames
  568.   SetIsometricImage(hosiso.spr 54 40)    ;; Image name, x size, y size
  569.   SetDescription(Hostage_Taker)            ;; Editor description
  570.   SetPrerequisite(7 62 16 0 0 0)             ;; Prerequisite building
  571.   SetSide(1)
  572.   SetCPULoad(6)                            ;; Load on CPU
  573.   SetPhysics(3 5 2 900000)                 ;; Weight, speed, rotation rate, max energy
  574.   SetStrength(1000 1800 700)               ;; Shield, armour internal hitpoints
  575.   SetCost(500 10)                          ;; Credits, time in seconds
  576.   SetSelectSounds(gisvhic1.wav gisvhic2.wav gisvhic3.wav gisvhic4.wav)
  577.   SetResponseSounds(girvhic1.wav girvhic2.wav girvhic3.wav girvhic4.wav)
  578.   UseEffects(Wheel)                      ;;
  579.   SetTransport(5 13 2 0 0 0 0 0)                    ;; Number of people, units of energy, chemical and mineral
  580.   CanBottom()
  581.   CanGrab()
  582.   SetVulnerability(TankPlating 100)
  583. }
  584.  
  585. ;; Acting part of a HostageTaker
  586.  
  587. DefinePartType(HostageTakerAct)
  588. {
  589.   SetImage(hosmrow.spr 3)                  ;; Image name, number of frames
  590.   SetIsometricImage(hosiso.spr 54 40)    ;; Image name, x size, y size
  591.   SetDescription(Hostage_Taker_Grab)       ;; Editor description
  592.   SetPrerequisite(7 62 16 0 0 0)           ;; Prerequisite building
  593.   SetSide(1)
  594.   SetCPULoad(6)                            ;; Load on CPU
  595.   SetPhysics(3 5 2 900000)                 ;; Weight, speed, rotation rate, max energy
  596.   SetStrength(1000 1800 700)               ;; Shield, armour internal hitpoints
  597.   SetCost(500 10)                          ;; Credits, time in seconds
  598.   UseEffects(Wheel)                      ;;
  599.   CanBottom()
  600.   CanGrab()
  601.   SetVulnerability(TankPlating 100)
  602. }
  603.  
  604. ;; Bottom part of a ground transport
  605.  
  606. DefinePartType(GroundTransporter)
  607. {
  608.   SetImage(grnmrow.spr 3)                  ;; Image name, number of frames
  609.   SetIsometricImage(grniso.spr 54 40)    ;; Image name, x size, y size
  610.   SetDescription(Ground_Transport)         ;; Editor description
  611.   SetPrerequisite(7 34 7 0 0 0)              ;; Prerequisite building
  612.   SetSide(-1)
  613.   SetCPULoad(6)                            ;; Load on CPU
  614.   SetPhysics(3 5 2 900000)                 ;; Weight, speed, rotation rate, max energy
  615.   SetStrength(1000 1800 700)               ;; Shield, armour internal hitpoints
  616.   SetCost(500 10)                          ;; Credits, time in seconds
  617.   SetSelectSounds(gfsvhic1.wav gfsvhic2.wav gfsvhic3.wav gfsvhic4.wav)
  618.   SetResponseSounds(gfrvhic1.wav gfrvhic2.wav gfrvhic3.wav gfrvhic4.wav)
  619. ;  SetTransport(0 0 0 2000 2000 2000)                 ;; Number of people, units of energy, chemical and mineral
  620.   SetTransport(0 0 0 0 0 1000 0 1000)                 ;; Number of people, units of energy, chemical and mineral
  621.   UseEffects(Wheel)
  622.   CanBottom()
  623.   SetVulnerability(TankPlating 100)
  624. }
  625.  
  626.  
  627. ;; Bottom part of a hover transport
  628.  
  629. DefinePartType(HoverTransporter)
  630. {
  631.  SetImage(hvrmrow.spr 4)                   ;; Image name, number of frames
  632.   SetIsometricImage(hvriso.spr 54 40)      ;; Image name, x size, y size
  633.   SetDescription(Hover_Transport)          ;; Editor description
  634.   SetPrerequisite(7 35 16 0 0 0)           ;; Prerequisite building
  635.   SetSide(-1)
  636.   SetCPULoad(6)                            ;; Load on CPU
  637.   SetPhysics(3 9 2 900000)                 ;; Weight, speed, rotation rate, max energy
  638.   SetStrength(1000 1800 700)               ;; Shield, armour internal hitpoints
  639.   SetCost(800 10)                          ;; Credits, time in seconds
  640.   SetSelectSounds(gfsvhic1.wav gfsvhic2.wav gfsvhic3.wav gfsvhic4.wav)
  641.   SetResponseSounds(gfrvhic1.wav gfrvhic2.wav gfrvhic3.wav gfrvhic4.wav)
  642.   SetTransport(0 0 0 0 0 1000 0 1000)                  ;; Number of people, units of energy, chemical and mineral
  643.   UseEffects(Hover)
  644.   CanBottom()
  645.   SetVulnerability(TankPlating 100)
  646. }
  647.  
  648. ;DefinePartType(HoverTransporterAct)
  649. ;{
  650. ; SetImage(hvrgrow.spr 4)                   ;; Image name, number of frames
  651. ;  SetIsometricImage(hvriso.spr 54 40)      ;; Image name, x size, y size
  652. ;  SetDescription(Hover_Transport_Action)   ;; Editor description
  653. ;  SetPrerequisite(7 35 16 0 0 0)           ;; Prerequisite building
  654. ;  SetSide(-1)
  655. ;  SetCPULoad(6)                            ;; Load on CPU
  656. ;  SetPhysics(3 9 2 900000)                 ;; Weight, speed, rotation rate, max energy
  657. ;  SetStrength(1000 1800 700)               ;; Shield, armour internal hitpoints
  658. ;  SetCost(800 10)                          ;; Credits, time in seconds
  659. ;  SetSelectSounds(gfsvhic1.wav   gfsvhic2.wav gfsvhic3.wav gfsvhic4.wav)
  660. ;  SetResponseSounds(gfrvhic1.wav gfrvhic2.wav gfrvhic3.wav gfrvhic4.wav)
  661. ;  UseEffects(Hover)
  662. ;  CanMiddle()
  663. ;  CanTop()
  664. ;  SetVulnerability(TankPlating 100)
  665. ;}
  666.  
  667. ;; Bottom part of a Imperium Mobile Mechanic/Healer
  668.  
  669. DefinePartType(Fixer)
  670. {
  671.   SetImage(fixmrow.spr 1)                  ;; Image name, number of frames
  672.   SetIsometricImage(blankiso.spr 54 40)    ;; Image name, x size, y size
  673.   SetDescription(Mobile_Mechanic_Healer)   ;; Editor description
  674.   SetPrerequisite(7 55 9 10 0 0)              ;; Prerequisite building
  675.   SetSide(1)
  676.   SetCPULoad(6)                            ;; Load on CPU
  677.   SetPhysics(3 5 2 900000)                 ;; Weight, speed, rotation rate, max energy
  678.   SetStrength(1000 1800 700)               ;; Shield, armour internal hitpoints
  679.   SetCost(500 10)                          ;; Credits, time in seconds
  680.   SetSelectSounds(gismhv1.wav gismhv2.wav none none)
  681.   SetResponseSounds(girmhv1.wav girmhv2.wav none none)
  682.   UseEffects(Wheel)                      ;;
  683.   CanBottom()
  684.   SetVulnerability(TankPlating 100)
  685. }
  686.  
  687. ;; Healing part of a Imperium Mobile Mechanic/Healer
  688.  
  689. DefinePartType(FixerAct)
  690. {
  691.   SetImage(fixmrow.spr 2)                     ;; Image name, number of frames
  692.   SetIsometricImage(blankiso.spr 54 40)     ;; Image name, x size, y size
  693.   SetDescription(Mobile_Mechanic_Healer_Act)  ;; Editor description
  694.   SetPrerequisite(7 55 9 10 0 0)              ;; Prerequisite building
  695.   SetSide(1)
  696.   SetCPULoad(1)                               ;; Load on CPU
  697.   SetPhysics(1 0 1 900000)                    ;; Weight, speed, rotation rate, max energy
  698.   SetStrength(200 200 200)                    ;; Shield, armour internal hitpoints
  699.   SetCost(500 7)                              ;; Credits, time in seconds
  700.   SetWeapon(2 1000 50 2000 -700 -700 -700 heal) ;; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  701.   {
  702.     CanShootFlyer()
  703.     CanShootGround()
  704.     SetEffectRadius(3)
  705.   }
  706.   IsHuman()
  707.   CanHeal()
  708.   CanRepair()
  709.   CanMiddle()
  710.   CanTop()
  711.   SetVulnerability(TankPlating 100)
  712. }
  713.  
  714. ;; Bottom part of a Freedom Guard infantry fighting vehicle
  715.  
  716. DefinePartType(fgIFV)
  717. {
  718.   SetImage(ifvmrow.spr 1)                  ;; Image name, number of frames
  719.   SetIsometricImage(ifviso.spr 54 40)    ;; Image name, x size, y size
  720.   SetDescription(Infantry_Fighting_Vehicle) ;; Editor description
  721.   SetPrerequisite(7 45 7 0 0 0)              ;; Prerequisite building
  722.   SetSide(0)
  723.   SetCPULoad(6)                            ;; Load on CPU
  724.   SetPhysics(3 5 2 900000)                 ;; Weight, speed, rotation rate, max energy
  725.   SetStrength(1000 1800 700)               ;; Shield, armour internal hitpoints
  726.   SetCost(800 10)                          ;; Credits, time in seconds
  727.   SetSelectSounds(gfsvhic1.wav gfsvhic2.wav gfsvhic3.wav gfsvhic4.wav)
  728.   SetResponseSounds(gfrvhic1.wav gfrvhic2.wav gfrvhic3.wav gfrvhic4.wav)
  729.   SetTransport(5 13 4 0 0 0 0 0)                    ;; Number of people, units of energy, chemical and mineral
  730.   UseEffects(Wheel)                      ;;
  731.   CanBottom()
  732.   SetVulnerability(TankPlating 100)
  733. }
  734.  
  735. ;; Gun part of a freedom guard infantry fighting vehicle
  736.  
  737. DefinePartType(fgIFVFire)
  738. {
  739.   SetImage(ifvgrow.spr 2)                  ;; Image name, number of frames
  740.   SetIsometricImage(blankiso.spr 54 40)  ;; Image name, x size, y size
  741.   SetDescription(Infantry_Fighting_Vehicle_Gun) ;; Editor description
  742.   SetPrerequisite(7 45 7 0 0 0)              ;; Prerequisite building
  743.   SetSide(0)
  744.   SetCPULoad(6)                            ;; Load on CPU
  745.   SetPhysics(3 0 1 900000)                 ;; Weight, speed, rotation rate, max energy
  746.   SetStrength(2000 1000 800)               ;; Shield, armour internal hitpoints
  747.   SetCost(500 7)                           ;; Credits, time in seconds
  748.   SetWeapon(5 1000 50 2000 200 130 150 cannon) ;; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  749.   {
  750.     SetProjectileImage(crow.spr 20 20 3)
  751.     SetHitImage(expmrow.spr 40 40 11)
  752.     SetEffectRadius(3)
  753.     CanShootFlyer()
  754.     CanShootGround()
  755.   }
  756.   CanMiddle()
  757.   CanTop()
  758.   SetVulnerability(TankPlating 100)
  759. }
  760.  
  761. ;; Bottom part of an imperial assault vehicle
  762.  
  763. DefinePartType(ImpAssaultVehicle)
  764. {
  765.   SetImage(assmrow.spr 1)                  ;; Image name, number of frames
  766.   SetIsometricImage(assiso.spr 54 40)    ;; Image name, x size, y size
  767.   SetDescription(Assault_Vehicle)          ;; Editor description
  768.   SetPrerequisite(7 56 7 0 0 0)              ;; Prerequisite building
  769.   SetSide(1)
  770.   SetCPULoad(6)                            ;; Load on CPU
  771.   SetPhysics(3 5 2 900000)                 ;; Weight, speed, rotation rate, max energy
  772.   SetStrength(1000 1800 700)               ;; Shield, armour internal hitpoints
  773.   SetCost(800 10)                          ;; Credits, time in seconds
  774.   SetSelectSounds(gisvhic1.wav gisvhic2.wav gisvhic3.wav gisvhic4.wav)
  775.   SetResponseSounds(girvhic1.wav girvhic2.wav girvhic3.wav girvhic4.wav)
  776.   SetTransport(5 13 4 0 0 0 0 0)                    ;; Number of people, units of energy, chemical and mineral
  777.   UseEffects(Wheel)                      ;;
  778.   CanBottom()
  779.   SetVulnerability(TankPlating 100)
  780. }
  781.  
  782. ;; Gun part of an imperial assault vehicle
  783.  
  784. DefinePartType(ImpAssaultVehicleFire)
  785. {
  786.   SetImage(assgrow.spr 1)                  ;; Image name, number of frames
  787.   SetIsometricImage(blankiso.spr 54 40)  ;; Image name, x size, y size
  788.   SetDescription(Assault_Vehicle_Gun)      ;; Editor description
  789.   SetPrerequisite(7 56 7 0 0 0)              ;; Prerequisite building
  790.   SetSide(1)
  791.   SetCPULoad(6)                            ;; Load on CPU
  792.   SetPhysics(3 0 1 900000)                 ;; Weight, speed, rotation rate, max energy
  793.   SetStrength(2000 1000 800)               ;; Shield, armour internal hitpoints
  794.   SetCost(500 7)                           ;; Credits, time in seconds
  795.   SetWeapon(6 1000 50 2000 200 230 250 cannon) ;; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  796.   {
  797.     SetProjectileImage(crow.spr 20 20 3)
  798.     SetHitImage(explrow.spr 40 40 11)
  799.     SetEffectRadius(3)
  800.     CanShootFlyer()
  801.     CanShootGround()
  802.   }
  803.  
  804.   CanMiddle()
  805.   CanTop()
  806.   SetVulnerability(TankPlating 100)
  807. }
  808.  
  809. ;; Bottom part of a Strike Marine
  810.  
  811. DefinePartType(StrikeMarine)
  812. {
  813.   SetImage(strmrow.spr 5)                  ;; Image name, number of frames
  814.   SetIsometricImage(striso.spr 54 40)    ;; Image name, x size, y size
  815.   SetDescription(Strike_Marine)            ;; Editor description
  816.   SetPrerequisite(6 51 6 0 0 0)            ;; Prerequisite building
  817.   SetSide(1)
  818.   SetCPULoad(1)                            ;; Load on CPU
  819.   SetPhysics(1 3 1 900000)                 ;; Weight, speed, rotation rate, max energy
  820.   SetStrength(200 200 200)                 ;; Shield, armour internal hitpoints
  821.   SetCost(500 10)                          ;; Credits, time in seconds
  822.   SetSelectSounds(gismrin1.wav gismrin2.wav none none)
  823.   SetResponseSounds(girmrin1.wav girmrin2.wav  none none)
  824.   UseEffects(Foot)                         ;;
  825.   IsHuman()
  826.   CanBottom()
  827.   SetVulnerability(HumanSkin 100)
  828. }
  829.  
  830. ;; Gun part of a Strike Marine
  831.  
  832. DefinePartType(StrikeMarineFire)
  833. {
  834.   SetImage(strgrow.spr 2)                     ;; Image name, number of frames
  835.   SetIsometricImage(blankiso.spr 54 40)     ;; Image name, x size, y size
  836.   SetDescription(Strike_Marine_Gun)           ;; Editor description
  837.   SetPrerequisite(6 51 6 0 0 0)              ;; Prerequisite building
  838.   SetSide(1)
  839.   SetCPULoad(1)                               ;; Load on CPU
  840.   SetPhysics(1 0 1 900000)                    ;; Weight, speed, rotation rate, max energy
  841.   SetStrength(200 200 200)                    ;; Shield, armour internal hitpoints
  842.   SetCost(500 7)                              ;; Credits, time in seconds
  843.   SetWeapon(4 1000 50 2000 100 130 150 cannon) ;; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  844.   {
  845.     SetProjectileImage(crow.spr 20 20 3)
  846.     SetHitImage(exp3col.spr 32 32 15)
  847.     SetEffectRadius(1)
  848.     CanShootFlyer()
  849.     CanShootGround()
  850.   }
  851.   IsHuman()
  852.   CanMiddle()
  853.   CanTop()
  854.   SetVulnerability(HumanSkin 100)
  855. }
  856.  
  857. ;; Bottom part of a Hover suit Marine
  858.  
  859. DefinePartType(HoverMarine)
  860. {
  861.   SetImage(hovmrow.spr 4)                  ;; Image name, number of frames
  862.   SetIsometricImage(hoviso.spr 54 40)    ;; Image name, x size, y size
  863.   SetDescription(Hover_Marine)             ;; Editor description
  864.   SetPrerequisite(6 53 16 0 0 0)              ;; Prerequisite building
  865.   SetSide(1)
  866.   SetCPULoad(1)                            ;; Load on CPU
  867.   SetPhysics(1 3 1 900000)                 ;; Weight, speed, rotation rate, max energy
  868.   SetStrength(200 200 200)                 ;; Shield, armour internal hitpoints
  869.   SetCost(500 10)                          ;; Credits, time in seconds
  870.   SetSelectSounds(gismrin1.wav gismrin2.wav none none)
  871.   SetResponseSounds(girmrin1.wav girmrin2.wav  none none)
  872.   UseEffects(Foot)                         ;;
  873.   IsHuman()
  874.   CanBottom()
  875.   SetVulnerability(HumanSkin 100)
  876. }
  877.  
  878. ;; Gun part of a Hover suit Marine
  879.  
  880. DefinePartType(HoverMarineFire)
  881. {
  882.   SetImage(hovgrow.spr 2)                     ;; Image name, number of frames
  883.   SetIsometricImage(blankiso.spr 54 40)     ;; Image name, x size, y size
  884.   SetDescription(Hover_Marine_Gun)            ;; Editor description
  885.   SetPrerequisite(6 53 16 0 0 0)              ;; Prerequisite building
  886.   SetSide(1)
  887.   SetCPULoad(1)                               ;; Load on CPU
  888.   SetPhysics(1 0 1 900000)                    ;; Weight, speed, rotation rate, max energy
  889.   SetStrength(200 200 200)                    ;; Shield, armour internal hitpoints
  890.   SetCost(500 7)                              ;; Credits, time in seconds
  891.   SetWeapon(4 1000 50 2000 100 130 150 cannon) ;; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  892.   {
  893.     SetProjectileImage(crow.spr 20 20 3)
  894.     SetHitImage(exp3col.spr 32 32 15)
  895.     SetEffectRadius(1)
  896.     CanShootFlyer()
  897.     CanShootGround()
  898.   }
  899.   IsHuman()
  900.   CanMiddle()
  901.   CanTop()
  902.   CanFly()
  903.   SetVulnerability(HumanSkin 100)
  904. }
  905.  
  906. ;; Bottom part of a Fire Support Marine
  907.  
  908. DefinePartType(FireSupportMarine)
  909. {
  910.   SetImage(firmrow.spr 5)                  ;; Image name, number of frames
  911.   SetIsometricImage(firiso.spr 54 40)    ;; Image name, x size, y size
  912.   SetDescription(Fire_Support_Marine)      ;; Editor description
  913.   SetPrerequisite(6 52 6 0 0 0)              ;; Prerequisite building
  914.   SetSide(1)
  915.   SetCPULoad(1)                            ;; Load on CPU
  916.   SetPhysics(1 3 1 900000)                 ;; Weight, speed, rotation rate, max energy
  917.   SetStrength(200 200 200)                 ;; Shield, armour internal hitpoints
  918.   SetCost(500 10)                          ;; Credits, time in seconds
  919.   SetSelectSounds(gismrin1.wav gismrin2.wav none none)
  920.   SetResponseSounds(girmrin1.wav girmrin2.wav  none none)
  921.   UseEffects(Foot)                         ;;
  922.   IsHuman()
  923.   CanBottom()
  924.   SetVulnerability(TankPlating 100)
  925. }
  926.  
  927. ;; Gun part of a Fire Support Marine
  928.  
  929. DefinePartType(FireSupportMarineFire)
  930. {
  931.   SetImage(firgrow.spr 1)                     ;; Image name, number of frames
  932.   SetIsometricImage(blankiso.spr 54 40)     ;; Image name, x size, y size
  933.   SetDescription(Fire_Support_Marine_Gun)     ;; Editor description
  934.   SetPrerequisite(6 52 6 0 0 0)              ;; Prerequisite building
  935.   SetSide(1)
  936.   SetCPULoad(1)                               ;; Load on CPU
  937.   SetPhysics(1 0 1 900000)                    ;; Weight, speed, rotation rate, max energy
  938.   SetStrength(200 200 200)                    ;; Shield, armour internal hitpoints
  939.   SetCost(500 7)                              ;; Credits, time in seconds
  940.   SetWeapon(5 1000 50 2000 100 230 250 cannon) ;; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  941.   {
  942.     SetProjectileImage(crow.spr 20 20 3)
  943.     SetHitImage(exp3col.spr 32 32 15)
  944.     SetEffectRadius(1)
  945.     CanShootFlyer()
  946.     CanShootGround()
  947.   }
  948.   IsHuman()
  949.   CanMiddle()
  950.   CanTop()
  951.   SetVulnerability(TankPlating 100)
  952. }
  953.  
  954. ; Bottom part of a Sniper
  955.  
  956. DefinePartType(Sniper)
  957. {
  958.   SetImage(snimrow.spr 5)                  ;; Image name, number of frames
  959.   SetIsometricImage(sniiso.spr 54 40)    ;; Image name, x size, y size
  960.   SetDescription(Sniper)                   ;; Editor description
  961.   SetPrerequisite(6 40 11 0 0 0)              ;; Prerequisite building
  962.   SetSide(0)
  963.   SetCPULoad(1)                            ;; Load on CPU
  964.   SetPhysics(1 3 1 900000)                 ;; Weight, speed, rotation rate, max energy
  965.   SetStrength(200 200 200)                 ;; Shield, armour internal hitpoints
  966.   SetCost(500 10)                          ;; Credits, time in seconds
  967.   SetSelectSounds(GFSsnip1.wav GFSsnip2.wav GFSsnip3.wav none)
  968.   SetResponseSounds(GFRsnip1.wav GFRsnip2.wav none none)
  969.   UseEffects(Foot)                         ;;
  970.   IsHuman()
  971.   CanBottom()
  972.   SetVulnerability(TankPlating 100)
  973. }
  974.  
  975. ;; Gun part of a Sniper
  976.  
  977. DefinePartType(SniperFire)
  978. {
  979.   SetImage(snigrow.spr 2)                     ;; Image name, number of frames
  980.   SetIsometricImage(blankiso.spr 54 40)     ;; Image name, x size, y size
  981.   SetDescription(Sniper_Gun)                  ;; Editor description
  982.   SetPrerequisite(6 40 11 0 0 0)              ;; Prerequisite building
  983.   SetSide(0)
  984.   SetCPULoad(1)                               ;; Load on CPU
  985.   SetPhysics(1 0 1 900000)                    ;; Weight, speed, rotation rate, max energy
  986.   SetStrength(200 200 200)                    ;; Shield, armour internal hitpoints
  987.   SetCost(500 7)                              ;; Credits, time in seconds
  988.   SetWeapon(8 1000 50 2000 400 400 450 cannon) ;; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  989.   {
  990.     SetProjectileImage(crow.spr 20 20 3)
  991.     SetHitImage(exp3col.spr 32 32 15)
  992.     SetEffectRadius(1)
  993.     CanShootFlyer()
  994.     CanShootGround()
  995.   }
  996.   IsHuman()
  997.   CanMiddle()
  998.   CanTop()
  999.   SetVulnerability(TankPlating 100)
  1000. }
  1001.  
  1002. ;; Bottom part of a Suicide Bomber
  1003.  
  1004. DefinePartType(SuicideBomber)
  1005. {
  1006.   SetImage(bommrow.spr 5)                  ;; Image name, number of frames
  1007.   SetIsometricImage(bomiso.spr 54 40)    ;; Image name, x size, y size
  1008.   SetDescription(Suicide_Bomber)            ;; Editor description
  1009.   SetPrerequisite(6 33 6 62 0 0)              ;; Prerequisite building
  1010.   SetSide(-1)
  1011.   SetCPULoad(1)                            ;; Load on CPU
  1012.   SetPhysics(1 3 1 900000)                 ;; Weight, speed, rotation rate, max energy
  1013.   SetStrength(200 200 200)                 ;; Shield, armour internal hitpoints
  1014.   SetCost(500 10)                          ;; Credits, time in seconds
  1015.   SetSelectSounds(gfsbom1.wav none none none)
  1016.   SetResponseSounds(gfrsbom2.wav none none none)
  1017.   UseEffects(Foot)                         ;;
  1018.   IsHuman()
  1019.   CanBottom()
  1020.   SetVulnerability(TankPlating 100)
  1021. }
  1022.  
  1023. ;; Bomb part of a Suicide Bomber
  1024.  
  1025. DefinePartType(SuicideBomberFire)
  1026. {
  1027.   SetImage(bomgrow.spr 2)                     ;; Image name, number of frames
  1028.   SetIsometricImage(blankiso.spr 54 40)     ;; Image name, x size, y size
  1029.   SetDescription(Suicide_Bomber_Bomb)         ;; Editor description
  1030.   SetPrerequisite(6 33 6 62 0 0)              ;; Prerequisite building
  1031.   SetSide(-1)
  1032.   SetCPULoad(1)                               ;; Load on CPU
  1033.   SetPhysics(1 0 1 900000)                    ;; Weight, speed, rotation rate, max energy
  1034.   SetStrength(200 200 200)                    ;; Shield, armour internal hitpoints
  1035.   SetCost(500 3)                              ;; Credits, time in seconds
  1036.   SetWeapon(2 2 50 2000 550 550 550 area)     ;; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  1037.   {
  1038.     SetProjectileImage(crow.spr 20 20 3)
  1039.     SetHitImage(exprrow.spr 65 65 18)
  1040.     SetEffectRadius(4)
  1041.     CanShootFlyer()
  1042.     CanShootGround()
  1043.   }
  1044.   IsHuman()
  1045.   CanMiddle()
  1046.   CanTop()
  1047.   SetVulnerability(TankPlating 100)
  1048. }
  1049.  
  1050. ; Bottom part of a Suicide Nuker
  1051.  
  1052. DefinePartType(SuicideNuker)
  1053. {
  1054.   SetImage(nukmrow.spr 5)                  ;; Image name, number of frames
  1055.   SetIsometricImage(blankiso.spr 54 40)    ;; Image name, x size, y size
  1056.   SetDescription(Suicide_Nuker)            ;; Editor description
  1057.   SetPrerequisite(6 43 16 0 0 0)              ;; Prerequisite building
  1058.   SetSide(0)
  1059.   SetCPULoad(1)                            ;; Load on CPU
  1060.   SetPhysics(1 3 1 900000)                 ;; Weight, speed, rotation rate, max energy
  1061.   SetStrength(200 200 200)                 ;; Shield, armour internal hitpoints
  1062.   SetCost(500 10)                          ;; Credits, time in seconds
  1063.   SetSelectSounds(gfssunuk.wav none none none)
  1064.   SetResponseSounds(gfrsunuk.wav none none none)
  1065.   UseEffects(Foot)                         ;;
  1066.   IsHuman()
  1067.   CanBottom()
  1068.   SetVulnerability(TankPlating 100)
  1069. }
  1070.  
  1071. ;; Bomb part of a Suicide Nuker
  1072.  
  1073. DefinePartType(SuicideNukerFire)
  1074. {
  1075.   SetImage(blankrow.spr 1)                    ;; Image name, number of frames
  1076.   SetIsometricImage(blankiso.spr 54 40)     ;; Image name, x size, y size
  1077.   SetDescription(Suicide_Nuker_Bomb)          ;; Editor description
  1078.   SetPrerequisite(6 43 16 0 0 0)              ;; Prerequisite building
  1079.   SetSide(0)
  1080.   SetCPULoad(1)                               ;; Load on CPU
  1081.   SetPhysics(1 0 1 900000)                    ;; Weight, speed, rotation rate, max energy
  1082.   SetStrength(200 200 200)                    ;; Shield, armour internal hitpoints
  1083.   SetCost(500 3)                              ;; Credits, time in seconds
  1084.   SetWeapon(2 2 50 2000 5000 5500 5500 area)     ;; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  1085.   {
  1086.     SetProjectileImage(crow.spr 20 20 3)
  1087.     SetHitImage(nucbrow.spr 160 160 17)
  1088.     SetEffectRadius(10)
  1089.     CanShootFlyer()
  1090.     CanShootGround()
  1091.   }
  1092.   IsHuman()
  1093.   CanMiddle()
  1094.   CanTop()
  1095.   SetVulnerability(TankPlating 100)
  1096. }
  1097.  
  1098. ;; Bottom part of a Freedom Fighter
  1099.  
  1100. DefinePartType(FreedomFighter)
  1101. {
  1102.   SetImage(fgfmrow.spr 5)                     ;; Image name, number of frames
  1103.   SetIsometricImage(fgfiso.spr 54 40)       ;; Image name, x size, y size
  1104.   SetDescription(Freedom_Fighter)             ;; Editor description
  1105.   SetPrerequisite(6 41 6 0 0 0)              ;; Prerequisite building
  1106.   SetSide(0)
  1107.   SetCPULoad(1)                               ;; Load on CPU
  1108.   SetPhysics(1 3 1 900000)                    ;; Weight, speed, rotation rate, max energy
  1109.   SetStrength(200 200 200)                    ;; Shield, armour internal hitpoints
  1110.   SetCost(500 10)                             ;; Credits, time in seconds
  1111.   SetSelectSounds(GFSfigt1.wav GFSfigt2.wav none none)
  1112.   SetResponseSounds(GFRfigt1.wav GFRfigt2.wav none none)
  1113.   UseEffects(Foot)                            ;;
  1114.   IsHuman()
  1115.   CanBottom()
  1116.   SetVulnerability(TankPlating 100)
  1117. }
  1118.  
  1119. ;; Gun part of a Freedom Fighter
  1120.  
  1121. DefinePartType(FreedomFighterFire)
  1122. {
  1123.   SetImage(fgfgrow.spr 2)                     ;; Image name, number of frames
  1124.   SetIsometricImage(blankiso.spr 54 40)     ;; Image name, x size, y size
  1125.   SetDescription(Freedom_Fighter_Gun)         ;; Editor description
  1126.   SetPrerequisite(6 41 6 0 0 0)              ;; Prerequisite building
  1127.   SetSide(0)
  1128.   SetCPULoad(1)                               ;; Load on CPU
  1129.   SetPhysics(1 0 1 900000)                    ;; Weight, speed, rotation rate, max energy
  1130.   SetStrength(200 200 200)                    ;; Shield, armour internal hitpoints
  1131.   SetCost(500 7)                              ;; Credits, time in seconds
  1132.   SetWeapon(4 1000 50 2000 100 130 150 cannon) ;; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  1133.   {
  1134.     SetProjectileImage(crow.spr 20 20 3)
  1135.     SetHitImage(exp3col.spr 32 32 15)
  1136.     SetEffectRadius(1)
  1137.     CanShootFlyer()
  1138.     CanShootGround()
  1139.   }
  1140.   IsHuman()
  1141.   CanMiddle()
  1142.   CanTop()
  1143.   SetVulnerability(TankPlating 100)
  1144. }
  1145.  
  1146. ;; Bottom part of a Scout
  1147.  
  1148. DefinePartType(Scout)
  1149. {
  1150.   SetImage(fscmrow.spr 5)                     ;; Image name, number of frames
  1151.   SetIsometricImage(blankiso.spr 54 40)       ;; Image name, x size, y size
  1152.   SetDescription(Scout)                       ;; Editor description
  1153.   SetPrerequisite(6 37 6 0 0 0)              ;; Prerequisite building
  1154.   SetSide(0)
  1155.   SetCPULoad(1)                               ;; Load on CPU
  1156.   SetPhysics(1 3 1 900000)                    ;; Weight, speed, rotation rate, max energy
  1157.   SetStrength(200 200 200)                    ;; Shield, armour internal hitpoints
  1158.   SetCost(500 10)                             ;; Credits, time in seconds
  1159.   SetSelectSounds(GFSsct1.wav GFSsct2.wav none none)
  1160.   SetResponseSounds(GFRsct1.wav GFRsct2.wav none none)
  1161.   UseEffects(Foot)                            ;;
  1162.   IsHuman()
  1163.   CanBottom()
  1164.   CanStealth()
  1165.   CanMorph()
  1166.   SetVulnerability(TankPlating 100)
  1167. }
  1168.  
  1169. ;; Gun part of a Scout
  1170.  
  1171. DefinePartType(ScoutFire)
  1172. {
  1173.   SetImage(fscgrow.spr 2)                     ;; Image name, number of frames
  1174.   SetIsometricImage(blankiso.spr 54 40)     ;; Image name, x size, y size
  1175.   SetDescription(Scout_Gun)                   ;; Editor description
  1176.   SetPrerequisite(6 37 6 0 0 0)              ;; Prerequisite building
  1177.   SetSide(0)
  1178.   SetCPULoad(1)                               ;; Load on CPU
  1179.   SetPhysics(1 0 1 900000)                    ;; Weight, speed, rotation rate, max energy
  1180.   SetStrength(200 200 200)                    ;; Shield, armour internal hitpoints
  1181.   SetCost(500 7)                              ;; Credits, time in seconds
  1182.   SetWeapon(4 1000 50 2000 100 130 150 cannon) ;; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  1183.   {
  1184.     SetProjectileImage(crow.spr 20 20 3)
  1185.     SetHitImage(exp3col.spr 32 32 15)
  1186.     SetEffectRadius(1)
  1187.     CanShootFlyer()
  1188.     CanShootGround()
  1189.   }
  1190.   IsHuman()
  1191.   CanMiddle()
  1192.   CanTop()
  1193.   CanMorph()
  1194.   SetVulnerability(TankPlating 100)
  1195. }
  1196.  
  1197. ;; Bottom part of a Heavy Weapon Freedom Fighter
  1198.  
  1199. DefinePartType(HWFreedomFighter)
  1200. {
  1201.   SetImage(hvymrow.spr 5)                     ;; Image name, number of frames
  1202.   SetIsometricImage(hvyiso.spr 54 40)       ;; Image name, x size, y size
  1203.   SetDescription(Heavy_Weapon_Freedom_Fighter);; Editor description
  1204.   SetPrerequisite(6 42 6 0 0 0)                 ;; Prerequisite building
  1205.   SetSide(0)
  1206.   SetCPULoad(1)                               ;; Load on CPU
  1207.   SetPhysics(1 3 1 900000)                    ;; Weight, speed, rotation rate, max energy
  1208.   SetStrength(200 200 200)                    ;; Shield, armour internal hitpoints
  1209.   SetCost(500 10)                             ;; Credits, time in seconds
  1210.   SetSelectSounds(GFSfigt1.wav GFSfigt2.wav none none)
  1211.   SetResponseSounds(GFRfigt1.wav GFRfigt2.wav none none)
  1212.   UseEffects(Foot)                            ;;
  1213.   IsHuman()
  1214.   CanBottom()
  1215.   SetVulnerability(TankPlating 100)
  1216. }
  1217.  
  1218. ;; Gun part of a Heavy Weapon Freedom Fighter
  1219. ;;  SetDescription(Heavy_Weapon_Freedom_Fighter_Gun) ;; Editor description
  1220.  
  1221. DefinePartType(HWFreedomFighterFire)
  1222. {
  1223.   SetImage(hvygrow.spr 2)                     ;; Image name, number of frames
  1224.   SetIsometricImage(blankiso.spr 54 40)     ;; Image name, x size, y size
  1225.   SetDescription(HW_Freedom_Fighter_Gun)
  1226.   SetPrerequisite(6 42 6 0 0 0)               ;; Prerequisite building
  1227.   SetSide(0)
  1228.   SetCPULoad(1)                               ;; Load on CPU
  1229.   SetPhysics(1 0 1 900000)                    ;; Weight, speed, rotation rate, max energy
  1230.   SetStrength(200 200 200)                    ;; Shield, armour internal hitpoints
  1231.   SetCost(500 7)                              ;; Credits, time in seconds
  1232.   SetWeapon(5 1000 50 2000 100 230 250 cannon) ;; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  1233.   {
  1234.     SetProjectileImage(crow.spr 20 20 3)
  1235.     SetHitImage(exp3col.spr 32 32 15)
  1236.     SetEffectRadius(1)
  1237.     CanShootFlyer()
  1238.     CanShootGround()
  1239.   }
  1240.   IsHuman()
  1241.   CanMiddle()
  1242.   CanTop()
  1243.   SetVulnerability(TankPlating 100)
  1244. }
  1245.  
  1246. ;; Bottom part of a Medic
  1247. DefinePartType(Medic)
  1248. {
  1249.   SetImage(medmrow.spr 5)                     ;; Image name, number of frames
  1250.   SetIsometricImage(mediso.spr 54 40)       ;; Image name, x size, y size
  1251.   SetDescription(Medic)                       ;; Editor description
  1252.   SetPrerequisite(6 38 9 0 0 0)              ;; Prerequisite building
  1253.   SetSide(0)
  1254.   SetCPULoad(1)                               ;; Load on CPU
  1255.   SetPhysics(1 3 1 900000)                    ;; Weight, speed, rotation rate, max energy
  1256.   SetStrength(200 200 200)                    ;; Shield, armour internal hitpoints
  1257.   SetCost(500 10)                             ;; Credits, time in seconds
  1258.   SetSelectSounds(gfsmedc1.wav gfsmedc2.wav none none)
  1259.   SetResponseSounds(gfrmedc1.wav gfrmedc2.wav none none)
  1260.   UseEffects(Foot)                            ;;
  1261.   IsHuman()
  1262.   CanBottom()
  1263.   SetVulnerability(TankPlating 100)
  1264. }
  1265.  
  1266. ;; Healing part of a Medic
  1267.  
  1268. DefinePartType(MedicHeal)
  1269. {
  1270.   SetImage(medgrow.spr 2)                     ;; Image name, number of frames
  1271.   SetIsometricImage(blankiso.spr 54 40)     ;; Image name, x size, y size
  1272.   SetDescription(MedicHeal)                   ;; Editor description
  1273.   SetPrerequisite(6 38 9 0 0 0)              ;; Prerequisite building
  1274.   SetSide(0)
  1275.   SetCPULoad(1)                               ;; Load on CPU
  1276.   SetPhysics(1 0 1 900000)                    ;; Weight, speed, rotation rate, max energy
  1277.   SetStrength(200 200 200)                    ;; Shield, armour internal hitpoints
  1278.   SetCost(500 7)                              ;; Credits, time in seconds
  1279.   SetWeapon(2 1000 50 2000 -200 -200 -200 heal) ;; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  1280.   {
  1281.     CanShootFlyer()
  1282.     CanShootGround()
  1283.   }
  1284.   IsHuman()
  1285.   CanHeal()
  1286.   CanMiddle()
  1287.   CanTop()
  1288.   SetVulnerability(TankPlating 100)
  1289. }
  1290.  
  1291. ;; Bottom part of a Mechanic
  1292.  
  1293. DefinePartType(Mechanic)
  1294. {
  1295.   SetImage(mecmrow.spr 5)                     ;; Image name, number of frames
  1296.   SetIsometricImage(meciso.spr 54 40)       ;; Image name, x size, y size
  1297.   SetDescription(Mechanic)                    ;; Editor description
  1298.   SetPrerequisite(6 39 7 0 0 0)              ;; Prerequisite building
  1299.   SetSide(0)
  1300.   SetCPULoad(1)                               ;; Load on CPU
  1301.   SetPhysics(1 3 1 900000)                    ;; Weight, speed, rotation rate, max energy
  1302.   SetStrength(200 200 200)                    ;; Shield, armour internal hitpoints
  1303.   SetCost(500 10)                             ;; Credits, time in seconds
  1304.   SetSelectSounds(GFSmech1.wav GFSmech2.wav none none)
  1305.   SetResponseSounds(GFRmech1.wav GFRmech2.wav GFRmech3.wav none)
  1306.   UseEffects(Foot)                            ;;
  1307.   IsHuman()
  1308.   CanBottom()
  1309.   SetVulnerability(TankPlating 100)
  1310. }
  1311.  
  1312. ;; Fixing part of a Mechanic
  1313.  
  1314. DefinePartType(MechanicFix)
  1315. {
  1316.   SetImage(mecgrow.spr 2)                     ;; Image name, number of frames
  1317.   SetIsometricImage(blankiso.spr 54 40)     ;; Image name, x size, y size
  1318.   SetDescription(MechanicFix)                 ;; Editor description
  1319.   SetPrerequisite(6 39 7 0 0 0)              ;; Prerequisite building
  1320.   SetSide(0)
  1321.   SetCPULoad(1)                               ;; Load on CPU
  1322.   SetPhysics(1 0 1 900000)                    ;; Weight, speed, rotation rate, max energy
  1323.   SetStrength(200 200 200)                    ;; Shield, armour internal hitpoints
  1324.   SetCost(500 7)                              ;; Credits, time in seconds
  1325.   SetWeapon(2 1000 50 2000 -200 -200 -200 fix)  ;; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  1326.   {
  1327.     CanShootFlyer()
  1328.     CanShootGround()
  1329.   }
  1330.   IsHuman()
  1331.   CanRepair()
  1332.   CanMiddle()
  1333.   CanTop()
  1334.   SetVulnerability(TankPlating 100)
  1335. }
  1336.  
  1337. ;; Bottom part of a Construction Crew
  1338.  
  1339. DefinePartType(ConstructionCrew)
  1340. {
  1341.   SetImage(conmrow.spr 5)                     ;; Image name, number of frames
  1342.   SetIsometricImage(coniso.spr 54 40)       ;; Image name, x size, y size
  1343.   SetDescription(Construction_Crew)           ;; Editor description
  1344.   SetPrerequisite(1 30 1 0 0 0)              ;; Prerequisite building
  1345.   SetSide(-1)
  1346.   SetCPULoad(1)                               ;; Load on CPU
  1347.   SetPhysics(1 3 1 900000)                    ;; Weight, speed, rotation rate, max energy
  1348.   SetStrength(200 200 200)                    ;; Shield, armour internal hitpoints
  1349.   SetCost(200 1)                             ;; Credits, time in seconds
  1350.   SetSelectSounds(GBScnstr.wav none none none)
  1351.   SetResponseSounds(GBRcnst1.wav GBRcnst2.wav GBRcnst3.wav none)
  1352.   UseEffects(Foot)                            ;;
  1353.   IsHuman()
  1354.   CanBottom()
  1355.   CanBuild()
  1356.   SetVulnerability(TankPlating 100)
  1357. }
  1358.  
  1359. ;; Fixing part of a Construction crew
  1360.  
  1361. DefinePartType(ConstructionCrewAct)
  1362. {
  1363.   SetImage(congrow.spr 1)                     ;; Image name, number of frames
  1364.   SetIsometricImage(blankiso.spr 54 40)     ;; Image name, x size, y size
  1365.   SetDescription(Construction_Crew_Top)       ;; Editor description
  1366.   SetPrerequisite(1 30 1 0 0 0)              ;; Prerequisite building
  1367.   SetSide(-1)
  1368.   SetCPULoad(1)                               ;; Load on CPU
  1369.   SetPhysics(1 0 1 900000)                    ;; Weight, speed, rotation rate, max energy
  1370.   SetStrength(200 200 200)                    ;; Shield, armour internal hitpoints
  1371.   SetCost(200 1)                              ;; Credits, time in seconds
  1372.   IsHuman()
  1373.   CanMiddle()
  1374.   CanTop()
  1375.   SetVulnerability(TankPlating 100)
  1376. }
  1377.  
  1378. ;; Bottom part of a Spy
  1379.  
  1380. DefinePartType(Spy)
  1381. {
  1382.   SetImage(spymrow.spr 5)                  ;; Image name, number of frames
  1383.   SetIsometricImage(spyiso.spr 54 40)    ;; Image name, x size, y size
  1384.   SetDescription(Spy)                      ;; Editor description
  1385.   SetPrerequisite(6 32 11 0 0 0)           ;; Prerequisite building
  1386.   SetSide(-1)
  1387.   SetCPULoad(1)                            ;; Load on CPU
  1388.   SetPhysics(1 3 1 900000)                 ;; Weight, speed, rotation rate, max energy
  1389.   SetStrength(200 200 200)                 ;; Shield, armour internal hitpoints
  1390.   SetCost(500 10)                          ;; Credits, time in seconds
  1391.   SetSelectSounds(gfsspy1.wav gfsspy2.wav none none)
  1392.   SetResponseSounds(gfrspy1.wav gfrspy2.wav none none)
  1393.   UseEffects(Foot)                         ;;
  1394.   IsHuman()
  1395.   CanBottom()
  1396.   CanSpy()
  1397.   CanStealth()
  1398.   CanMorph()
  1399.   SetVulnerability(TankPlating 100)
  1400. }
  1401.  
  1402. ;; Acting part of a Spy
  1403.  
  1404. DefinePartType(SpyAct)
  1405. {
  1406.   SetImage(spygrow.spr 2)                  ;; Image name, number of frames
  1407.   SetIsometricImage(spyiso.spr 54 40)    ;; Image name, x size, y size
  1408.   SetDescription(Spy_Act)                  ;; Editor description
  1409.   SetPrerequisite(6 31 11 0 0 0)           ;; Prerequisite building
  1410.   SetSide(-1)
  1411.   SetCPULoad(1)                            ;; Load on CPU
  1412.   SetPhysics(1 3 1 900000)                 ;; Weight, speed, rotation rate, max energy
  1413.   SetStrength(200 200 200)                 ;; Shield, armour internal hitpoints
  1414.   SetCost(500 10)                          ;; Credits, time in seconds
  1415.   UseEffects(Foot)                         ;;
  1416.   IsHuman()
  1417.   CanBottom()
  1418.   CanStealth()
  1419.   CanMorph()
  1420.   SetVulnerability(TankPlating 100)
  1421. }
  1422.  
  1423. ;; Bottom part of a Saboteur
  1424.  
  1425. DefinePartType(Saboteur)
  1426. {
  1427.   SetImage(sabmrow.spr 5)                  ;; Image name, number of frames
  1428.   SetIsometricImage(sabiso.spr 54 40)    ;; Image name, x size, y size
  1429.   SetDescription(Saboteur)                 ;; Editor description
  1430.   SetPrerequisite(6 31 11 0 0 0)             ;; Prerequisite building
  1431.   SetSide(-1)
  1432.   SetCPULoad(1)                            ;; Load on CPU
  1433.   SetPhysics(1 3 1 900000)                 ;; Weight, speed, rotation rate, max energy
  1434.   SetStrength(200 200 200)                 ;; Shield, armour internal hitpoints
  1435.   SetCost(500 10)                          ;; Credits, time in seconds
  1436.   SetSelectSounds(gfssabt1.wav gfssabt2.wav none none)
  1437.   SetResponseSounds(gfrsabt1.wav gfrsabt2.wav none none)
  1438.   UseEffects(Foot)                         ;;
  1439.   IsHuman()
  1440.   CanBottom()
  1441.   CanStealth()
  1442.   CanMorph()
  1443.   SetVulnerability(TankPlating 100)
  1444. }
  1445. ;; Acting part of a Saboteur
  1446.  
  1447. DefinePartType(SaboteurAct)
  1448. {
  1449.   SetImage(blankrow.spr 1)                 ;; Image name, number of frames
  1450.   SetIsometricImage(sabiso.spr 54 40)    ;; Image name, x size, y size
  1451.   SetDescription(Saboteur)                 ;; Editor description
  1452.   SetPrerequisite(6 31 11 0 0 0)             ;; Prerequisite building
  1453.   SetSide(-1)
  1454.   SetCPULoad(1)                            ;; Load on CPU
  1455.   SetPhysics(1 3 1 900000)                 ;; Weight, speed, rotation rate, max energy
  1456.   SetStrength(200 200 200)                 ;; Shield, armour internal hitpoints
  1457.   SetCost(500 10)                          ;; Credits, time in seconds
  1458.   UseEffects(Foot)                         ;;
  1459.   IsHuman()
  1460.   CanBottom()
  1461.   CanStealth()
  1462.   CanMorph()
  1463.   SetVulnerability(TankPlating 100)
  1464. }
  1465.  
  1466. ;; Bottom part of an Impersonator
  1467.  
  1468. DefinePartType(Impersonator)
  1469. {
  1470.   SetImage(impmrow.spr 5)                  ;; Image name, number of frames
  1471.   SetIsometricImage(impiso.spr 54 40)    ;; Image name, x size, y size
  1472.   SetDescription(Impersonator)             ;; Editor description
  1473.   SetPrerequisite(11 54 11 0 0 0)             ;; Prerequisite building
  1474.   SetSide(1)
  1475.   SetCPULoad(1)                            ;; Load on CPU
  1476.   SetPhysics(1 3 1 900000)                 ;; Weight, speed, rotation rate, max energy
  1477.   SetStrength(200 200 200)                 ;; Shield, armour internal hitpoints
  1478.   SetCost(500 10)                          ;; Credits, time in seconds
  1479.   SetSelectSounds(gissnch1.wav gissnch2.wav none none)
  1480.   SetResponseSounds(girsnch1.wav girsnch2.wav girsnch3.wav none)
  1481.   UseEffects(Foot)                         ;;
  1482.   IsHuman()
  1483.   CanBottom()
  1484.   CanStealth()
  1485.   CanMorph()
  1486.   SetVulnerability(TankPlating 100)
  1487. }
  1488.  
  1489. DefinePartType(ImpersonatorAct)
  1490. {
  1491.   SetImage(impgrow.spr 2)                  ;; Image name, number of frames
  1492.   SetIsometricImage(blankiso.spr 54 40)    ;; Image name, x size, y size
  1493.   SetDescription(Impersonator_Act)         ;; Editor description
  1494.   SetPrerequisite(11 54 11 0 0 0)             ;; Prerequisite building
  1495.   SetSide(1)
  1496.   SetCPULoad(1)                            ;; Load on CPU
  1497.   SetPhysics(1 3 1 900000)                 ;; Weight, speed, rotation rate, max energy
  1498.   SetStrength(200 200 200)                 ;; Shield, armour internal hitpoints
  1499.   SetCost(500 10)                          ;; Credits, time in seconds
  1500.   SetSelectSounds(gissnch1.wav gissnch2.wav none none)
  1501.   SetResponseSounds(girsnch1.wav girsnch2.wav girsnch3.wav none)
  1502.   UseEffects(Foot)                         ;;
  1503.   IsHuman()
  1504.   CanBottom()
  1505.   CanStealth()
  1506.   CanMorph()
  1507.   SetVulnerability(TankPlating 100)
  1508. }
  1509.  
  1510.  
  1511. ;; Bottom part of an Anti-Aircraft site
  1512.  
  1513. DefinePartType(AntiAirSite)
  1514. {
  1515.   SetImage(fgsgrow.spr 1)                  ;; Image name, number of frames
  1516.   SetIsometricImage(blankiso.spr 54 40)  ;; Image name, x size, y size
  1517.   SetDescription(Air_Defence_Missile_Site) ;; Editor description
  1518.   SetPrerequisite(0 15 18 1 0 0)              ;; Prerequisite building
  1519.   SetSide(-1)
  1520.   SetCPULoad(6)                            ;; Load on CPU
  1521.   SetPhysics(20 0 1 900000)                 ;; Weight, speed, rotation rate, max energy
  1522.   SetStrength(2000 1000 800)               ;; Shield, armour internal hitpoints
  1523.   SetCost(500 7)                           ;; Credits, time in seconds
  1524.   SetWeapon(12 1000 50 2000 200 230 250 guidedmissile) ;; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  1525.   {
  1526.     SetProjectileImage(mrow.spr 20 20 3)
  1527.     SetHitImage(exporow.spr 50 50 11)
  1528.     SetEffectRadius(3)
  1529.     CanShootFlyer()
  1530.   }
  1531.   IsBuildingPart()
  1532.   CanBottom()
  1533.   CanMiddle()
  1534.   CanTop()
  1535.   SetVulnerability(TankPlating 100)
  1536. }
  1537.  
  1538. ;; Bottom part of a Guard Tower
  1539.  
  1540. DefinePartType(GuardTower)
  1541. {
  1542.   SetImage(fgtgrow.spr 1)                  ;; Image name, number of frames
  1543.   SetIsometricImage(blankiso.spr 54 40)  ;; Image name, x size, y size
  1544.   SetDescription(Guard_Tower)              ;; Editor description
  1545.   SetPrerequisite(0 18 0 0 0 0)            ;; Prerequisite building
  1546.   SetSide(0)
  1547.   SetCPULoad(6)                            ;; Load on CPU
  1548.   SetPhysics(20 0 1 900000)                 ;; Weight, speed, rotation rate, max energy
  1549.   SetStrength(2000 1000 800)               ;; Shield, armour internal hitpoints
  1550.   SetCost(500 7)                           ;; Credits, time in seconds
  1551.   SetWeapon(7 1000 50 2000 200 230 250 cannon) ;; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  1552.   {
  1553.     SetProjectileImage(crow.spr 20 20 3)
  1554.     SetHitImage(expmrow.spr 40 40 11)
  1555.     SetEffectRadius(3)
  1556.     CanShootGround()
  1557.   }
  1558.   IsBuildingPart()
  1559.   CanBottom()
  1560.   CanMiddle()
  1561.   CanTop()
  1562.   SetVulnerability(TankPlating 100)
  1563. }
  1564.  
  1565. ;; Bottom part of an Advanced Guard Tower
  1566.  
  1567. DefinePartType(AdvancedGuardTower)
  1568. {
  1569.   SetImage(imsgrow.spr 1)                  ;; Image name, number of frames
  1570.   SetIsometricImage(blankiso.spr 54 40)  ;; Image name, x size, y size
  1571.   SetDescription(Advanced_Guard_Tower)     ;; Editor description
  1572.   SetPrerequisite(0 19 18 0 0 0)             ;; Prerequisite building
  1573.   SetSide(0)
  1574.   SetCPULoad(6)                            ;; Load on CPU
  1575.   SetPhysics(20 0 1 900000)                 ;; Weight, speed, rotation rate, max energy
  1576.   SetStrength(2000 1000 800)               ;; Shield, armour internal hitpoints
  1577.   SetCost(500 7)                           ;; Credits, time in seconds
  1578.   SetWeapon(9 1000 50 2000 400 430 450 guidedmissile) ;; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  1579.   {
  1580.     SetProjectileImage(mrow.spr 20 20 3)
  1581.     SetHitImage(exporow.spr 50 50 11)
  1582.     SetEffectRadius(3)
  1583.     CanShootFlyer()
  1584.     CanShootGround()
  1585.   }
  1586.   IsBuildingPart()
  1587.   CanBottom()
  1588.   CanMiddle()
  1589.   CanTop()
  1590.   SetVulnerability(TankPlating 100)
  1591. }
  1592.  
  1593. ;; Bottom part of a imperium Anti Matter Saucer
  1594.  
  1595. DefinePartType(AntiMatterSaucer)
  1596. {
  1597.   SetImage(antmrow.spr 3)                  ;; Image name, number of frames
  1598.   SetIsometricImage(copiso.spr 54 40)    ;; Image name, x size, y size
  1599.   SetDescription(Anti_Matter_Saucer)       ;; Editor description
  1600.   SetPrerequisite(7 99 7 0 0 0)            ;; Prerequisite building
  1601.   SetSide(1)
  1602.   SetCPULoad(6)                            ;; Load on CPU
  1603.   SetPhysics(10 20 2 900000)                ;; Weight, speed, rotation rate, max energy
  1604.   SetStrength(2000 1800 700)               ;; Shield, armour internal hitpoints
  1605.   SetCost(500 10)                          ;; Credits, time in seconds
  1606.   SetTransport(5 13 4 0 0 0 0 0)                    ;; Number of people, units of energy, chemical and mineral
  1607.   SetSelectSounds(gfscopt1.wav gfscopt2.wav none none)
  1608.   SetResponseSounds(gfrcopt1.wav gfrcopt2.wav none none)
  1609.   UseEffects(Flying)                       ;;
  1610.   CanFly()
  1611.   CanBottom()
  1612.   SetVulnerability(TankPlating 100)
  1613. }
  1614.  
  1615. ;; Gun part of an imperium Anti Matter Saucer
  1616.  
  1617. DefinePartType(AntiMatterSaucerFire)
  1618. {
  1619.   SetImage(antgrow.spr 1)                  ;; Image name, number of frames
  1620.   SetIsometricImage(antiso.spr 54 40)    ;; Image name, x size, y size
  1621.   SetDescription(Anti_Matter_Saucer_Gun)   ;; Editor description
  1622.   SetPrerequisite(7 99 7 0 0 0)            ;; Prerequisite building
  1623.   SetSide(1)
  1624.   SetCPULoad(6)                            ;; Load on CPU
  1625.   SetPhysics(10 0 3 900000)                 ;; Weight, speed, rotation rate, max energy
  1626.   SetStrength(2000 1000 550)               ;; Shield, armour internal hitpoints
  1627.   SetCost(700 7)                           ;; Credits, time in seconds
  1628.   SetWeapon(6 1000 50 2000 200 230 250 guidedmissile) ;; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  1629.   {
  1630.     SetProjectileImage(mrow.spr 20 20 3)
  1631.     SetHitImage(nucbrow.spr 160 160 17)
  1632.     SetEffectRadius(3)
  1633.     CanShootFlyer()
  1634.     CanShootGround()
  1635.   }
  1636.   CanMiddle()
  1637.   CanTop()
  1638.   SetVulnerability(TankPlating 100)
  1639. }
  1640.  
  1641. ;; Bottom part of an underground tunneling transport
  1642.  
  1643. DefinePartType(Tunneler)
  1644. {
  1645.   SetImage(hvrmrow.spr 1)                  ;; Image name, number of frames
  1646.   SetIsometricImage(hvriso.spr 54 40)    ;; Image name, x size, y size
  1647.   SetDescription(Tunnel_Transport)         ;; Editor description
  1648.   SetPrerequisite(7 35 16 0 0 0)           ;; Prerequisite building
  1649.   SetSide(0)
  1650.   SetCPULoad(6)                            ;; Load on CPU
  1651.   SetPhysics(5 9 2 900000)                 ;; Weight, speed, rotation rate, max energy
  1652.   SetStrength(1000 1800 700)               ;; Shield, armour internal hitpoints
  1653.   SetCost(800 10)                          ;; Credits, time in seconds
  1654.   SetSelectSounds(none none none none)
  1655.   SetResponseSounds(none none none none)
  1656.   SetTransport(5 20 3 0 0 0 0 0)               ;; Number of units, max total size, max entrance size, units of energy, chemical and mineral
  1657.   UseEffects(Flying)                       ;;
  1658.   CanBottom()
  1659.   CanTunnel()
  1660.   IsBoomerang()                            ;; Returns to base when activated
  1661.   SetVulnerability(TankPlating 100)
  1662. }
  1663.  
  1664.  
  1665. ;; Bottom part of a ImperiumWalker
  1666.  
  1667. DefinePartType(ImperiumWalker)
  1668. {
  1669.   SetImage(walmrow.spr 7)                  ;; Image name, number of frames
  1670.   SetIsometricImage(blankiso.spr 54 40)    ;; Image name, x size, y size
  1671.   SetDescription(Imperium_Walker)          ;; Editor description
  1672.   SetPrerequisite(7 46 7 0 0 0)            ;; Prerequisite building
  1673.   SetSide(1)
  1674.   SetCPULoad(6)                            ;; Load on CPU
  1675.   SetPhysics(2 10 2 900000)                ;; Weight, speed, rotation rate, max energy
  1676.   SetStrength(2000 1800 700)               ;; Shield, armour internal hitpoints
  1677.   SetCost(500 10)                          ;; Credits, time in seconds
  1678.   SetSelectSounds(gfsvhic1.wav gfsvhic2.wav gfsvhic3.wav gfsvhic4.wav)
  1679.   SetResponseSounds(gfrvhic1.wav gfrvhic2.wav gfrvhic3.wav gfrvhic4.wav)
  1680.   UseEffects(Foot)                         ;;
  1681.   CanBottom()
  1682.   SetVulnerability(TankPlating 100)
  1683. }
  1684.  
  1685. ;; Gun part of a ImperiumWalker
  1686.  
  1687. DefinePartType(ImperiumWalkerFire)
  1688. {
  1689.   SetImage(walgrow.spr 2)                  ;; Image name, number of frames
  1690.   SetIsometricImage(blankiso.spr 54 40)    ;; Image name, x size, y size
  1691.   SetDescription(Imperium_Walker_Gun)      ;; Editor description
  1692.   SetPrerequisite(7 46 7 0 0 0)            ;; Prerequisite building
  1693.   SetSide(1)
  1694.   SetCPULoad(6)                            ;; Load on CPU
  1695.   SetPhysics(2 0 3 900000)                 ;; Weight, speed, rotation rate, max energy
  1696.   SetStrength(500 500 80)                  ;; Shield, armour internal hitpoints
  1697.   SetCost(500 7)                           ;; Credits, time in seconds
  1698.   SetWeapon(6 1000 50 2000 30 30 50 cannon);; Range, ammo, firerate, energy used per shot, energy, armour and internal damage
  1699.   {
  1700.     SetHitImage(explrow.spr 40 40 11)
  1701.     CanShootFlyer()
  1702.     CanShootGround()
  1703.   }
  1704.   CanMiddle()
  1705.   CanTop()
  1706.   SetVulnerability(TankPlating 100)
  1707. }
  1708.  
  1709.  
  1710.  
  1711. ;
  1712. ;;;;
  1713. ;;;; Unit Type Definitions
  1714. ;;;;
  1715. ;
  1716. DefineUnitType(ImperiumWalker ImperiumWalker notcritical 180 ImperiumWalkerFire notcritical 0 none none 0 0 0 1)
  1717.  
  1718. DefineUnitType(SpiderBike SpiderBike notcritical 180 SpiderBikeFire notcritical 0 none none 0 0 0 1)
  1719.  
  1720. DefineUnitType(ImperialVTOL ImperialVTOL notcritical 180 ImperialVTOLFire notcritical 0 none none 0 0 0 1)
  1721.  
  1722. DefineUnitType(FreedomGuardAssaultCopter fgAssaultCopter notcritical 180 fgAssaultCopterFire notcritical 0 none none 0 0 0 1)
  1723.  
  1724. DefineUnitType(ImperialAssaultVehicle ImpAssaultVehicle notcritical 180 ImpAssaultVehicleFire notcritical 45 none none 0 9 0 0)
  1725.  
  1726. DefineUnitType(FreedomGuardIFV fgIFV notcritical 180 fgIFVFire notcritical 45 none none 0 7 0 0)
  1727.  
  1728. DefineUnitType(TripleRailHoverTank TripleRailTank notcritical 180 TripleRailGun notcritical 180 none none 0 6 0 0)
  1729.  
  1730. DefineUnitType(ScoutTank ScoutTank notcritical 180 ScoutTankFire notcritical 0 none none 0 6 0 1)
  1731.  
  1732. DefineUnitType(TachyonTank TachyonTank notcritical 180 TachyonTankFire notcritical 180 none none 0 3 0 0)
  1733.  
  1734. DefineUnitType(PlasmaTank PlasmaTank notcritical 180 PlasmaTankGun notcritical 180 none none 0 6 0 0)
  1735.  
  1736. DefineUnitType(TankHunter TankHunterTank notcritical 180 TankHunterFire notcritical 0 none none 0 0 0 1)
  1737.  
  1738. DefineUnitType(SPA SPA notcritical 180 SPAFire notcritical 0 none none 0 0 0 1)
  1739.  
  1740. DefineUnitType(ChemicalMortar ChemicalMortar notcritical 180 ChemicalMortarFire notcritical 180 none none 0 6 0 0)
  1741.  
  1742. DefineUnitType(ImperialMAD impMAD notcritical 180 impMADFire notcritical 180 none none 0 10 0 0)
  1743.  
  1744. DefineUnitType(CruiseMissileLauncher CruiseMissileLauncher notcritical 180 CruiseMissileLauncherFire notcritical 0 none none 0 0 0 1)
  1745.  
  1746. DefineUnitType(GroundTransporter GroundTransporter notcritical 180 none none 180 none none 0 0 0 1)
  1747.  
  1748. DefineUnitType(HoverTransporter HoverTransporter notcritical 180 none none 180 none none 0 0 0 1)
  1749. ;DefineUnitType(HoverTransporter HoverTransporter notcritical 180 HoverTransporterAct notcritical 180 none none 0 0 0 1)
  1750.  
  1751. DefineUnitType(Fixer Fixer notcritical 180 FixerAct none 0 none none 0 0 0 1)
  1752.  
  1753. DefineUnitType(HostageTaker HostageTaker notcritical 180 none none 180 none none 0 0 0 0)
  1754.  
  1755. DefineUnitType(AntiMatterSaucer AntiMatterSaucer notcritical 180 AntiMatterSaucerFire notcritical 0 none none 0 0 0 1)
  1756.  
  1757. DefineUnitType(StrikeMarine StrikeMarine notcritical 180 StrikeMarineFire notcritical 15 none none 0 0 0 1)
  1758.  
  1759. DefineUnitType(FreedomFighter FreedomFighter notcritical 180 FreedomFighterFire notcritical 15 none none 0 0 0 1)
  1760.  
  1761. DefineUnitType(FireSupportMarine FireSupportMarine notcritical 180 FireSupportMarineFire notcritical 15 none none 0 0 0 1)
  1762.  
  1763. DefineUnitType(HWFreedomFighter HWFreedomFighter notcritical 180 HWFreedomFighterFire notcritical 15 none none 0 0 0 1)
  1764.  
  1765. DefineUnitType(Sniper Sniper notcritical 180 SniperFire notcritical 15 none none 0 0 0 1)
  1766.  
  1767. DefineUnitType(Scout Scout notcritical 180 ScoutFire notcritical 15 none none 0 0 0 1)
  1768.  
  1769. DefineUnitType(SuicideBomber SuicideBomber notcritical 180 SuicideBomberFire notcritical 15 none none 0 0 0 1)
  1770.  
  1771. DefineUnitType(SuicideNuker SuicideNuker notcritical 180 SuicideNukerFire notcritical 15 none none 0 0 0 1)
  1772.  
  1773. DefineUnitType(Medic Medic notcritical 180 MedicHeal notcritical 15 none none 0 0 0 1)
  1774.  
  1775. DefineUnitType(Mechanic Mechanic notcritical 180 MechanicFix notcritical 15 none none 0 0 0 1)
  1776.  
  1777. DefineUnitType(ConstructionCrew ConstructionCrew notcritical 180 ConstructionCrewAct notcritical 15 none none 0 7 0 1)
  1778.  
  1779. DefineUnitType(Spy Spy notcritical 180 SpyAct notcritical 0 none none 0 0 0 1)
  1780.  
  1781. DefineUnitType(Impersonator Impersonator notcritical 180 ImpersonatorAct notcritical 0 none none 0 0 0 0)
  1782.  
  1783. DefineUnitType(Saboteur Saboteur notcritical 180 none none 0 none none 0 0 0 0)
  1784.  
  1785. DefineUnitType(AntiAirSite AntiAirSite notcritical 180 none none 0 none none 0 7 0 0)
  1786.  
  1787. DefineUnitType(GuardTower GuardTower notcritical 180 none none 0 none none 0 7 0 0)
  1788.  
  1789. DefineUnitType(AdvancedGuardTower AdvancedGuardTower notcritical 180 none none 0 none none 0 7 0 0)
  1790.  
  1791. DefineUnitType(Tunneler Tunneler notcritical 180 none none 180 none none 0 6 0 0)
  1792.