| 124 | }; |
| 125 | |
| 126 | bool UnitWrap::TaskSpellcaster(bool isAggressive) // @TODO |
| 127 | { |
| 128 | int range; |
| 129 | |
| 130 | if ( !isAggressive && MainController.GetCastingCooldown() != 0 ) |
| 131 | return false; |
| 132 | |
| 133 | switch ( pUnit->getType() ) |
| 134 | { |
| 135 | // ### TERRAN |
| 136 | case UnitTypes::Enum::Terran_Ghost: |
| 137 | if ( CanUseTech(TechTypes::Lockdown) ) |
| 138 | { |
| 139 | if ( isAggressive ) |
| 140 | range = 288; |
| 141 | else |
| 142 | range = MainController.IsCampaign() ? 2048 : 1024; |
| 143 | |
| 144 | if ( UseTechOnClosest(TechTypes::Lockdown, range, LockdownReqs) ) |
| 145 | return true; |
| 146 | } |
| 147 | // @TODO: Nuke script |
| 148 | break; |
| 149 | case UnitTypes::Enum::Terran_Science_Vessel: |
| 150 | range = isAggressive ? 288 : 2048; |
| 151 | if ( CanUseTech(TechTypes::EMP_Shockwave) ) |
| 152 | { |
| 153 | // Get best target unit |
| 154 | Unit pTarget = pUnit->getClosestUnit(EMPShieldReqs, range); |
| 155 | if ( !pTarget && !isAggressive ) |
| 156 | pTarget = pUnit->getClosestUnit(EMPEnergyReqs, range); |
| 157 | |
| 158 | if ( UseTech(TechTypes::EMP_Shockwave, pTarget) ) |
| 159 | return true; |
| 160 | } |
| 161 | if ( CanUseTech(TechTypes::Defensive_Matrix) ) |
| 162 | { |
| 163 | if ( UseTechOnClosest(TechTypes::Defensive_Matrix, range, DMatrixReqs) ) |
| 164 | return true; |
| 165 | } |
| 166 | if ( CanUseTech(TechTypes::Irradiate) ) |
| 167 | { |
| 168 | if ( isAggressive ) |
| 169 | { |
| 170 | if ( UseTechOnClosest(TechTypes::Irradiate, range, IrradiateReqs) ) |
| 171 | return true; |
| 172 | } |
| 173 | else |
| 174 | { |
| 175 | if ( UseTechOnClosest(TechTypes::Irradiate, range, RestrictedIrradiateReqs) ) |
| 176 | return true; |
| 177 | } |
| 178 | } |
| 179 | break; |
| 180 | case UnitTypes::Enum::Terran_Battlecruiser: |
| 181 | if ( CanUseTech(TechTypes::Yamato_Gun) ) |
| 182 | { |
| 183 | if ( UseTechOnClosest(TechTypes::Yamato_Gun, isAggressive ? 512 : 9999999, YamatoReqs) ) |
nothing calls this directly
no test coverage detected