(fit, sFit)
| 37 | |
| 38 | @staticmethod |
| 39 | def getT2MwdSpeed(fit, sFit): |
| 40 | fitID = fit.ID |
| 41 | propID = None |
| 42 | shipHasMedSlots = fit.ship.getModifiedItemAttr("medSlots") > 0 |
| 43 | shipPower = fit.ship.getModifiedItemAttr("powerOutput") |
| 44 | # Monitors have a 99% reduction to prop mod power requirements |
| 45 | if fit.ship.typeName == "Monitor": |
| 46 | shipPower *= 100 |
| 47 | rigSize = fit.ship.getModifiedItemAttr("rigSize") |
| 48 | if not shipHasMedSlots: |
| 49 | return None |
| 50 | |
| 51 | filterVal = Item.groupID == getGroup("Propulsion Module").ID |
| 52 | propMods = gamedata_session.query(Item).options().filter(filterVal).all() |
| 53 | mapPropData = lambda propName: \ |
| 54 | next(map(lambda propMod: {"id": propMod.typeID, "powerReq": propMod.attributes["power"].value}, |
| 55 | (filter(lambda mod: mod.typeName == propName, propMods)))) |
| 56 | mwd5mn = mapPropData("5MN Microwarpdrive II") |
| 57 | mwd50mn = mapPropData("50MN Microwarpdrive II") |
| 58 | mwd500mn = mapPropData("500MN Microwarpdrive II") |
| 59 | mwd50000mn = mapPropData("50000MN Microwarpdrive II") |
| 60 | if rigSize == PortEftRigSize.SMALL or rigSize is None: |
| 61 | propID = mwd5mn["id"] if shipPower > mwd5mn["powerReq"] else None |
| 62 | elif rigSize == PortEftRigSize.MEDIUM: |
| 63 | propID = mwd50mn["id"] if shipPower > mwd50mn["powerReq"] else mwd5mn["id"] |
| 64 | elif rigSize == PortEftRigSize.LARGE: |
| 65 | propID = mwd500mn["id"] if shipPower > mwd500mn["powerReq"] else mwd50mn["id"] |
| 66 | elif rigSize == PortEftRigSize.CAPITAL: |
| 67 | propID = mwd50000mn["id"] if shipPower > mwd50000mn["powerReq"] else mwd500mn["id"] |
| 68 | |
| 69 | if propID is None: |
| 70 | return None |
| 71 | cmd = CalcAddLocalModuleCommand(fitID, ModuleInfo(itemID=propID)) |
| 72 | cmd.Do() |
| 73 | if cmd.needsGuiRecalc: |
| 74 | sFit.recalc(fit) |
| 75 | fit = eos.db.getFit(fitID) |
| 76 | mwdPropSpeed = fit.maxSpeed |
| 77 | mwdPosition = list(filter(lambda mod: mod.item and mod.item.ID == propID, fit.modules))[0].position |
| 78 | cmd = CalcRemoveLocalModulesCommand(fitID, [mwdPosition]) |
| 79 | cmd.Do() |
| 80 | if cmd.needsGuiRecalc: |
| 81 | sFit.recalc(fit) |
| 82 | fit = eos.db.getFit(fitID) |
| 83 | return mwdPropSpeed |
| 84 | |
| 85 | @staticmethod |
| 86 | def getPropData(fit, sFit): |
no test coverage detected