@@ -442,9 +442,9 @@ else if(!unit.getType().isBuilding()) {
442442 unit .self ().isGathering .set (true , frame );
443443
444444 // @TODO: Fully time and test this order
445- if (target .getType ().isMineralField ())
445+ if (target != null && target . exists () && target .getType ().isMineralField ())
446446 unit .self ().order .set (Order .MoveToMinerals , frame );
447- else if (target .getType ().isRefinery ())
447+ else if (target != null && target . exists () && target .getType ().isRefinery ())
448448 unit .self ().order .set (Order .MoveToGas , frame );
449449
450450 break ;
@@ -501,7 +501,7 @@ else if (unit.getType().spaceProvided() != 0) {
501501 unit .self ().order .set (Order .PickupTransport , frame );
502502 unit .self ().target .set (getUnitID (target ), frame );
503503 }
504- else if (target .getType ().spaceProvided () != 0 ) {
504+ else if (target != null && target . exists () && target .getType ().spaceProvided () != 0 ) {
505505 unit .self ().order .set (Order .EnterTransport , frame );
506506 unit .self ().target .set (getUnitID (target ), frame );
507507 }
@@ -647,31 +647,29 @@ else if (target.getType().spaceProvided() != 0) {
647647
648648 // RLF
649649 case Right_Click_Unit :
650- unit .self ().target .set (getUnitID (target ), frame );
651- unit .self ().isIdle .set (false , frame );
652- unit .self ().isMoving .set (true , frame );
653-
654- if (unit .getType ().isWorker () && target .getType ().isMineralField ()) {
655- unit .self ().isGathering .set (true , frame );
656- unit .self ().order .set (Order .MoveToMinerals , frame );
657- }
658- else if (unit .getType ().isWorker () && target .getType ().isRefinery ()) {
659- unit .self ().isGathering .set (true , frame );
660- unit .self ().order .set (Order .MoveToGas , frame );
661- }
662- else if (unit .getType ().isWorker () && target .getType ().getRace () == Race .Terran &&
663- target .getType ().whatBuilds ().getFirst () == unit .getType () && !target .isCompleted ()) {
664- unit .self ().order .set (Order .ConstructingBuilding , frame );
665- unit .self ().buildUnit .set (getUnitID (target ), frame );
666- target .self ().buildUnit .set (getUnitID (unit ), frame );
667- unit .self ().isConstructing .set (true , frame );
668- target .self ().isConstructing .set (true , frame );
669- }
670- else if (unit .getType ().canAttack () && target .getPlayer () != unit .getPlayer () && !target .getType ().isNeutral ()) {
671- unit .self ().order .set (Order .AttackUnit , frame );
672- }
673- else if (unit .getType ().canMove ()) {
674- unit .self ().order .set (Order .Follow , frame );
650+ if (target != null && target .exists ()) {
651+ unit .self ().target .set (getUnitID (target ), frame );
652+ unit .self ().isIdle .set (false , frame );
653+ unit .self ().isMoving .set (true , frame );
654+
655+ if (unit .getType ().isWorker () && target .getType ().isMineralField ()) {
656+ unit .self ().isGathering .set (true , frame );
657+ unit .self ().order .set (Order .MoveToMinerals , frame );
658+ } else if (unit .getType ().isWorker () && target .getType ().isRefinery ()) {
659+ unit .self ().isGathering .set (true , frame );
660+ unit .self ().order .set (Order .MoveToGas , frame );
661+ } else if (unit .getType ().isWorker () && target .getType ().getRace () == Race .Terran &&
662+ target .getType ().whatBuilds ().getFirst () == unit .getType () && !target .isCompleted ()) {
663+ unit .self ().order .set (Order .ConstructingBuilding , frame );
664+ unit .self ().buildUnit .set (getUnitID (target ), frame );
665+ target .self ().buildUnit .set (getUnitID (unit ), frame );
666+ unit .self ().isConstructing .set (true , frame );
667+ target .self ().isConstructing .set (true , frame );
668+ } else if (unit .getType ().canAttack () && target .getPlayer () != unit .getPlayer () && !target .getType ().isNeutral ()) {
669+ unit .self ().order .set (Order .AttackUnit , frame );
670+ } else if (unit .getType ().canMove ()) {
671+ unit .self ().order .set (Order .Follow , frame );
672+ }
675673 }
676674
677675 break ;
@@ -828,23 +826,25 @@ else if(unit.getType().canMove()) {
828826
829827 // RLF
830828 case Use_Tech_Unit : {
831- TechType techType = TechType .idToEnum [command .extra ];
829+ if (target != null && target .exists ()) {
830+ TechType techType = TechType .idToEnum [command .extra ];
832831
833- if (!techType .targetsUnit ()) {
834- return ;
835- }
832+ if (!techType .targetsUnit ()) {
833+ return ;
834+ }
836835
837- unit .self ().order .set (techType .getOrder (), frame );
838- unit .self ().orderTarget .set (getUnitID (target ), frame );
836+ unit .self ().order .set (techType .getOrder (), frame );
837+ unit .self ().orderTarget .set (getUnitID (target ), frame );
839838
840- Position targetPosition = target .getPosition ();
839+ Position targetPosition = target .getPosition ();
841840
842- unit .self ().targetPositionX .set (targetPosition .x , frame );
843- unit .self ().targetPositionY .set (targetPosition .y , frame );
844- unit .self ().orderTargetPositionX .set (targetPosition .x , frame );
845- unit .self ().orderTargetPositionY .set (targetPosition .y , frame );
841+ unit .self ().targetPositionX .set (targetPosition .x , frame );
842+ unit .self ().targetPositionY .set (targetPosition .y , frame );
843+ unit .self ().orderTargetPositionX .set (targetPosition .x , frame );
844+ unit .self ().orderTargetPositionY .set (targetPosition .y , frame );
846845
847- break ;
846+ break ;
847+ }
848848 }
849849 }
850850 }
0 commit comments