# --QuantumGR-- 9/11/2024 5:56:41 PM $RebuildAttemptTime:450 $BuildPauseCreeperAmt:0.01 $GUID_BuildUnit:"greenarrefinery" $PACMode:1 $BuildLimit:50 $UnitName:"Quantum Greenar Refinery" @Runner # :Init once CreateList ->AssignedUnitList false ->StartBuild SetTimer0(<-RebuildAttemptTime) SetTimer1(30) GetUnitStunCount(self) lte0 GetUnitEnabled(self) and GetUnitArmed(self) and GetUnitConnectedToRiftLab(self) and ->unitIsActive SetUnitPopupEnabled(self true) SetUnitPopupText0(self <-UnitName) SetUnitPopupText1(self "Builds " @GetReadableUnitTypeName " until " <-BuildLimit concat4 "!" concat) if(<-PACMode) SetUnitSelected(self false) SetUnitSelectable(self false) endif endonce # :Runner GetUnitStunCount(self) lte0 GetUnitEnabled(self) and GetUnitArmed(self) and GetUnitConnectedToRiftLab(self) and ->unitIsActive GetCreeperInRange(GetUnitCell(self) 12 true true false) ->creeperAmt if(<-unitIsActive <-creeperAmt <-BuildPauseCreeperAmt lt and) if(GetListCount(<-AssignedUnitList) <-BuildLimit lt <-StartBuild false eq and) true ->StartBuild SetTimer0(<-RebuildAttemptTime) Print("Starting Unit Creation!") endif if(GetTimer0 lte0 <-StartBuild true eq and) @BuildQuantumUnit false ->StartBuild Print("Creating Unit, Blocking Creation for CD!") endif endif if(GetTimer1 lte0) @CleanUpList SetTimer1(30) Print("Clearing out dead units!") endif # :BuildQuantumUnit GetUnitPosition(self) ->unitPos <-unitPos.y 3 add ->unitPos.y CreateTable ->initParams CreateUnit(<-GUID_BuildUnit <-unitPos <-initParams) ->unitUID #SetUnitSpecifiedTarget(<-unitUID @GetTargetLoc) SetUnitOrientation(<-unitUID GetUnitOrientation(self)) SetUnitCanMove(<-unitUID false) if(<-PACMode) SetUnitSelected(<-unitUID false) SetUnitSelectable(<-unitUID false) endif #<-unitUID ->AssignedUnit AppendToList( <-AssignedUnitList <-unitUID) # :CleanUpList if(GetListCount(<-AssignedUnitList) gt0) GetListCount(<-AssignedUnitList) 1 sub ->indexCounter while <-indexCounter gte0#<-indexCounter GetListCount(<-AssignedUnitList) lt and repeat if(<-indexCounter -1 lte) break endif <-AssignedUnitList[<-indexCounter] ->currentUnit Print("Unit Index " <-indexCounter " UID " <-currentUnit concat4) if(GetUnitDestroyed(<-currentUnit)) RemoveListElement(<-AssignedUnitList, <-indexCounter) <-indexCounter ->indexCounter Print("Unit " <-currentUnit " is dead! Removing from list!" concat3) else <-indexCounter 1 sub ->indexCounter Print("Nothing to remove, moving on!") endif <-indexCounter endwhile endif # :GetReadableUnitTypeName "Unknown Name" ->outputName switch case(<-GUID_BuildUnit "greenarrefinery" eq) "Greenar Refinery" ->outputName endcase case(<-GUID_BuildUnit "acbomberpad" eq) "AC Bomber Pad" ->outputName endcase case(<-GUID_BuildUnit "bomberpad" eq) "Bomber Pad" ->outputName endcase case(<-GUID_BuildUnit "cannon" eq) "Cannon" ->outputName endcase case(<-GUID_BuildUnit "collectorpanel3" eq) "Collector Panel 3" ->outputName endcase case(<-GUID_BuildUnit "collectorpanel5" eq) "Collector Panel 5" ->outputName endcase case(<-GUID_BuildUnit "factory" eq) "Factory" ->outputName endcase case(<-GUID_BuildUnit "microrift" eq) "Micro Rift" ->outputName endcase case(<-GUID_BuildUnit "missilelauncher" eq) "Missile Launcher" ->outputName endcase case(<-GUID_BuildUnit "mortar" eq) "Mortar" ->outputName endcase case(<-GUID_BuildUnit "nullifier" eq) "Nullifier" ->outputName endcase case(<-GUID_BuildUnit "platform" eq) "Platform" ->outputName endcase case(<-GUID_BuildUnit "pod" eq) "Pod" ->outputName endcase case(<-GUID_BuildUnit "porter" eq) "Porter" ->outputName endcase case(<-GUID_BuildUnit "pylon" eq) "Pylon" ->outputName endcase case(<-GUID_BuildUnit "runway" eq) "Runway" ->outputName endcase case(<-GUID_BuildUnit "shield" eq) "Shield" ->outputName endcase case(<-GUID_BuildUnit "sniper" eq) "Sniper" ->outputName endcase case(<-GUID_BuildUnit "sprayer" eq) "Sprayer" ->outputName endcase case(<-GUID_BuildUnit "terp" eq) "Terp" ->outputName endcase case(<-GUID_BuildUnit "tower" eq) "Tower" ->outputName endcase case(<-GUID_BuildUnit "ultrac" eq) "Ultrac" ->outputName endcase endswitch <-outputName # :Once @Init # :Awake @Init