An Armor Dealer with traffic backed up so bad it makes LA look like it doesn't have any issues.
What I did was give the &baCorporateStation a traffic code that changes out the guards and during that time frees up the ports.
Good Side Effect : it can give Corporate Stations or station using the &ba guards they didn't have before.
Negative Side Effects : It doesn't always play as well with others as I would like.
However, IF you would like to give it a go and see if you think it's worth having in Your Extensions :
Code: Select all
<!-- BASE CLASSES --> <!-- Corporate Hierarchy Station Base Class USAGE: Corporate stations should inherit from this class. Derrived classes should manually call OnCreate and OnDestroy in case they need to override those events. --> <StationType unid="&baCorporateStation;" name= "(Corporate station base class)" virtual= "true" > <Events> <OnCreate> (block Nil ; Behavior event ; This only applies to corporate stations (objMatches gSource Nil "sTAV +corporate; +corporateArms; +corporateCustoms; +populated; -korolovShipping;") (or (objMatches gSource Nil "sTAV +corporate; +corporateArms; +corporateCustoms; +majorStation; +populated; -korolovShipping;") ) (sysAddObjRecurringTimerEvent 90 gSource "OnBehavior") ) </OnCreate> <OnBehavior> (block (escorts escortCount portsLeft) ; Initialize some variables (setq escorts (sysFindObject gSource "sHZ O:guard;")) (setq dockedFreighters (sysFindObject gSource "sHZ O:docked; +commonwealth;")) (setq freightersInFlight (objGetData gSource "freightersInFlight")) (setq freighterCount (add (count dockedFreighters) freightersInFlight)) (setq escortCount (add (count escorts) freightersInFlight)) ; Exclude freighters being escorted by the player (setq dockedFreighters (filter dockedFreighters theFreighter (not (objGetData theFreighter "korolovPlayerEscort")) )) ; See if we have any docking ports free (setq portsLeft (gr (objGetOpenDockingPortCount gSource) 0)) ; If we don't have enough escorts, then we better get some more (if (and portsLeft (or (and (ls escortCount 1) (eq (random 1 2) 1)) (and (objGetData gSource "needEscorts") (eq (random 1 2) 1)) ) ) (block (newShip) (setq newShip (sysCreateShip (random '(&scAsterionHeavyGunship; &scBritannia; &scManticore; &scCenturion; &scRoninC; &scWolfen; &scRoninB; &scRoninA; &scArmstrongTransport; &scManticore;)) (objGetNearestStargate gSource) &svCorporate; ) ) (shpOrder newShip "guard" gSource) (objSetData gSource "needEscorts" Nil) ) ) ; Send out a freighter to a random station (switch ; If we have no ports left, then send some escorts away (and (not portsLeft) escorts) (block (theCount) (setq theCount (max 2 (subtract (count escorts) 2))) (for i 1 theCount (block (theEscort) (setq theEscort (item escorts (subtract i 1))) (shpCancelOrders theEscort) (shpOrder theEscort 'gate) ) ) ) ; Must have freighters (not dockedFreighters) Nil ; If we don't have enough freighters, then don't worry (and (ls (count dockedFreighters) 1) portsLeft) Nil ; Random interval (and (gr (random 1 6) 3) portsLeft) Nil ) ) </OnBehavior> <OnDestroy> (block Nil (intCorporateOnDestroy) ; we scare any sister ships (block (targets) (setq targets (sysFindObject gSource "sAN:25; B:commonwealth;")) (enum targets target (block Nil (shpCancelOrders target) (shpOrder target 'gate) ) ) ) (sysCancelTimerEvent gSource "OnBehavior") (sysCancelTimerEvent gSource "OnTrafficControl") ) </OnDestroy> </Events> <Language> <Text id="customs.chargedForDecon"> (cat "Corporate security stops your ship for decontamination. " "You are automatically charged " (@ gData 'cost) " for decontaminating your ship." ) </Text> <Text id="customs.cantAffordDecon"> (cat "Corporate security stops your ship for decontamination. " "Unfortunately, you do not have " (@ gData 'cost) " to pay for decontamination." ) </Text> </Language> </StationType>