MCPcopy Create free account
hub / github.com/bwapi/bwapi / TaskSpellcaster

Method TaskSpellcaster

bwapi/BWScriptEmulator/Military.cpp:126–255  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

124};
125
126bool 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) )

Callers

nothing calls this directly

Calls 4

GetCastingCooldownMethod · 0.80
IsCampaignMethod · 0.80
getTypeMethod · 0.45
getClosestUnitMethod · 0.45

Tested by

no test coverage detected