This script demonstrates how my override works - run the intrepid bridge normally, then drop this into scripts/bridges (back-up first, because this script disables the extras and is only meant as an exemplar!) and see if you can spot the difference!
If you look at the actual code, the override works by changing the configurations so that the game sets up the characters in the positions they would be on the sovereign bridge:
Bridge.Characters.Felix.ConfigureForSovereign(pFelix)
Bridge.Characters.Kiska.ConfigureForSovereign(pKiska)
Bridge.Characters.Saffi.ConfigureForSovereign(pSaffi)
Bridge.Characters.Miguel.ConfigureForSovereign(pMiguel)
Bridge.Characters.Brex.ConfigureForSovereign(pBrex)
but then calls these 5 definitions:
Kiska()
Felix()
Brex()
Saffi()
Miguel()
These definitions are all the animations for the characters on the bridge, if we look at Kiska, for example:
def Kiska():
pBridgeSet = App.g_kSetManager.GetSet("bridge")
pKiska = App.CharacterClass_Cast(pBridgeSet.GetObject("Helm"))
pKiska.ClearAnimations() ##This here basically tells Bridge Commander that despite the fact we told it before that Kiska was going to be on the Sovereign Bridge, we lied and to drop all the animations and locations, in favour of the animations below...I can't really take credit for innovation here, because it's something the game always does when you switch bridges, only in this case I've co-opted it so it "tricks" Bridge Commander into setting up the character for the Intrepid Bridge, even though it thinks we're on the Sovereign Bridge!
pKiska.AddAnimation("IntHelmTurnCaptain", "Bridge.Characters.IntMediumAnimations.IntTurnAtHTowardsCaptain")
pKiska.AddAnimation("IntHelmBackCaptain", "Bridge.Characters.IntMediumAnimations.IntTurnBackAtHFromCaptain")
pKiska.AddAnimation("IntHelmGlanceCaptain", "Bridge.Characters.CommonAnimations.GlanceRight")
pKiska.AddAnimation("IntHelmGlanceAwayCaptain", "Bridge.Characters.CommonAnimations.SeatedM")
pKiska.AddAnimation("EBHelmBreathe", "Bridge.Characters.CommonAnimations.SeatedM")
pKiska.AddRandomAnimation("Bridge.Characters.IntMediumAnimations.EBHConsoleInteraction", App.CharacterClass.SITTING_ONLY, 25, 1)
pKiska.AddAnimation("PushingButtons", "Bridge.Characters.IntMediumAnimations.EBHConsoleInteraction")
pKiska.AddAnimation("IntHelmReactLeft", "Bridge.Characters.CommonAnimations.ReactLeft")
pKiska.AddAnimation("IntHelmReactRight", "Bridge.Characters.CommonAnimations.ReactRight")
pKiska.SetLocation("IntHelm")
pKiska.SetLookAtAdj(-30, 0, 50)
pKiska.AddPositionZoom("IntHelm", 0.5, "Helm")
pKiska.AddRandomAnimation("Bridge.Characters.IntMediumAnimations.HLookAroundConsoleDown", App.CharacterClass.SITTING_ONLY, 1, 1)
pKiska.AddRandomAnimation("Bridge.Characters.CommonAnimations.TiltHeadLeft")
pKiska.AddRandomAnimation("Bridge.Characters.CommonAnimations.TiltHeadRight")
pKiska.AddRandomAnimation("Bridge.Characters.CommonAnimations.LookUp")
pKiska.AddRandomAnimation("Bridge.Characters.CommonAnimations.LookDown")
Kiska's is the shortest (not counting the Extras obviously).
There's no real reason for Bridge Modders to use this, and there are benefits to having seperate character files for seperate bridges - for example, in theory we could change the uniforms of the crew depending on the bridge, but in practice this hasn't been done much.
However it always seemed like the characters folder was getting cluttered by a ridiculous number of scripts which create the same character over and over again!