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>