Found where I was going wrong; in the staticdefs file, the bird of prey is given 'BOP' as a name. I entered that into the longname field and it has successfully overidden the other button.
It showed up as BOP in the friendly and enemy lists though, so I added the tgl name line to call them 'Bird of Prey' again. They're not given numbers but the stock didn't get them either so I'm not gonna try to bodge that.
This is the plugin script I ended up with;
-------------------
##### Created by:
##### Bridge Commander Universal Tool
import App
import Foundation
abbrev = "BirdOfPrey"
iconName = "ErmeyBOP"
longName = "BOP"
shipFile = "BirdOfPrey"
species = App.SPECIES_BIRD_OF_PREY
menuGroup = "Klingon Ships"
playerMenuGroup = "Klingon Ships"
Foundation.ShipDef.BirdOfPrey = Foundation.KlingonShipDef(abbrev, species, { 'name': longName, 'iconName': iconName, 'shipFile': shipFile })
Foundation.ShipDef.BirdOfPrey.hasTGLName = 1
#Foundation.ShipDef.BirdOfPrey.hasTGLDesc = 1
#Foundation.ShipDef.BirdOfPrey.name = "Bird of Prey"
Foundation.ShipDef.BirdOfPrey.desc = "No information available."
if menuGroup: Foundation.ShipDef.BirdOfPrey.RegisterQBShipMenu(menuGroup)
if playerMenuGroup: Foundation.ShipDef.BirdOfPrey.RegisterQBPlayerShipMenu(playerMenuGroup)
if Foundation.shipList._keyList.has_key(longName):
Foundation.ShipDef.__dict__[longName].friendlyDetails[2] = Foundation.shipList[longName].friendlyDetails[2]
Foundation.ShipDef.__dict__[longName].enemyDetails[2] = Foundation.shipList[longName].enemyDetails[2]
---------------------
I found a way of doing it by editing the staticdefs file as well, but I didn't want to risk messing up any foundation scripts. Not really sure what the tgls are so I didn't want to risk breaking those either!
Thanks Guys!